Filesystems (ext3, reiser, xfs, jfs) comparison on Debian

 粗略翻译了一下 Filesystems (ext3, reiser, xfs, jfs) comparison on Debian Etch 这篇文章。

有很多的关于linux文件系统比较的文章,但是他们大部分都是anecdotal的,都是基于人为的一些任务或者都是在老的内核下面完成的。这篇评论是基于11项真实存在于一台硬件比较老(奔腾 II/III ,EIDE硬盘)的文件服务器上的任务。

为什么会有另外一个测试?

我发现两个quantitative和reproductible(可重现的?)的测试,在使用2.6.x内核的时候(参见参考文章)。Benoit(2003)在一台有512M内存的奔腾II 500的服务器上使用大文件(超过1GB)进行了12次测试。这些测试非常有用,但是结果已经太老了(2.6.0内核),并且他们都是应用于操作专有大文件的(比如多媒体、科学、数据库)。

Piszcz(2006)进行了21项测试,在一台有768M内存,400G EIDE133硬盘的奔腾III 500的机器上模拟了一个变化的文件操作。到目前为止,这些测试似乎是在2.6内核上面最全面的了。然而,因为很多测试都是“人为”的(例如,复制和删除10000空的目录,创建10000文件,递归的分割文件),所以这些或许很难为现实世界带来什么结论。

所以,这个测试的目标就是完成Piszcz(2006)的一些结论,通过在小型商务文件系统服务器(参考测试描述)上面的实际操作。

测试设置

* 处理器 : Intel Celeron 533
* 内存 : 512MB RAM PC100
* 主板 : ASUS P2B
* 硬盘 : WD Caviar SE 160GB (EIDE 100, 7200 RPM, 8MB Cache)
* 控制器 : ATA/133 PCI (Silicon Image)

* 操作系统 Debian Etch (kernel 2.6.15), distribution upgraded on April 18, 2006
* 其它不需要的服务都关掉了 (cron,ssh,saMBa,etc.)

* 文件系统 Ext3 (e2fsprogs 1.3 Cool
* ReiserFS (reiserfsprogs 1.3.6.19)
* JFS (jfsutils 1.1. Cool
* XFS (xfsprogs 2.7.14)

对于选择的测试的描述

操作大文件(ISO文件,700M)
* 将ISO文件从第二块硬盘复制到测试硬盘上面。
* 在测试硬盘上面重新复制ISO文件。
* 删除两个复制的ISO。

操作一个目录树(7500个文件,900个目录,1.9G)
* 将目录树从第二块硬盘复制到测试硬盘上面。
* 在测试硬盘上面重新复制目录树。
* 删除两个复制的目录树。

在目录树中操作
* 用递归方式列出目录树中的所有内容,并且保存到测试硬盘上面。
* 在目录树中查找匹配指定通配符的文件。

关于文件系统的操作
* 创建文件系统(mkfs)(所有文件系统都使用默认设置创建)。
* 挂载文件系统。
* 卸载文件系统。

11项测试(从创建文件系统到卸载文件系统)的顺序是按照一个Bash脚本来运行的,总共运行三次(会报告平均时间)。每个序列大概需要7分钟。完成测试的时间,cpu占用百分比等都是通过GNU time utility(1.7版本)来计算的。

测试结果

分区容量
初始的(在创建文件系统之后)和剩余的(在删除所有文件之后)分区容量是使用可使用的blocks除以整个分区的blocks计算出来的。EXT3的初始分区容量最差,其它的都几乎可以使用最大的分区容量。有趣的是,Ext3和ReiserFS剩余分区容量和初始分区容量是一样的,JFS、XFS损失了0.02%的分区容量,(建议这些文件系统可以动态增长,但是不要在删除文件之后完全恢复他们的初始状态(和大小)。)
初始分区容量 损失
Ext3 92.77% 0
ReiserFS 99.83% 0
JFS 99.82% 0.02%
XFS 99.95% 0.02%


结论:想要使用分区的最大容量,请选择ReiserFS、JFS、XFS。

文件系统的创建,挂载和卸载

为20G的分区创建文件系统。
创建时间 挂载时间 卸载时间 创建时CPU占用 挂载时CPU占用 卸载时CPU占用
Ext3 14.7s 0.2s 0.2s | 6-9% 37%
ReiserFS 2.2s 2.3s 0.4s 59%(Lo) | 14%
JFS 1.3s 0.2s 0.2s 74%(Hi) | 27%
XFS 0.7s 0.5s 0.5s | | 45%


结论:为了快速创建、挂载和卸载文件系统,请使用JFS或者XFS。

操作大文件(ISO文件,700M) 第一次复制 第二次复制 删除文件 第一次复制CPU占用 第二次复制CPU占用 删除时CPU占用 minor page faults
Ext3 38.2s 37.3s 2.5s 46-51% 38-50% 10% |
ReiserFS 41.8s 43.9s 1.5s | | 49% 661
JFS 35.1s 39.4s 0.02s | | 10% |
XFS 34.8s 33.1s 0.02s | | 10% 600


结论:为了快速操作大文件,请使用JFS或者XFS。如果你需要最小的cpu占用,请使用JFS。

操作目录树(7500个文件,900个目录,1.9G) 第一次复制 第二次复制 删除 第一次复制CPU占用 第二次复制CPU占用 删除时CPU占用 minor page faults
Ext3 158.3s 120s 22s 27-36% | 15% 14000-1490
ReiserFS 172.1s 136.9s 8.2s | 45%(Hi) 86% 5843
JFS 180.1s 151s 12.5s | 29%(Lo) 15% 14000-1490
XFS 166.1s 135.2s 10.5s | | 65% 14000-1490


结论:为了快速操作大文件树,请选择Ext3或者XFS。其它作者的测试中显示,ReiserFS对于大量的小文件有优势。然而结果显示,操作包含上千的大小变化的文件(10K到5M)时建议使用Ext3或者XFS,他们或许更适合实际使用。JFS有最下的CPU占用,但是需要指出的是在操作大量文件的时候他也有值得注意的较高的延迟。

在之前的目录树中列表目录和文件查找 列表目录 文件查找 列表目录CPU占用 文件查找CPU占用 minor page faults
Ext3 2.5s 4.6s 35% 6% 704-712
ReiserFS 1.4s 0.8s 71% 36% 1991
JFS 3.1s 5.0s 35% 6% 704-712
XFS 1.8s 2.8s 70% 10% 704-712


结论:根据这些测试,ReiserFS和XFS操作速度快,但是有比较多的CPU占用,Ext3和JFS操作速度慢,但是有较少的CPU占用。XFS似乎是最好的选择,他有相对比较快的查找速度,中等的cpu占用,以及可以接受的page faults比率。

综合结论

这些结果重现了Piszcz(2006)关于Ext3是最少的可用分区容量的系统,ReiserFS是最长挂载时间的系统,Ext3创建时间最长的系统。此外,和这份报告中的内容一样,都发现JFS是CPU占用最少的系统。最后,这份报告是第一个显示ReiserFS在通常的文件操作中有较高的page faults。

认识到各个文件系统的优缺点之后,每个 分区/磁盘 只可以安装一个文件系统。基于上面的测试,XFS似乎是最适合于家用文件服务器或者小型商务服务器使用:

* 他可以最大限度的使用你的硬盘。
* 他是创建、挂载、卸载速度最快的文件系统。
* 他是操作大文件(>500M)速度最快的文件系统。
* 他对于大量的中小文件和目录的操作是第二快的。
* 在大的目录树列表和查找操作中,他在操作时间和CPU占用间找到了很好的平衡。
* 他不是占用资源最少的文件系统,但是他在比较老的硬件上面的资源占用还可以接受。

Piszcz(2006)没有明确的推荐XFS,他总结说“个人认为,我会因为性能和可靠性而选择XFS”。我支持他的结论。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值