几种Linux文件系统性能比较

最近项目遇到性能瓶颈,写盘时候CPU占用率比较高,打算从 SATA 硬盘升级到 SAS 硬盘,也希望能从系统软件方面改进一下,从几篇不错的文章了解到常用的 Linux 文件系统之间的性能差异,评测结果也比较一致,推荐这篇(http://www.debian-administration.org/articles/388)结果较详尽(但是2006的文章,过去这么久,评测结果可能有所变化)。

综合各评测结果看来,几种文件系统的性能表现如下:

Ext3 ReiserFS JFS XFS
可用空间大小 92.77% 99.83% 99.82% 99.95%
创建分区速度(秒) 20G分区 14.7 2.2 (CPU 59%) 1.3 (CPU 74%) 0.7
mount速度(秒) 20G分区 0.2 2.3 0.2 0.5
unmount速度(秒) 20G分区 0.2 (CPU 37%) 0.4 (CPU 14%) 0.2 (CPU 27%) 0.2 (CPU 45%)
拷贝大文件(秒) 700M ISO Imag(CPU 46% - 51%) 38.2 41.8 35.1 34.8
第二次拷贝同样的文件(秒)(CPU 38% - 50%) 37.3 43.9 39.4 33.1
删除同样的ISO文件(秒) 2.5 (CPU 10%) 1.5 (CPU 49%) 0.02 (CPU 10%) 0.02 (CPU 10%)
拷贝大文件树(秒) 7500个文件, 900个目录, 1.9GB(CPU 27% - 36%) 158.3 172.1 180.1 166.1
第二次拷贝同样的大文件树(秒) 120 136.9 (CPU 45%) 151 (CPU 29%) 135.2
删除同样的大文件树(秒) 22 (CPU 15%) 8.2 (CPU 86%) 12.5 (CPU 15%) 10.5 (CPU 65%)
List同样的大文件树(秒) 2.5 (CPU 35%) 1.4 (CPU 71%) 3.1 (CPU 35%) 1.8 (CPU 70%)
搜索同样的大文件树(秒) 4.6 (CPU 6%) 0.8 (CPU 36%) 5 (CPU 6%) 2.8 (CPU 10%)

绿色:效率最高,蓝色:效率高,红色:效率最差


鉴于多数现有的评测“年代久远”,几年来软件和硬件都有发展,因此我还是自己做了一个简单的评测。

由于 ReiserFS 作者的前途渺茫,故只针对 Ext3,XFS,JFS 来评测,评测项目仅针对大文件树的操作,不测试CPU占用率。测试机使用 Virtualbox虚拟机,环境如下:

宿主机配置如下: CPU : Q9550 四核2.8G 内存 : 4G 硬盘 : SATA 500G

虚拟机配置如下: CPU: 单核 内存:384M 硬盘:8G

Ext3 JFS XFS
拷贝/usr目录到/root/usrx(秒) ext3已运行很多天, jfs和xfs系统刚装, 拷贝时虚拟硬盘还要自动扩展大小, 因此jfs和xfs硬盘会多一些性能损耗 158 145 123
第二次拷贝/usr目录(秒) 153 109 91
删除/root/usrx目录(秒) 3.5 10 14.6
第二次删除/root/usrx目录(秒) 6.2 12 14.9

从这份测试结果来看,XFS对大文件树的拷贝性能似乎从较高变成最高了,而且遥遥领先,但删除大文件树的速度则是最慢的。删除文件虽然是最慢的,但在大多数系统中删除操作较少,而且删除动作的速度较拷贝的速度要快一个数量级,这样说来整个系统由于删除动作带来的性能损耗有限,因此删除动作的性能损耗可以接受。


另外推荐一篇文件系统的评测文章:

http://linuxgazette.net/122/TWDT.html#piszcz (有多张统计图,直观)