25.1 ZFS 概述
ZFS 简史与 Solaris 兴亡
ZFS 最早源于 SUN 公司,是为了取代 Solaris(早期曾用名 SunOS)上的 UFS 文件系统所开发的。SunOS 和 BSD Unix 的关键开发者之一是 Bill Joy,他也是 SUN 的创始人之一。SunOS 早期基于 BSD Unix 开发,后转向 SVR4(Unix System V Release 4,即转向与 AT&T 合作)。
ZFS 于 2005 年 11 月 1 日(revision 789)以 CDDL(Common Development and Distribution License, 通用开发及发行许可)开源到了 OpenSolaris 项目中。
在 2007 年,ZFS 在 FreeBSD 7.0(pool v6)中以实验状态正式发布,在 FreeBSD 8.0(2009 年, pool v13)中宣布为生产就绪状态。
2009 年 4 月 Oracle 收购 SUN 之后,Solaris 项目(易名为 Oracle Solaris)及 ZFS(易名为 Oracle Solaris ZFS)进入闭源开发模式,OpenSolaris 社区管理委员会于 2010 年 8 月自行解散(revision 13149, pool v28)。OpenSolaris 的主要社区开发力量迁移到了新分支 illumos 项目 中。从此以后,Oracle Solaris ZFS 与社区版本开始分支。
目前 illumos 类似 Linux Kernel 的开发模式,衍生出了 OpenIndiana、OmniOS 等十余款发行版。但从实际的代码提交量来看(年平均代码提交次数在 150 上下),illumos 的开发一蹶不振,直到如今仍未走出阴影。
2011 年 2 月,FreeBSD 采用了 ZFS pool v15,这是 2009 年 10 月随 Solaris 10 update 8 分发的版本。
2011 年 11 月,Oracle Solaris 11 发布。ZFS pool v31。
在 OpenSolaris 关停 3 年后(2013),ZFS 的主要开发者迁移到了 ZFSonLinux,后重命名成为如今的 OpenZFS。OpenZFS 旨在统一 ZFS 的开源开发(此前还有若干类似移植到 Linux 目的的项目)。由于 Oracle Solaris ZFS 的闭源开发,OpenZFS 很难再兼容 Oracle Solaris ZFS。
“时来天地皆同力,运去英雄不自由。”([唐] 罗隐《筹笔驿》)OpenZFS 新功能的主要开发商 Delphix 公司(Delphix 在 2024 年 2 月被 Perforce Software 收购),将其设备的操作系统从 illumos 迁移到了 Linux。所以基本上放弃了对前者的投入。其理由是所有的云平台厂商和虚拟机平台几乎仅支持 Linux。因此 illumos 几乎再难得到投入。就连 Oracle Solaris 本身也进入了维护模式(11.4 生命周期可到 2037 年)。Oracle ZFS 则迁移到了企业级存储解决方案 Oracle 存储,名字里都把 Solaris 删掉啦。
illumos 版本 ZFS(其主要开发仍由 OpenZFS 推动)得到的功能更新日趋减少,FreeBSD 对该版本 ZFS 的维护难度也不断上升,当 ZFS 出现新功能时往往要先等待使其合并到 illumos,再回溯到 FreeBSD 中。但 illumos 的开发业已基本停滞。2018 年 8 月,FreeBSD 项目开始研究如何将 FreeBSD ZFS 由 illumos 迁移到直接上游 OpenZFS。
OpenZFS 是在 13.0(2021 年 4 月)引入 FreeBSD 的,“ZFS 的实现现由 OpenZFS 提供。9e5787d2284e(由 iXsystems 赞助)”取代了 OpenSolaris/illumos 版本的 ZFS。
目前 OpenZFS 代码提交量的首位成员属于美国劳伦斯利弗莫尔国家实验室(LLNL),OpenZFS 由其主导开发。LLNL 的核心职责是确保美国国家核威慑的安全、可靠和有效。
SUN 原意是太阳,太阳虽有西落,但同时太阳也在地球的又一侧东升。
参考文献
The Future of ZFS in FreeBSD,Oracle 闭源后的 FreeBSD 项目的 PPT 报告,描述了一些时间节点和开发人员。
Comprehensive changes for vendored openzfs,切换至 openzfs 的提交的代码审查过程
9e5787d2284e,在 GitHub 浏览更直观
History,OpenZFS 项目历史
Add support for FreeBSD,向 OpenZFS 提交对 FreeBSD 的支持
Debugging ZFS: From Illumos to Linux by Serapheim Dimitropoulos,Delphix 迁移到 Linux 使 ZFS 开发集中于 Linux 平台
红帽与实验室携手打造全球性能最强的超级计算机 指出劳伦斯利弗莫尔国家实验室(LLNL)自 2001 年起就一直与红帽保持紧密合作,并大规模使用 Linux。
Oracle and Sun System Software and Operating Systems Oracle Lifetime Support Policy,oracle 产品支持周期,Oracle Solaris 在第 41 页。
许可证问题
之所以不直接将 ZFS 纳入到 Linux 内核树内,是因为 Linux kernel 采取 GPLv2,而 ZFS 采取 CDDL。正如 GPLv2 与 GPLv3 不兼容那样,GPLv2 与 CDDL 许可证产生了冲突:双方各要求对单体传染自己的强著作权条款(copyleft 条款),而这是矛盾的,其不可能持有这种双许可证。同时 Linus 本人对 ZFS 始终持有负面看法。
思考题
阅读 GPLv2 和 CDDL 许可证的原文或译文。
1.解释为什么二者存在冲突?
2.如果仅从许可来看,自由软件基金会称任何树外模块都是不合规的
当然最后要看法院的意见,Ubuntu ZFS 模块即是一例。那么,这是否能反证整个 Linux 内核都是以 GPLv2 授权的?
潜能与现实
ZFS 往往要经过一番调优才能将其超越性的潜能变为现实。这也是其在各种文件系统性能测试中表现不佳甚至名落孙山的核心原因,而调优往往是个性化的(高度依赖具体环境和使用需求)难以给出通用指南,因此在某种程度上,ZFS 并不属于开箱即用型文件系统。这并非是为其在测试中的表现找理由,而是因为 ZFS 相关文档几乎不存在。
在市面上可用的文档几乎只有 Oracle Solaris 管理:ZFS 文件系统,而且由于后期 Oracle ZFS 闭源开发,此文档的后续版本也不再有实际指导价值,甚至也没有提供中文版本了。就此文档本身来说,没有体现出也不可能体现出 OpenZFS 近十五年来的任何开发进程,因为它是在 OpenZFS 项目开始之前就撰写好的。OpenZFS 项目对文档项目从现实来看是丝毫不关心。因此缺乏可靠可信的 ZFS 指南是一大痛点。
笔者还注意到,市面上还有两本 FreeBSD Mastery: ZFS 和 FreeBSD Mastery: Advanced ZFS,但是不具有任何实用性。在《FreeBSD 操作系统设计与实现(第二版)》中对 ZFS 有一些原理性描述,但是仍对调优不具有直接性的指导意义。因此,无论是英语世界还是中文世界,都缺乏一本可靠可信的 ZFS 文档来指导生产。
同时我们也注意到,ZFS 主要是大型企业或国家机构内部使用,因此笔者相信他们是有相关文档的,只是难以分享或无暇整理。笔者期待在不久的将来,能够有一本 ZFS 书籍来将 ZFS 的潜能重新变为现实。
技巧
ZFS 有多种实现,其功能差异对比表参见 Feature Flags。
附录
ZFS 并不使用
/etc/fstab,但是 EFI、Swap 仍然使用。
最后更新于
这有帮助吗?