先来了解一下这四个Linux文件系统:
ext3:经典的Linux文件系统;
ext4:继承ext3成为Linux的默认文件系统;
xfs:高性能文件系统,扩展性很好;
btrfs:一个功能非常丰富的文件系统。
测试环境和工具
工具有,
bonnie++ (version 1.96):综合性测试读写速度以及元数据性能;
sysbench (version 0.4.12):半综合的测试工具,擅长数据库性能测试;
postgresql (version 9.1.3) , mysql (version 5.5.23):用来测试数据库性能;
tar/untar,cat:几个日常实用的代表性工具;
filefrag:检查文件系统碎片的有用工具。
测试环境是个Dell D620笔记本,CPU Core2 T7200 2.0GHz,Martrixer当年上大学时也买过这台笔记本,一直用了很多年,最后慢的不成样子了。
4 GB DDR2-667 RAM
Quadro NVS110 显卡
硬盘:Seagate ST980825AS 7200 RPM 80 GB SATA HDD ( IDE兼容)
操作系统:Fedora 17 amd64 内核版本3.4.0-1.fc17.x86_64
除了write barriers,文件系统都使用默认配置。
Bonnie++读写性能
顺序读写都差不多,ext3的CPU占用高了一点。
随机寻道在没用同步时性能差不多,但是在同步模式下,btrfs性能和CPU占用都变得很差。有些虚拟机图像和大的音视频文件经常使用direct IO,跳过OS的cache层,这种情况下就是上图的性能。
顺序读写都差不多,这里面IN指的写,OUT是读。
同步模式结果和前面是一样的。
Bonnie++文件操作性能
正常的创建删除文件操作,ext3和ext4好一点,因为XFS在创建和删除时有很多元数据需要操作。
同步模式下btrfs删除超快,创建超慢,可见创建文件的时候有很多操作。
非同步+direct模式,和之前类似。同步是说数据要写到磁盘才算写下去,而不是写到cache。Direct是说跳过cache,直接用磁盘。所以我感觉这两个是一个概念。
同步+direct模式,和前面类似。
MySQL性能
用Sysbench测MySQL,创建100K行条目,大家差不多时间。
响应100K个请求也差不多。
10K个读写混合的测试,btrfs差一点。
mysql-bench的测试也验证了这一点:btrfs不适用于MySQL。
Postgresql性能
Postgresql是另一个开源数据库。准确性和扩展性比较好。
创建100K个条目,btrfs又差了。
100K个请求,ext3弱了一点。
读写混合测试,ext4最好。
创建数据库,ext4最快。
交易性能ext4最好。
综上,ext4是最适合Postgresql的文件系统。
Linux内核untar和cat操作性能
解压缩btrfs最好,ext3最差。
文件的读,btrfs最快,ext3最慢。
可见xfs和btrfs在日常应用的读文件中,还是很高效的。
文件系统碎片
文件碎片是说一个大文件分别放在磁盘的不同位置,导致读的时候就要不断转动磁头寻址,机械硬盘寻址一次要5-15毫秒,非常费时间。
消除碎片的两种方法:
1. 有一个程序定期清楚碎片,Windows是这么做的,不过现在ext4,xfs,btrfs都有这个功能了;
2. 分配的时候减少碎片,Linux是这么做的。
测试结果显示,除了ext3的三个文件系统都几乎是1个文件1个数据块。Ext3差一点点。
总结
作者的结论跟测试没什么关系,可以看出ext4的性能很好,btrfs适合桌面用户,因为功能丰富,但数据库性能一般。
引用:
Written by Gionatan Danti on 18 June 2012. Posted in Linux & Unix http://www.ilsistemista.net/index.php/linux-a-unix/33-btrfs-vs-ext3-vs-ext4-vs-xfs-performance-on-fedora-17.html?limitstart=0
想要每天看一条SSD文章吗?扫一扫,微信关注我们!或者微信搜索公众号ssdfans关注。