不同文件系统的比较

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

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

不同的可用文件系统

Ext2

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

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

Ext3

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

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

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

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

ReiserFS

ext3 不同, reiserfs 是凭空创造出来的。它和 ext3 一样都是日志文件系统,却由于使用了从数据库软件引入的二进制树概念而与在内部结构上与 ext3 产生了非常大的差别。

JFS

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

XFS

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

文件系统间的区别

表 9.1. 文件系统特征

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

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

文件的最大尺寸是由很多参数决定的(比如 ext2/ext3 的磁盘块大小),而且它还非常可能随内核版本及结构而变化。目前的文件系统限制最大文件大小为接近或者大于2 TB (1TB=1024GB)。而 JFS 的最大文件可达4 PB (1 pb=1024 TB)。不过这些值还受限于最大块设备的容量。在目前的 2.4.X 内核版本下(只对X86来所),这种限制是2 TB[20]。在2.6.X版内核中,这个块设备极限可以通过在编译内核时打开大块设备支持选项(CONFIG_LBD=y)而突破。详细情况可以参考 Adding Single UNIX SpecificationLarge File Support in Linux,以及Large Block Devices.

评测明智么?

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

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

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



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

[21] 中。截至到本文写作时, reiserfs4 还没有被加入到2.6.X