ZFS文件系统:Linux,让我们约会在9月
如果你是 FreeBSD 或 Solaris 用户的话,一定对 ZFS 有所了解,这是由 SUN ( 现在被 Oracle 合并了)开发的一款新型文件系统,应用在 Solaris 上,后来被移植到了 FreeBSD 和 NetBSD 等系统上。很多人称 ZFS 为终极文件系统,因为 ZFS 代表” last word in file system “,Z 是字母表的最后一个字,意思是此后再也不需要开发其他的文件系统了。 事实上,ZFS 的确带来了很多崭新的观念,对文件系统来讲是一个划时代的作品。
面对这样一个强大的文件系统,当然 Linux 社区也并没有闲着,他们因而推出了 Btrfs 文件系统,有趣的是这也是由 Oracle 发起开发的,关于 BTRFS 的详细介绍可以看这篇文章”新一代 Linux 文件系统 btrfs 简介“。BTRFS 初始目标是取代 Linux 目前的 ext3/4 文件系统,不过通过比较,你会发现 BTRFS 和 ZFS 在很多特性上非常的类似,比如具备相当强的可扩展性、支持 Snapshots 、内置卷管理功能等等。
另外,说到 BTRFS ,这里要插播一下,根据 Ubuntu 开发团队称,由于没有充足的时间,无法完成余下的 BTRFS 开发工作,因此也就是说在 10.10 中将不会完全支持 BTRFS 。
OK ,我们继续说 ZFS 。虽然 Linux 社区已经有了 BTRFS 用来作为对 ZFS 的回应了,但前段时间有消息传出称有开发团队(来自印度的 KQ Infotech 公司) 开始着手移植 ZFS 到 Linux 系统上,这个项目的主页在这里:Native ZFS for Linux 。事实上早在这之前就有一个基于 FUSE 框架的 ZFS for Linux 项目,但它是用户级的 ZFS 文件系统,性能上要逊色很多,所以 Native ZFS for Linux 项目的目的之一也就是要取代这个 ZFS-FUSE ,为 Linux 提供原生的 ZFS 支持。(相关报道:6月第3周系统升级录:ZFS与Linux文件系统的变革)
但问题是,由于 Linux Kernel 用的是 GPL 许可协议,而 ZFS 则是基于 Sun 的 CDDL 许可协议,由于这两个许可协议存在着不兼容性,随之而来的就是版权问题。所以为了解决版权问题,这个 Native ZFS for Linux 项目将会以内核模块的形式进行分发,同时版权许可与 ZFS 一样也基于 CDDL 协议。
而根据 Phoronix 的报道,开发 Native ZFS for Linux 项目的 KQ Infotech 公司将于下个月 ( 大约为 9 月 15 日左右) ,会正式发布一个完全可用的 Linux Kernel ZFS 模块。这个 ZFS 模块基于 ZFS Pool 18 ,已经实现了 ZFS POSIX 层。但目前这个代码只支持 64 位 Linux 系统,同时他们还会发布适用于 Fedora 12 和 Red Hat Enterprise Linux 6 Beta 2 的 RPM 包。当然你也可以在 Ubuntu 10.04 LTS 上使用该模块,但必须要从源代码手工编译安装。
有关ZFS文件系统的使用方法,可以参考以下文章:
- 轻松玩转Solaris ZFS文件系统的备份恢复
- 全面了解Solaris 10 ZFS文件系统的管理
以下是来自Phoronix的详细报导:
本部分来源:http://linuxtoy.org/archives/linux-native-zfs-support-is-coming.html
美国Lawrence Livermore National Laboratory依据该实验室安全部门和美国能源部的一份协议开发了ZFS的Linux的原生支持,但此项目的代码并不可以直接使用——因其不提供POSIX接口。印度的Knowledge Quest Infotech公司则达到了该目标,他们从去年开始自己的移植工作。
早些时候KQ Infotech的Business Manager, Darshin Vyas,在Phonronix论坛中发出声明(此链接指向的讨论包含了比本文更加详尽的信息),该项目已接近Beta状态。
由于Solaris自身发布协议和专利纠纷的限制,此项目的代码仍是基于CDDL发布的,因而不会进入主线内核,故他们只会提供可以编译为内核模块的源代码,由最终用户自行“嵌入”GPL的内核,并且不使用任何GPL-only symbols,规避了GPL的Copyleft条款要求将非GPL程序嵌入GPL程序的行为人(此场合下即最终用户,无再发布的需要)分发程序必须以GPL发布的协议冲突问题(这是常见的GPL规避手段之一)。同时该公司似乎确信Oracle不会对他们采取法律行动。
代码预计在九月15日发布,将只能支持64位内核,同时将提供用于Fedora 12和Red Hat Enterprise Linux 6 Beta 2的RPM包。Ubuntu10.04亦可安装,但需自行编译,期待届时的Phoronnix的Ext4 & Btrfs V.S. ZFS on Linux测评。(译者私心希望有Reiser4出场,但按其进度——2.6.37才能进主线——来讲,属不可能。)
存在的问题:
KQ Infotech记的ZFS on Linux虽好,但不能确定其未来的法律风险,也不能指望得到Oracle/Sun的许可。由于上述的许可证纠纷,无论是官方内核还是主要的发行版都不可能采用它,任何人想用ZFS作为Linux的根文件系统的人都必须自己编译内核并自行处理安装问题。
同时其基于ZFS Pool 18,虽然较新,但非最新的21,故仍缺乏de-duplication support和其他一些在OpenSolaris解散前加入的更新颖的功能。只有X86-64支持,也进一步限制了其应用。同样令其前景模糊不清的是——KQ Infotech一直在关门开发,至今外界无法得到一行代码——该公司是会一直以自由许可提供该模块,还是会将其拿来用商业许可套现。
由于功能上与向ZFS看齐的Btrfs日趋完善,并正在成为Linux的下一代“标准”文件系统,所以如果这项工作早个两三年完成的话,重要性可能会比现在大。在Phoronix上个月进行的一系列测试:Running ZFS with CAM-based ATA、ZFS On FreeBSD vs. EXT4 & Btrfs On Linux、Btrfs, EXT4, & ZFS On A Solid-State Drive中,Ext4/Btrfs on Linux无论是机械硬盘还是固态硬盘性能都把ZFS on FreeBSD 8.1甩开了好几条街。虽然可以将之归咎为FreeBSD自身的瓶颈,但也很难指望ZFS在Linux上能比EXT4/Btrfs有什么性能优势(如果不说完全不可能的话)。
考虑到以上几点,这个模块可能用于尝鲜会很有趣,但不可能改变Linux文件系统的前景,它自身估计也只会在小范围内应用。
LLNL方面的情况:
劳伦斯—利物浦国家实验室(Lawrence Livermore National Laboratories)的Linux ZFS移植项目的领导人Brian Behlendorf向Phoronix方面提供了以下信息:
1.KQ Infotech的工作是基于LLNL的基础上的,具体来说是该实验室发布在Github上的SPL ZFS 0.4.9源代码。
2.Brian Behlendorf打算把KQ Infotech的改进合并回自己方面的代码库。
3.LLNL的ZFS移植最终会升级到onnv_147——Oracle废弃OpenSolaris之前的最后一版,不过这之前要花些时间,因为他们需要“维持现有的稳定性和Linux内核的可移植性。