Btrfs 测试结果简述
Btrfs 凭借着其优良的可伸缩性和诸多有用的特性,有望成为 Linux 下一代文件系统。目前它已被纳入主流内核支持,接受用户的实验性(Experimental)使用。
今年 2 月 hutuworm 给出了一篇《Ext4 ReiserFS Btrfs 等七种文件系统性能比拼》,他是在 2.6.29-rc3 内核上使用 IOZone 3.318 做的测试。Btrfs 官方 Wiki 也给出了一些第三方测试数据,基于的是 4、5 月份的版本。官方 Wiki 同时指出他们在不断解决这些测试中所发现的问题和瓶颈。这几天我也对 Btrfs 进行了一些测试,并针对某些新特性进行了研究。我的测试基于 2.6.32 内核,使用的工具是 IOZone 3.327,对比对象为 ext3 和 ext4,机器配置为 2 * 4Cores Xeon 2.0G / 8G Memory。从测试结果看,性能方面,Btrfs 在 CPU Cache 区和 Buffer Cahce 区较好,在 Disk I/O 区不如 ext3/ext4(所谓三个区的划分参考 IOZone 文档);可靠性方面,Btrfs 仍有待加强。下面简述我的几条观察(详细数据省略)。
./iozone -Rab output.xls -g 16G
./iozone -Rab output.xls -s 16G -r 2M
tar cf *.tar *; tar jcf *.tar.bz2 *
性能方面:
1.CPU Cache 区和 Buffer Cahce 区的 read 吞吐率,Btrfs、ext3、ext4 相差不大。
2.CPU Cache 区和 Buffer Cahce 区的 write 吞吐率,明显地 Btrfs 优于 ext4 优于 ext3(tar 测试检验了这个结果)。
3.Disk I/O 区的 read 吞吐率 ext3 占优,write 吞吐率 ext4 占优,而 Btrfs 两方面均劣于 ext3、ext4(与 hutuworm 的结论类似)。
4.三个文件系统对于小于 CPU Cache 区的小文件,都有“文件或记录过小时读写性能变差”的问题。其负面影响程度 BtrFS 大于 ext4 大于 ext3。
而可靠性方面,常规的读写校验并没有出现问题,但在测试 Copy on write(COW)特性时,先后遇到两个错误:
1.最初使用 2.6.31-15 内核测试,出现了克隆文件与原始文件计算 MD5 有可能不一致的问题。开发人员回复说这个 bug 已经在 2.6.32-rc 以后的内核中修复。升级内核后此问题得以解决。
2.目前使用 2.6.32 内核测试,发现同时读写原始文件和克隆文件,有可能致使 syslogd 出错、文件系统没有响应。现在我还没有得到可靠的答复,但相关回复者基本怀疑是竞态问题。
有关 Btrfs 其它的高级特性我还没有详细测试。正在使用或打算使用 Btrfs 的朋友,也欢迎与我交流。




