分享

Linux文件系统(二)—— Linux上三个主要文件系统(EXT2、EXT3和ReiserFS)介绍和比较

 szhlwang 2011-06-28
(引用本文内容请注明出处:wochi.cublog.cn,谢谢)
 
Linux 上三个主要文件系统( EXT2 EXT3 ReiserFS )介绍
 
【摘 要】 如何把数据存放在存储设备上?又如何访问这些数据?这是文件系统必须回答的两个问题。现代文件系统种类繁多,良莠不齐。这些文件系统各有什么特征?有什么优缺点?适用的环境是什么?本文将详细介绍基于 Linux 系统的三个主要文件系统: ext2 ext3 ReiserFS
Introducing The Three Main FileSystems (ext2, ext3 and ReiserFS) on Linux
ABSTRACT How to store data on storage devices? How to access these data which settle on storage devices? These two questions are just what the file system should answer. There are many sort of file systems on the fly, among which, some are better than others. What characteristics do they have respectively? And what advantages and disadvantages do they inherit? And which environment are they suitable for?The paper will discuss three popular file systems which are used widely on Linux operating system, they are ext2, ext3 and ReiserFS.
 
1            简介
文件系统是解决如何在存储设备上存储数据的一套方法,包括存储布局、文件命名、空间管理、安全控制等。 Linux 操作系统支持很多现代的流行文件系统,其中 ext2 ext3 ReiserFS 最普遍。 ext2 文件系统是伴随着 linux 一起发展起来的,在 ex2 的基础上增加日志就是 ext3 ,这两个文件系统可以很容易的转换而不必重新格式化存储介质,它们是 linux 特有的。 ReiserFS 可以说是后起之秀了,最初它不是用于 linux ,所以对 linux 来说它是一个泊来品。 ReiserFS 采用了一个非常先进的新颖算法,最新的 4 版本真正做到了文件系统操作的原子性(类似数据库事务操作的原子性),据官方报道, ReiserFS“ 原子性 算法优于现代数据库的 原子性 算法,做到了空间和时间复杂度的双优!一个文件系统能做到这个份上,我算是彻底服了 :-)
现代 Linux 系统继续采用了早期( 1992 年前)发展的虚拟文件系统( Virtual File System ,简写为 VFS )理念, VFS 是一个介于用户和实际文件系统之间,为用户提供了一个统一的编程接口,尽管处于其之下的各种文件系统类型千差万别,但对最终用户来说却是一样的。例如当用户张三输入命令 cd /data 后,他并没有意识到自己刚从 ext3 文件系统进入 ReiserFS 文件系统,他仍然使用命令 ls –l 列出当前目录下的所有文件,而且显示格式也是一样,但是幕后英雄 VFS 可忙坏了,它不得不启动一个算法找到 ReiserFS 文件系统提供的接口函数并调用它们,要知道 ReiserFS 提供的一套函数可不同于 ext3 的那一套。得益于 VFS ,其他文件系统可以采用 热插拔 的非常简便的方式加入或退出 Linux 操作系统,例如当第一次 mount 一个文件系统 A 时,相应地就把该文件系统对应的模块装载到内核(假设没有被直接编译进内核),当最后把文件系统 A 对应的设备 umount 时,对应的模块被卸载出去。
2            原理
LINUX 的文件系统可以追溯到八十年代末的 Minix 文件系统,而 Minix 文件系统具有几个明显的缺点:文件系统不能超过 64M ,目录只能存放固定数目的文件,文件名长度不能超过 14 个字符,文件尺寸小于 64M 。之后由于继续沿袭传统技术,尽管 linux 的标准文件系统依次经历了 VFS(1992 年前 ) ext(1992 ) ext2(1993 ) 和最新的 ext3 这一系列文件系统的传种接代,但 基因 没变,只不过新一代都是改进前一代的不足,或者加入一些新东东而已。但由于 Linux 几乎在一开始就引入 VFS 的概念(我个人认为非常英明 ^O^ ), Linux 对其他第三方文件系统都是包容的,目前几乎所有先进的文件系统都支持,其中著名的 ReiserFS 已经成了 Novell SuSe Linux 发行版的缺省文件系统,但也由于 IT 界最臭名昭著的四字经 向后兼容 的要求,今日各种 linux 发行版中存在过多地包容早已经落伍的文件系统的现象,比如 Minix FAT 等,但对于一个富有理论和经验的系统管理员来说,所有的这些 累赘 都可以在弹指间一一化解。
下面我们先看看一块物理硬盘是如何分区的。三个主要的参数是柱面数、磁头数和每磁道扇区数,起始编号分别为 0 0 1 0 柱面 0 磁头 1 扇区是主引导分区,上面存放引导代码和四个主分区表(如果一个物理硬盘多于 4 个,那么就放在扩展分区), 0 柱面 0 磁头上的其他扇区保留,真正的分区是从 0 柱面 1 磁头 1 扇区开始的。在 linux 中,用 /dev/had /dev/hdb /dev/sda /dev/sdc 等表示一个物理磁盘。实验:
1).        查看硬盘物理参数: hdparm /dev/sda; hdparm –i /dev/had(IDE 硬盘 )
2).        读入分区表信息: dd if=/dev/sda of=/tmp/mbr bs=1 count=64 skip=446
3).        查看主分区表信息: od –t x1 mar
4).        备份主引导区信息: dd of=/dev/sda if=/dev/sda bs=512 count=1 seek=1
 
2.1      VFS
自从邓小平南巡讲话那年之前 VFS 投胎于 linux 以来( Mr. Linus 不愧为一个有远见的接生婆, @_@ ), VFS 就一直与 Linux 形影不离,并且成了 Kernel 的一部分,在 Kernel 版本号如芝麻开花般节节攀升的同时自己也枝繁叶茂起来。
VFS 就像一个一个默默无闻的公仆,它介于各种文件系统和用户进程之间(参见图〖一〗),一方面屏蔽下层的各种异构文件系统的个性,另一方面为上层用户提供一个统一的接口(如 open read 等),同时 VFS 还提供一些文件系统没有的操作,比如,没有哪个文件系统提供了函数 lseek ,此函数由 VFS 实现。
Kernel 中存在一个全局指针变量 file_systems ,该变量指向一个元素类型为 file_system_type 的链表,当 mount 一个文件系统时装载对应的模块,而装载模块时触发的行为 register_filesystem() 会生成一个 file_system_type 结构并把它挂接到 file_systems 链表上,也就是说所有的已经 mount 的文件系统都挂在这个链表上, file_system_tpe 结构中有一个指向超级块结构的指针,存储介质上的超级块在设备 mount 时被读入内存,直到 umount 时从内存中删除。
 
图〖一〗 VFS 在内核中的地位
2.2           EXT2 EXT3
EXT2 linux 上标准的文件系统, EXT3 是在 EXT2 基础上增加日志形成的,其思想还是可以追溯到早期 UNIX 家族发展的基于超级块和 inode 的经典概念。 /dev/sda#n 表示 /dev/sda 硬盘上的第 #n 个分区,如果一个分区备格式化为 ext2 ext3 文件系统,那么整个分区的布局如图〖二〗所示:
 
 
图〖二〗: EXT2 文件系统分区结构
分区上的扇区是从 0 开始编号的,每个扇区 512bytes ,一个块( block )大小一般是 1k 2k 3k 4k ,具体大小可在创建文件系统时指定,如果不指定块大小那么会根据分区的大小自动相应选择一个。分区开始的 1024bytes 存放引导程序 boot ,接下来的 1024bytes 存放超级块 super block ,组描述字 group descriptors 起始于一个新块,并单独占用一个块空间,之后的所有块被组织成块组,块组才是真正存放文件的场所。超级块含有整个文件系统的一些全局参数,如:卷名、全局唯一标识符、状态、块大小、总块数、每组 inode 数,总 i 节点数、每组块数等等, super block 在文件 mount 时被读入内存,直到 umount 时被释放,由于超级块对于文件系统来说至关重要,所以超级块一般在第 1 3 5 7 9 组的首块中存有副本。
实验:
1).        创建一个 ext2 文件系统: mke2fs –c –c –L “Test Filesystem” /dev/sda2
2).        查看 ext2 分区开始部分的信息: od –t x1 /dev/sda2 | more ;其中 “aa55” 之前的为 boot ,含有魔数 “ef53” 的区域为 super block
3).        查看超级块中的内容: tune2fs –l /dev/sda2 ;例子见附件 1
4).        查看详细的块组信息: dumpe2fs –x /dev/sda2 ;例子见附件 2
一个块组描述字占用 32 个字节,其中三个主要指针分别指到 到这个块组的 i 节点表、 i 节点位图和块位图。块组的设计是为了拉近 inode 和它的数据块的距离,这样就可以提高磁盘存取性能,一个块组的具体结构示意图见图 〖二〗右边部分
inode EXT2 文件系统的精华,一个 inode 对应一个文件, inode 编号是全局性的,从 1 开始,描述参考 图〖三〗。
 
inode 中存放文件的一些重要属性,如权限、文件大小、访问时间、修改时间、创建时间、文件属主 ID 、组 ID 、块数等。 Inode 包含 15 个指针,前 12 个直接指向数据块,后三个依次是一次间接、二次间接和三次间接指向数据块。
文件系统的目录不同于普通文件的结构,是一种固定格式的文件,里面的每一个条目代表目录中的一个文件,示意图见图〖四〗。
 
图〖四〗:目录条目示意图
ext2 文件系统上增加一个特殊的 inode (日志文件),用于记录文件系统元数据的变化,即日志 journal ,这就是 EXT3 文件系统。 Ext3 这种粗糙的实现日志的文法付出了很大的代价:写两次!
实验: ext2 ext3 文件系统之间的转换(不需要重新格式化)
1).        ext2 转换成 ext3 文件系统: tune2fs –j /dev/sda2 ;如果 sda 之前已经 mount ,那么该命令执行完后在顶层目录创建了一个不能删除和 dump 的日志文件 .journal ,机器重启或 umount e2fsck 后该文件将被改变成隐藏的特殊日志文件 inode 。如果 /dev/sda2 是启动时自动 mount 的,那么还需手工修改 /etc/fstab /dev/sda2 所对应的文件系统类型,否则还是按 ext2 类型 mount 和使用。
2).        ext3 转换成 ext2 文件系统: umount /dev/sda2; tune2fs –O ^has_journal /dev/sda2; e2fsck –y /dev/sda2; mount –t ext2 /dev/sda2 /mnt; 对于自动 mount 的设备还需修改 /etc/fstab
2.3                ReiserFS 3.6
在香港回归那年, Hans Reiser 把他的基于平衡树结构( ReiserFS 3.6 采用 B*tree B*Tree 查询速度比 B+Tree 要快很多, 最近发布的 ReiserFS 4 采用独特的舞蹈树结构)的 ReiserFS 文件系统公布在网上,此后, ReiserFS 文件系统一直在 Hans Reiser 领导的开发小组下开发和发展。 ReiserFS 是一个完全不同于 ext2/ext3 的文件系统,日志功能只针对于文件系统的元数据。由于其采用先进的日志机制,且空间复杂度和时间复杂度都优于诸如 ext2 等其他文件系统, 性能直逼高档 unix (如 AIX )上的高级文件系统, 所以 迅速走红(目前得到许多 linux 发行商的支持,而 SuSe linux 干脆直接把它作为缺省安装的文件系统)。 ReiserFS 那帮狂热的维护者每一次升级都会为我们带来惊喜,正是这种跨越式的发展使得 ReiserFS 几乎抛弃了那个臭名昭著的 向后兼容 的理念,每一次的升级都必须重新格式化分区,这成了受他人攻击的唯一理由(我冤枉啊 !_! )。
ReiserFS  是根据面向对象的思想设计的,由语义层( semantic layer) 和存储层( storage layer) 组成。语义层主要是对对象命名空间的管理及对象接口的定义,以确定对象的功能。存储层主要是对磁盘空间的管理。语义层与存储层是通过键( key )联系的。语义层通过对对象名进行解析生成键,存储层通过键找到对象在磁盘上存储空间,键值是全局唯一的。
目前正在使用的是 ReiserFS 3.6 版本,在 32 位机器上最大可支持 2^32-4 个对象,每个对象包含一个对象 ID 和一个键。 ReiserFS3.6 文件系统分区的物理布局是这样的:首先余留 64k (全清 0 ),然后依次是 super block (占用 1block )、位图块( 1block )、日志(如果日志和数据同在一个设备上,缺省大小为 8193blocks )、根和其他节点区(参考图〖五〗)。缺省块大小是 4k ,开始时树高为 2 3.6 版树高不能超过 5
 
保留 (64k)
超级块 (1block)
位图 (>0block)
日志 (<8193blocks)
非根节点区
图〖五〗: ReiserFS 文件系统分区物理布局
B+Tree 的内部节点(占一个磁盘块)定义如下:
一些小文件( <4KB )直接存放在内部节点中,而大文件存放在叶子节点。
B+Tree 的叶子节点(占若干磁盘块)的结构如下:
对于具体的定义清阅读源代码,这里不做深入分析。
如果日志放在其他设备上,那么数据设备上就没有日志区,而根块就紧接着位图块存放。假如一块等于 4k ,那么超级块放在第 16 块(块编号从 0 开始),位图从第 17 块开始存放,紧接着是根。
ReiserFS 超级块类似于 ext2 的超级块,里面含有整个文件系统的重要参数,如文件系统总块数、空闲块数、根所在的块号、日志起始块和大小、块大小、魔数(缺省日志设备 ReIsEr2Fs ,单独日志设备 ReIsEr3Fs )、文件系统状态、树高、位图所占块数等等。
ext3 一样, ReiserFS 也有三种日志模式,即 journal,ordered,writeback 。同时, ReiserFS 引入了两种日志优化方法: copy-on-capture steal-on-capture copy-on-capture: 当一个事务要修改的块在另一个未提交的事务中时,就把这个块复制一份,这样这两个事务就可以并发进行了。 steal-on-capture :当一个块被多个事务修改时,只有最晚提交的那个事务才把这个块实际写入文件系统,其他事务都不写这个块。
最近发布的 ReiserFS 4 更是给人带来了许多令人炫目的创新,比如采用舞蹈树算法进一步把性能推向极至,引入文件系统调用的原子性首次把文件系统操作带入类似于数据库的 ACID Atomiccity Consistency Isolation Durability )领域(将来可能想破坏文件系统也难 (-: ),在同一时刻既可以把一个对象当作一个文件访问又可以视为一个目录给苛刻的用户带来无限自由,小文件捆绑存储导致近乎 0% 的磁盘碎块,内置磁盘写加密和压缩功能的想法近乎疯狂,漫游( wandering )日志法的运用从此不再 写两次 ,支持无数个 CPU ,支持插件, 通过刷新分配 (allocate-on-flush) 实现磁盘布局动态优化, ……
实验:
1).       生成一个 100M 文件: dd if=/dev/zero of=/tmp/hda bs=1024 count=100000;
2).       与回环设备建立链接: losetup /dev/loop0 /tmp/hda;
3).       创建文件系统: mkreiserfs –l TestingReiserFs /dev/loop0;
4).       查看超级块内容: reiserfstune /dev/loop0;
5).       查看物理布局: od –t x2 /dev/loop0 | more;
6).       生成一个 10M 文件: dd if=/dev/zero of=/tmp/hdb bs=1024 count=10000;
7).       与回环设备建立联系: losetup /dev/loop1 /tmp/hdb;
8).       创建文件系统: mkreiserfs –l TestingReiserFs –j /dev/loop1 /dev/loop0;
9).       查看超级块内容: reiserfstune /dev/loop1 /dev/loop0;
10).    清除现场: losetup –d /dev/loop0;losetup –d /dev/loop1;rm –f /tmp/hd[a,b];
 
3            特征
3.1                特性比较表
特性
Ext2
Ext3
ReiserFS( 不受 oracle 支持 )
分区大小
60KB~4TB
1MB~32TB
33MB~16TB
文件大小
0~4GB
0~2TB
0~8TB
块大小
1KB~4KB
1KB~4KB
512b~8KB
文件名长度
255
255
255
支持超大型目录
×
×
(百万以上)
日志功能
×
ACL 支持
稳定性
优秀
一般
一般
undelete 功能
×
windows 兼容性
×
×
修复速度
非常快
磁盘配额
×
支持不可变文件
×
注: Kernel 2.6 开始增加了 ACL 支持,当用 mount 设备时如果加参数 -o acl 则开启相应文件系统的 ACL 支持,例如 mount –t reiserfs –o acl /dev/sda2 /mnt 。在 Linux 系统上能使用 ACLs 是许多 linux 管理员期盼已久的。
3.2          综合评价
Ext2 linux 上使用已经有很长的历史了,市面上已经出现了 针对 Windows Mac OS X ext2 驱动器,允许您直接从这些操作系统中读取和写入 ext2 文件系统,这使它成为了共享设备(如移动硬盘)极好的格式。另外 Ext2 积累了可观的人气,与 ext3 ReiserFS 相比尽管存在更多的不足,但毕竟成了许多 it 人士的习惯,而且正在许多机器上跑着,尽管跑得有点艰难,想让其在短时间内从我们眼中消失是不可能的,这一点还真有点类似 windows 桌面!有人说 ext3 ext2 的唯一区别就是前者在后者的基础上增加了日志功能,这话有点偏激。 Ext3 的日志模式有三种,在 mount 时指定, journal 模式日志功能同时作用于数据和元数据,写操作有点令人难以忍受(如果再在其上跑大型数据库,我敢肯定那一定是一个蹩脚的系统管理员干的 ^O^ ), ordered 模式只对文件系统元数据的变化记录日志(数据先写入磁盘,然后元数据写入日志),它只对文件系统的完整性负责,而不顾用户数据,在这种模式下跑数据库效果不错,由数据库负责数据的完整性,双方各司其责,配合完美, writeback 模式不能保证数据先于元数据写入磁盘,因此可能存在元数据已经更新但数据没有更新的情况,传言这是三种模式中最快的。
先进的日志机制、几乎 0% 的磁盘碎片、支持海量存储和无限 CPU 、轻松管理上亿的文件、 光速 小文件访问速度,快速的自修复功能,启动 X Window ext2/3 30% 以上, …… ,这就是目前 ReiserFS 3.6 给人留下的深刻影响。刚刚发布的 ReiserFS 4 更是绝, Benchmark 结果几乎样样领先, ReiserFS 4 加入 kernel 只是时间问题。据 ReiserFS 4 追随者感叹,你一旦使用它,想破坏文件系统也难。

=======================================================================

以下内容转自 http://www./main/?q=node/115

文件系统类型有很多,您可以在 《Linux 文件系统(filesystem)资源索引》 中查看;但我们在Linux中常用的文件系统主要有ext3、ext2及reiserfs ; Windows和Dos常用的文件系统是fat系列(包括fat16及fat32等)和ntfs 文件系统;光盘文件系统是ISO-9660文件系统;网络存储NFS服务器在客户端访问时,文件系统是nfs,这个比较特殊一点;至于您想了解的更多,请访问您所用的文件系统的官方网站,请在《Linux 文件系统(filesystem)资源索引》 查找相应的资源,谢谢;
三、Linux 文件系统的选择和安全性;
如果做为专业人士来说,应该说哪个文件系统都是安全的;用Linuxfish的话来说“哪个文件系统的设计者都不是傻子,他们应该明白自己的作品是怎么回事。”。做为文件系统的设计者来说,我们一般在使用的过程中所遇到的问题,他们都应该有解决办法。但我们毕竟不是专业从事文件系统研究的,所以我们有必要从使用角度来说明文件系统的安全性;对于初学Linux的弟兄,一定会遇到文件系统的选择左右为难的情况,因为大多新手并不知道哪个文件系统更好;现在我们来谈谈文件系统的选择;
1、Linux操作系统安装过程中的文件系统的选择;

1)ext2 文件系统;

ext2文件系统应该说是Linux正宗的文件系统,早期的Linux都是用ext2,但随着技术的发展,大多Linux的发行版本目前并不用这个文件系统了;比如Redhat和Fedora 大多都建议用ext3 ,ext3文件系统是由ext2发展而来的。对于Linux新手,我们还是建议您不要用ext2文件系统;ext2支持undelete(反删除),如果您误删除文件,有时是可以恢复的,但操作上比较麻烦; ext2支持大文件; ext2文件系统的官方主页是: http://e2fsprogs./ext2.html
2)ext3 文件系统:是由ext2文件系统发展而来;

ext3 is a Journalizing file system for Linux(ext3是一个用于Linux的日志文件系统),ext3支持大文件;但不支持反删除(undelete)操作; Redhat和Fedora都力挺ext3;至于ext3文件系统的更多特性,请访问 《Linux 文件系统(filesystem)资源索引》
3)reiserfs 文件系统;

reiserfs 文件系统是一款优秀的文件系统,支持大文件,支持反删除(undelete);在我的测试ext2、reiserfs 反删除文件功能的过程中,我发现reiserfs文件系统表现的最为优秀,几乎能恢复 90%以上的数据,有时能恢复到100%;操作反删除比较容易;reiserfs 支持大文件;
4)Linux文件系统对大文件支持的对比;
请参考http://www./~aj/linux_lfs.html Filesystem File Size Limit Filesystem Size Limit

ext2/ext3 with 1 KiB blocksize 16448 MiB (~ 16 GiB) 2048 GiB (= 2 TiB)
ext2/3 with 2 KiB blocksize 256 GiB 8192 GiB (= 8 TiB)
ext2/3 with 4 KiB blocksize 2048 GiB (= 2 TiB) 8192 GiB (= 8 TiB)
ext2/3 with 8 KiB blocksize (Systems with 8 KiB pages like Alpha only) 65568 GiB (~ 64 TiB) 32768 GiB (= 32 TiB)
ReiserFS 3.5 2 GiB 16384 GiB (= 16 TiB)
ReiserFS 3.6 (as in Linux 2.4) 1 EiB 16384 GiB (= 16 TiB)
XFS 8 EiB 8 EiB
JFS with 512 Bytes blocksize 8 EiB 512 TiB
JFS with 4KiB blocksize 8 EiB 4 PiB
NFSv2 (client side) 2 GiB 8 EiB
NFSv3 (client side) 8 EiB 8 EiB

Note Kernel Limitations: The table above describes
limitations of the on-disk format. The following kernel limits
exist:

  • On 32-bit systems with Kernel 2.4.x: The size of a file and a
    block device is limited to 2 TiB. By using LVM several block
    devices can be combined enabling the handling of larger file
    systems.
  • 64-bit systems: The sizes of a filesytem and of a file are
    limited by 263 (8 EiB). But there might be hardware
    driver limits that do not allow to access such large devices.
  • Kernel 2.6: For both 32-bit systems with option CONFIG_LBD set
    and for 64-bit systems: The size of a file system is limited to
    273 (far too much for today). On 32-bit systems
    (without CONFIG_LBD set) the size of a file is limited to 2 TiB.
    Note that not all filesystems and hardware drivers might handle
    such large filesystems.


Note in the above:
1024 Bytes = 1 KiB;
1024 KiB = 1 MiB;
1024 MiB = 1 GiB; 1024 GiB = 1 TiB; 1024 TiB = 1 PiB; 1024 PiB = 1
EiB (check http://physics./cuu/Units/binary.html )
Maximum Number of Partitions An IDE disk has 64 minors, one is used for the full disk and therefore 63 partitions are possible. A SCSI disk has 16 minors and therefore only 15 partitions maximal.
2、文件系统的安全性;
任何一个文件系统在专家眼中都是安全的,就象MS说Windows是安全性是可靠的类似,如果MS专家来用Windows绝对没有任何问题,毕竟人家是专家,我们是使用者;专家和使用者还是有很大区别的;因为我们不是专家,所以我们才要选择更为安全易用的文件系统,下面我们对比一下ext2、ext3和reiserfs;
1)ext2、ext3和reiserfs 文件系统自动修复能力对比;

ext2、ext3及reiserfs 都能自动修复损坏的文件系统,也都是在开机时进行。从表现来看reiserfs更胜一筹;ext2和ext3文件系统在默认的情况下是“This filesystem will be automatically checked every 21 mounts or 180 days, whichever comes first”,也就是每间隔21次挂载文件系统或每180天,就要自动检测一次。通过实践来看ext2和ext3在auto check上是存在风险,有时文件系统开机后就进入单用户模式,并且把整个系统 “扔”进lost+found"目录,如果要恢复系统,就得用fsck 来进行修复;当然fsck 也同样存在风险;所以我们对ext2和ext3文件系统的使用,对新手来说的确需要心里准备;毕竟修复已经损坏的ext2和ext3文件系统是有困难的;另外ext2和ext3文件系统对于意外关机和断电,也可能导致文件系统损坏,所以我们在使用过程中,必须是合法关机;比如执行poweroff指令来关掉机器; reiserfs 文件系统也能自动修复,他在自动检测和修复上具有很强的功能,几乎很少出现ext2和ext3的情况,另外从速度来说他也比ext2、ext3文件系统的速度要快;通过我两个月的测试来看,reiserfs 对于意外断电表现最佳。为了验证reiserfs 文件系统的在意外断电的安全性上,我每天都直接断掉电源关机,但我们不应该说reiserfs 是安全的直接断电了事,直接断电有时也会造成硬盘物理损伤;reiserfs文件系统从未出现象ext2和ext3那样用手动方式来进行修复的情况。从这方面来说reiserfs 还是极为安全的;
2)ext2、ext3和reiserfs 反删除功能对比;
从文件系统的反删除来看,ext2和reiserfs 都支持反删除,对于一般使用者来说应该是安全的,但对于保密单位来说可能意味着不安全。从反删除角度来说明文件系统的安全性,也是有两方面;昨天和 Linuxfish 讨论了这个问题,他说在Windows中引入了文件粉碎机这个可笑的工具,目的就是不让恢复已删除的文件。如果您的工作是从事比较机密的,用ext3比较好,因为ext3一旦删除文件,是不可恢复的,虽然网上也有几个关于反删除恢复操作在ext3中,但实践来看,并不是那么容易;因为反删除能恢复相应的绝秘资料的泄秘,所以ext3可能更适合您;如果您是一般使用者,我还是建议用reiserfs文件系统,他支持反删除功能,反删除操作也比较容易;但也会存在一点问题。比如在Fedora或 Redhat中,有一个关于系统安全的selinux,在默认情况下,可能在reiserfs 中不支持selinux ;不过值得一说的是selinux是一个绝对庞大、功能丰富、涉及面极广的安全工具,selinux并不是一般使用者就能驾驭的了的;所以我们建议初学者在使用Linux系统时先关掉selinux 功能;但您可以慢慢尝试熟悉使用它;在Fedora和Redhat最新的版本中,reiserfs文件系统的确是不支持selinux,所以您在 Fedora或Redhat中采用了reiserfs ,并且还想用selinux ,还是自己找解决办法,可能要打内核补丁才行;至于其它Linux发行版本是否存在这个问题,还得需要您来尝试;
四、Linux 支持的文件系统;
Linux目前几乎支持所有的Unix类的文件系统,除了我们在安装Linux操作系统时所要选择的ext3、reiserfs和ext2外,还支持苹果 MACOS的HFS,也支持其它Unix操作系统的文件系统,比如XFS、JFS、Minix fs 及UFS等,您可以在kernel的源码中查看;如果您想要让系统支持哪些的文件系统得需要把该文件系统编译成模块或置入内核;关于如何编译内核,请参考《内核管理概述》 ;当然Linux也支持Windows文件系统NTFS和fat,但不支持NTFS文件系统的写入;支持fat文件系统的读写;请参考《在Fedora core 4.0 加载NTFS和FAT32分区详述》 Linux也支持网络文件系统,比如NFS等;挂载nfs文件系统的办法是: mount -t nfs 服务器地址:/目录 挂载点 下面是一个例子,比如我在192.168.1.4的机器做了一个NFS服务器,提供192.168.1.x网段上的所有机器都可以用NFS;具体做NFS服务器的过程省略,此处只讲怎么挂载;

[root@localhost ~]# showmount -e 192.168.1.4  首先查看NFS服务器共享的文件文件夹;
Export list for 192.168.1.4:
/opt/sirnfs *  注:位于 192.168.1.4机器上的 /opt/sirnfs 目录

[root@localhost ~]# mkdir /mnt/sirnfs  注:在本地机器建一个目录,做为NFS挂载点;

[root@localhost ~]# mount -t  nfs 192.168.1.4:/opt/sirnfs  /mnt/sirnfs   注:挂载NFS;

[root@localhost ~]# df -h   注:查看本地机挂载NFS是不是成功了;
Filesystem            容量  已用 可用 已用% 挂载点
/dev/hda7              11G  7.4G  2.9G  72% /
/dev/shm              236M     0  236M   0% /dev/shm
/dev/hda9              22G  837M   22G   4% /opt/data
192.168.1.4:/opt/sirnfs
                       63G   47G   17G  74% /mnt/sirnfs   注:这是挂载成功后的显示;


五、文件系统的特性;
Linux文件系统的特性决定文件的属性,比如我们通过chattr +i 来避免某个文件被改动,通过chattr+i 来改其为只读文件,在ext2和ext3下是可以的,但在reiserfs 这样做是不能起任何作用的;不同的文件系统有不同的特性,这种特性往往决定着在文件系统文件和目录的属性,这也是我为何本文的主要原因;通过本文,我能引出在Linux中文件和目录属性的的操作;每个文件系统都有一系列的工具,包括创建、修复、备份等,值得一说的是大多文件系统都有修复工具,在您的文件系统极为正常的情况下,最好不要用修复工具来检测和修复;比如最好不要用运行fsck工具,这个工具可能会使您的系统被破坏;请参考:《Linux 创建文件系统及挂载文件系统流程详解》

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多