测试数据及结论分析
首先是 Apache 服务器测试,和 EXT4 和 Btrfs 相比使用 ZFS-FUSE 的结果有很大的性能降低。在 Ubuntu Linux 上使用 ZFS-FUSE 在每秒内能够处理的请求数量比用 Ubuntu Lucid Lynx 默认的文件系统 EXT4 低了 42%。
在 PostgreSQL 工作负荷测试中 EXT4 的性能比在 Linux 用户空间中测试的 ZFS 文件系统快了 5 倍有余。最新的 ZFS-FUSE 0.7 版本的 ZFS-FUSE Git 代码比 ZFS-FUSE 0.6.9 性能提高了 6%,但不明显,这无法与填补与 EXT4 性能之间的差距。有趣的是,ZFS-FUSE 的性能实际上比 Btrfs 要好,不过据称目前在 Btrfs 上的 PostgreSQL 服务器性能是众所周知的糟糕。我们成功地在 OpenSolaris b134 的 ZFS 中运行了测试项目,它比 Linux 上的 ZFS-FUSE Git 代码快了 61%。
PostgreSQL 磁盘性能测试中 EXT4 比 ZFS-FUSE 快了 6 倍多,不过在 PostMark 电子邮件服务器性能测试中则高出了 8 倍。在 OpenSolaris 上的 ZFS 性能比 ZFS-FUSE 0.6.9 快了一倍,实际上正好比它的两倍少那么一点。虽然 ZFS 是为 OpenSolaris 设计的,但它也只能够达到 Btrfs 31% 的速度,仅有 EXT4 22% 的速度。
Btrfs 在 SQLite 测试(与 PostgreSQL PGbench 类似)中只得了个安慰奖,不过广泛流行的 EXT4 文件系统还是几乎比 Linux 上的 ZFS-FUSE 快了一倍。
EXT4、Btrfs 和 OpenSolaris 上的 ZFS 都运行得不错,比分接近,然而 ZFS-FUSE——0.6.9 稳定版和 0.7.0 开发最新版——都被甩在了后面。
Btrfs 在这一测试中比 ZFS-FUSE 快了 2 倍,而 EXT4 则甩开了它们 3 又三分之一倍。在 OpenSolaris 上的原生 ZFS 的性能和 Linux 2.6.36 内核上的 Btrfs 势均力敌。
ZFS 阵营,无论是 ZFS-FUSE 还是 OpenSolaris 上的 ZFS,在遇到多线程随机写入测试时都完败。Btrfs 的速度是 ZFS-FUSE 的 24.47 倍,后者在随机写入时只能达到 5MB/s 的速度。
当测试以 64Kb 大小的块的 IOzone 写入 8GB 数据时,EXT4 和 Btrfs(译者注:此处疑为笔误)的速度为 ZFS-FUSE 的 1.64~1.67 倍。
最后一项测试,使用 IOzone 读取 8GB 数据中,ZFS-FUSE 的磁盘读取性能结果实际上和 EXT4 和 Btrfs 相近,不过那是因为 ZFS 模块在读取时使用了缓存的缘故。
鉴于一些 Phoronix Premium成员要求在文件系统测试中同时提供 CPU 占用的结果,本文接下来就提供这些信息。
如上图所示,英特尔 Core i7 的 CPU 使用量在使用 Linux 的 ZFS-FUSE 或运行 OpenSolaris 使用原生 ZFS 支持时都较低。
虽然在 PostMark 测试中使用 ZFS-FUSE 的 CPU 负荷较低,差距也仅仅是百分之几而已。在运行 Apache 时,ZFS-FUSE 的 CPU 负载大幅提高,比原生的 Linux 文件系统高了许多,几乎是其 3 倍多。
在使用 Linux 的 ZFS-FUSE 时一定会引起性能损失,要看你是否利用到甲骨文(Oracle)/Sun 的 ZFS 文件系统中的其他特性才能决定这点性能差距是否值得。即使是在最新的 Linux 2.6.36 内核上的最新的稳定版和不稳定版 ZFS-FUSE,在使用用户空间的 ZFS 时都会有明显的性能损失。
不过我们对劳伦斯利弗莫尔国家实验室或者 KQ Infotech 带来的原生 ZFS Linux 模块与 ZFS-FUSE 相比性能如何很感兴趣。就算是 OpenSolaris 上原生的 ZFS 模块都无法与 Linux 和 EXT4/Btrfs 的组合比肩,所有我们将要看到的原生 ZFS Linux 的结果一定很有意思。也有人会争辩说那些兼容 OpenSolaris 的测试项目的结果是被 Solaris Nevada 内核的其他部分产生的瓶颈所影响了,但即使是在 FreeBSD 上的 ZFS 也比 EXT4 和 Btrfs 文件系统要慢。原生ZFS 的测试代码约在十月慕尼黑啤酒节之前发布。