【IT168 专稿】原生支持Linux 的ZFS将很快发布,它是由劳伦斯利弗莫尔国家实验室(Lawrence Livermore National Laboratory)研制的将Sun 的 ZFS 文件系统以 CDDL 许可内核模块的方式移植到 Linux 上的项目。
不过就在发表该文章时,已经有可用的 FUSE(用户空间的文件系统)的 ZFS 模块了,而且由于它并非属于 Linux 内核的 GPL 范畴,所以可以合法地使用,不过它并没有带来什么性能上的提升。但在上周末在相关论坛和其他地方上出现了一些关于 ZFS-FUSE 的可靠性以及使用 FUSE 对于在实际硬件中使用会造成什么程度的影响的讨论。
测试说明及测试环境
最近国外有网站测试了 ZFS-FUSE——最近的稳定版和 Git 最新版——并将这个 ZFS Linux 移植的可选方案与原生的 EXT4 和 Btrfs 作了对比。我们将测试结果编译过来,以飨国内读者。
对于那些并不熟悉 GPL 许可的 Linux FUSE 模块的读者,应该了解它是从 Linux 2.6.14 版本开始出现在内核主分支中的 Linux 内核模块,它允许没有权限的用户通过 FUSE 模块在用户空间中创建他们自己的文件系统,接着提供与 Linux 内核交互的桥梁。
FUSE 也可以用于 BSD、OpenSolaris 和 Mac OS X 操作系统中。当使用用户空间中的 FUSE 文件系统时,它们并不需要遵守 GNU GPL,因为只有 FUSE 模块被加载到 Linux 内核上面,不过这样的连接方式会造成额外的效率损失。除了 ZFS-FUSE,还有几十种其他的 FUSE 文件系统,包括 ClamFS、httpFS、ChunkFS、vmware-mount,以及 GnomeVFS2 FUSE。
最新版本的 ZFS-FUSE 是 0.6.9 版,基于 Zpool 23 版本(比目前 LLNL/KQ Infotech 使用的 Zpool 18 好得多,带有过去 18 个版本的补丁并添加了类似重复数据删除(de-duplication)支持这样的功能),并支持 NFS 共享、PowerPC 架构、多线程 ioctl 管理,以及其他的改进。ZFS 0.7.0 是目前还在开发中的版本,预计在 10 月初发布。在我们的 ZFS-FUSE 测试中,测试使用最新的稳定版 0.6.9 版和 0.7.0 Git 最新版,后者为 2010-08-28 的 Git 软件库中的最新官方代码。
KQ Infotech 是一家根据劳伦斯利弗莫尔国家实验的代码开发原生 ZFS 模块支持的公司,它称 FUSE 为“垃圾”。还有人认为“效率太差”或者“它与健全的原生内核支持相差十万八千里”。也有许多使用 FUSE 的支持者表示:“而且,他们发表一些堂皇的言论,否认基于 fuse 的文件系统的可行性,说实话,这些都是一派胡言。没错,zfs-fuse 文件系统可能会比较慢……但只是在旧版本的内核上。
这些问题造成的局限性已经被解决了。zfs-fuse 在正确配置下性能几乎和原生支持一样好!而且通过 fuse 的方式解决了主要的版权问题。这是双赢的!所以你就能容忍论坛上这边出来了一个人,胡言乱语一通,却没有提供任何实证,却希望所有人都和他一样疯疯癫癫?他们想做的仅仅是炒作……给那些注定失败的东西炒作。炒作成大新闻。”这些针对 ZFS-FUSE 的热火朝天的两极化观点使得测试团队在测试原生 ZFS Linux 支持之前先测试一下它。
进行ZFS-FUSE 测试的硬件配置包括一块超频到 3.60GHz 的英特尔(Intel)Core i7 920 CPU、一块 ASRock X58 SuperComputer 主板、3GB 的 DDR3 系统内存、一快 60GB 的 OCZ Vertex 2 SSD 硬盘,以及一块 ATI Radeon HD 4670 显卡。
为了这次 ZFS-FUSE测试,测试团队安装了原版的 Ubuntu 10.04.1 LTS(x86_64)并安装了最新的 2010-08-26 的 Linux 2.6.36 的 Git 代码。并将 Phoronix 测试套件安装并运行于 OCZ Vertex 2 SSD 硬盘的第二个分区中,分别以 EXT4、Btrfs、ZFS-FUSE 0.6.9,以及 ZFS-FUSE 0.7.0(Git 2010-08-26)测试。接着,测试团队安装了 OpenSolaris b134 来测试它在 OCZ 固态硬盘上的原生 ZFS 支持。所有测试由 Phoronix 测试套件进行。