当Linux变的越来越成熟,其中的一部分东西由于缺少更新,也开始变得有些陈旧,比如Linux目前使用的ext2文件系统。4或5年前,当ext2文件系统刚开始开发的时候,没人能想像得出硬盘的容量会增长得如此迅速。虽然ext2文件系统的局限性并不是那么明显,但是随着更新、更快、更大的硬盘的出现,ext2文件系统已经力不从心。
ext2文件系统的局限性这件事并不是一个秘密:它在处理过大的文件时显得不是很有效率,不能处理超过2G字节大小的文件,并且表现也不是很好。这些局限性对一般的计算机使用者来说并不是个问题,但在中和高端服务器市场,就完全不是这回事了。比如这个市场中的数据库的容量,往往超过2G字节,而某些磁盘阵列的文件系统的大小,更要用TB字节来统计了。随着硬盘的容量增大,文件系统的表现会逐渐下降;随着文件的增大,访问文件的速度也越来越慢。
文件系统的局限性要受制于文件系统的驱动程序,同时也受制于文件系统的设计。Ext2文件系统设计有崩溃恢复机制:当崩溃发生后,可以很容易地确定哪些数据丢失了。最容易实现的方式是,当前一次写操作完成后,下一次的写操作才能进行。这种被称为“同步元数据更新”的机制,减少了崩溃发生时造成的丢失数据的数量,并能有一些崩溃后的数据恢复特点;而坏处就是降低了文件系统的性能:因为在前一次写操作完成之前,后一次写就会阻塞而等待,而不是做缓冲,从而降低了性能。
怎么解决以上提及的问题呢?一种更好的方式就是通过被称为“日志”的技术:把要写到硬盘中的数据做缓冲。举例来说:当驱动程序需要写硬盘中某一块时,它修改的是存放于文件日志中的一块镜像;只有当日志中的镜像复制到日志文件系统中后,数据才真实地写到了那一块上。这种技术允许撤消对文件系统做的改变(只要把日志中的数据覆盖),或者在发生崩溃时恢复数据(只要把镜像拷贝到文件系统中)。日志文件系统提供了更好的性能表现(数据是并行地写入进日志,然后再逐步写入文件系统),和更好的崩溃恢复性能。
目前有很多项目使用“日志文件系统”的技术,开发新的文件系统准备取代广泛使用的ext2文件系统。由于其中一些项目进展迅速,从理论进入了可用阶段,比如ReiserFS平衡树文件系统(devlinux.com),SGI公司的XFS文件系统(oss.sgi.com)以及ext3文件系统(ftp://ftp.linux.org.uk/pub/linux/sct/fs/jfs/)。它们虽然有不同的特点和开发方式,但都使用了“日志文件系统”的技术,并且都有可能成为ext2文件系统的继任者。
ReiserFS文件系统走在最前面。有分析报告称,它不仅十分稳定,而且在使用日志技术上,将文件数据和文件名以平衡树的方式在文件系统中存放。ReiserFS并且从一开始就以在大容量或磁盘阵列中快速高效访问为设计的出发点,使得它在服务器市场上成为一流的选择。它的缺点是其不同开发版本之间有些前后兼容性的问题,为了使用它的新版本,往往需要重新格式化整个分区。ReiserFS目前使用GPL的版权标准,加上一些商业应用的特别版权说明。目前它只能使用在Intel处理器结构的操作系统中,以后也许会有其他平台的移植。
SGI公司的开放源代码产品XFS文件系统在开发者社区中引起过很多关注。XFS文件系统已经在SGI公司自己的操作系统IRIX上稳定使用了很多年,它是一个完全64位的日志文件系统,开放源代码的XFS已经移植到了Linux上来,其测试版本已经推出,同时也处于快速的开发中。
下一个是ext3文件系统,目标是提供ext2文件系统的一个更新版本。通过在原有ext2系统的元数据块上增加日志信息,声称要保持与ext2系统的向前和向后兼容性。这个文件系统也许称为ext2的下一个版本更为合适些。
以上3种文件系统都比当前使用的ext2文件系统具有更好的性能,也各具特色,他们将在未来的时间里继续竞争,以取代Linux操作系统中使用多年的ext2文件系统。