1. 不同文件系统的比较

在安装过程中,您可以为您的分区选择不同文件系统,这些分区也将因为您的选择而被以不同的算法格式化

选择合适的操作系统对非专家来说是非常困难的。下面我们会简单介绍一些目前流行的文件系统,它们都可以在 Mandrakelinux 下实现。

1.1. 不同的可用文件系统

1.1.1. Ext2

第二扩展文件系统(简称 ext2FS 或者 ext2) 作为 GNU/Linux 默认的文件系统已经有很多年了。ext2 代替了扩展文件系统(这也是其名称中“第二代”的由来)。它纠正了它前身的一些错误并突破了一些限制。

ext2 遵循了 UNIX® 类文件系统的一贯标准。ext2 从它出现的第一天起,就注定要在提供鲁棒性和高性能的同时演化。

[注意]注意

它在改变大小前必须首先卸载。

1.1.2. Ext3

第三扩展文件系统从名字上就可以看出是 ext2 的继任者。它兼容 ext2 并引入日志以提高性能。

ext2 这种“传统”意义上的文件系统的一个主要缺点就是不能经受系统突然崩溃(停电或者软件造成的崩溃)。一般说来,一旦系统再次重启,上次的崩溃会导致系统对文件系统的结构进行长时间检查并试图改正错误。而这些过程有时会导致问题部分被扩大并最终造成部分或全部已保存文件的丢失。

使用日志解决了以上问题。简单地说,就是在实际执行一个命令(比如保存文件)之前就已经记录下这个命令。这个操作就像船长在航海日志上记录每天发生的事情一样。其结果将产生一个总是一致的文件系统。问题发生后会被迅速确认,最终的修复方法也会被限定在很小的范围内。用于确定文件系统问题的时间正比于对系统使用的时间使用而不是文件系统的大小。

ext3 在使用 ext2 结构保证兼容性的同时提供了日志文件系统。这使得 ext2ext3 之间的相互转换非常容易。

[注意]注意

ext2 一样,它在改变大小之前必须先卸载。

1.1.3. ReiserFS

ext3 不同, reiserfs 是崭新创造出来的。它和 ext3 一样都是日志文件系统,却由于使用了从数据库软件引入的二叉树概念而在内部结构上与 ext3 产生了非常大的差别。而且其块大小可变,因此它优化了对大量(成千上万)小文件的存储。对大文件,它的性能也同样优异,并能使其适应于不同的用途。

[注意]注意

它能够“即刻”更改大小,而不必事先卸载。

1.1.4. JFS

JFSIBM 设计并使用的日志文件系统。它最初是一个私有并封闭的系统。但是 IBM 后来决定把它对开源运动开放。它具有和 reiserfs 类似的内部结构。

[警告]警告

GNU/Linux 上不能更改其大小。

1.1.5. XFS

XFS 是由 SGI 设计的日志文件系统,它也被用在 Irix 操作系统中。它最初是一个私有并封闭的系统,但是后来 SGI 决定把它对开源软件开放。它的内部结构有很多特别之处,比如对实时带宽的支持,扩展和基于簇的文件系统(没有包含在免费版中)

[警告]警告

它在 GNU/Linux 上只能扩大,而不能缩小。而且只能对已经挂载的文件系统更改大小。

1.2. 文件系统间的区别

表 9.1. 文件系统特征

 Ext2Ext3ReiserFSJFSXFS
稳定性出色很好一般
反删除工具有(复杂)有(复杂)
系统崩溃后的重启时间非常非常长非常快非常快非常快
系统崩溃后数据的状态一般来说不错,但是要冒丢失部分或全部数据的巨大风险很好Medium[a]很好很好
ACL 支持

[a] 通过在 /etc/fstab 中添加 data=journal 的选项,日志记录不仅记录了 元数据,还记录了 数据。这将有得到更好的崩溃恢复结果。

文件大小的上限取决于许多参数(比如:ext2/ext3 的块大小),且会随内核版本及架构的更新而发展。对于 32 位计算机而言,当前的 ext2ext3 文件系统的上限接近或超过 2 万亿字节(TB,1 TB=1024 GB)。JFS 可以达到 4 皮字节(PB,1 PB=1024 TB)。不幸的是,这些值同样会受到最大设备块大小的限制[23]

在2.6.X 版内核中,这个块设备极限可以通过在编译内核时打开大块设备支持选项(CONFIG_LBD=y)而突破。详细情况可以参考 对单一 UNIX 标准添加任意文件大小支持Linux 中大文件支持大设备块。对某个提供支持的文件系统,上述文章能使您达到 16 TB (在 32 位计算机上)文件系统大小,而不用使用类似 JFS 的特殊文件系统技巧。保存在其中的文件的大小局限于一个更小的值。

1.3. 评测明智么?

比较文件系统间的性能差别往往是很困难的。所有的测试都有缺陷,结果都要小心地解释。目前 ext2 已经很成熟了,但是它的发展也日趋缓慢; ext3reiserfs 在这点上较为成熟。 reiserfs 的新特性已经被加入到了 Reiser4[24]。另一方面, XFS 有很多独到之处,而且随着时间的推移,将有更多高级特性和 Linux 工作得更好。JFS 选择了不同的路线,它的特性已经被一个接一个地集成到了 Linux 中。这虽然使得它的进展缓慢,但却换来了干净的代码。几个月或几周前的比较已经过时了。您要知道现在硬件的性能(特别是和硬盘容量有关的)已经极大地平衡了不同文件系统之间的区别。 XFS 目前在对大的流文件的处理上表现最好,这是它的优点。

每个系统都有优点和缺点。实际上,这些都取决于您对自己计算机的使用。一个简单的桌面机使用 ext2 就足够了。对于服务器来说, ext3 这样的日志系统是不错的选择。reiserfs 可能会因为它的起源而更适合于数据库服务器。JFS 适用于主要追求大的文件系统吞吐量的系统。如果您需要 XFS 的高级特性,那么它是一个非常有趣的选择。

对于“普通”应用,这四种文件系统会有几乎相同的性能。 reiserfs 允许您迅速访问小文件,但它处理大文件(几兆)的速度较慢。在大多数情况下,reiserfs 处理日志的能力会使人忽略掉它的缺点。值得注意的是,在默认情况下 reiserfs 是通过 notail 选项挂载的。这意味着系统没有对处理小文件进行优化。



[23] 您可能会惊异于如何才能用只能存储 320 到 400 GB 的硬盘达到这种容量。举例来说,您可以通过使用带 8 个 250GB 硬盘的 RAID 卡做 RAID 条带模式来达到 2TB 的存储空间。您也可以通过 GNU/Linux 软件 RAID 或者使用 LVM (Logical Volume Manager,逻辑容量管理)来合并几个 RAID 的容量,这应该甚至可以在 RAID 模式下超过(块尺寸限制的) 4TB 极限。

[24] 截至到本文写作时,Reiser4 还没有被加入到 2.6.X 内核。