ZFS:正在走向您附近的 Linux?

感觉就像昨天我才读了 Jeff Bonwick 的博客文章“ZFS:文件系统的终极之作”。那是 2005 年的万圣节,ZFS 完全集成到了 Sun Microsystem 的 Solaris 中,并且该文件系统受到了广泛好评。对于不熟悉 ZFS 的读者来说,它是一个结合了通用文件系统和卷管理器的系统。它简化了数据存储管理,同时还提供了当时最先进的功能。这些技术包括带有软件 RAID 支持的驱动器池、文件快照、内联数据压缩、数据重复数据删除、内置数据完整性、高级缓存(到 DRAM 和 SSD)等等。如今,ZFS 商标和技术归 Oracle 公司所有和维护。

同样在 2005 年,Sun Microsystems 推出了 OpenSolaris。OpenSolaris 现在是一个已 defunct 的项目,它是一个完全功能性的 Solaris 操作系统,完全由开源构建,其中包括 ZFS,所有这些都重新许可为通用开发和发行许可证 (CDDL),这是一个基于 Mozilla 公共许可证 (MPL) 的弱 copyleft 许可证。虽然是开源的,但 CDDL 下的 ZFS 和任何其他东西过去是,并且据推测现在仍然与 GNU 通用公共许可证 (GPL) 不兼容。这包括 Linux 内核,最终将导致 Btrfs 的诞生。

为了避免许可侵权,ZFS on Linux 的最早版本是为用户空间文件系统 (FUSE) 编写的。这阻止了该技术触及 Linux 内核。它也增加了很多限制。由于在用户空间中,它永远无法真正与 Solaris 和 FreeBSD 的同类产品相媲美。随着时间的推移,一些 FUSE 实现被严重忽视,在某些情况下被放弃。2008 年,“ZFS on Linux”项目通过开发 ZFS 的内核内实现改变了一切。自构思以来,该项目遭到了 Linux 社区内部的许多抵制(和批评),所有这些都与许可有关。

快进到现在,两个发行版对这一现状提出了挑战。上个月,Ubuntu Linux 发行版的母公司 Canonical 发布了最新的 Ubuntu 16.04,代号为 Xenial Xerus。此版本最值得注意的补充之一是完全集成了预构建的 ZFS 模块。虽然 Canonical 现在发布带有 ZFS 的 Ubuntu,但它已公开声明其法律团队并未看到违反 GPL 的行为。此事仍在争论中。

紧随其后,通过一项独立且完全无关的努力,Debian 发行版宣布包含 ZFS 源代码,可通过动态内核模块支持 (DKMS) 框架构建。但是,它未在“main”部分存档中提供,而是在“contrib”中提供。在软件自由法律中心的法律建议下,这种方法被认为不违反 GPL 许可证。

虽然包含 ZFS 本身就是一项成就,但它仍然不如 Solaris 上的 ZFS。很容易被 Solaris 中的 ZFS 所吸引。它完全融入了 Solaris 生态系统,从启动环境到用户体验。首先想到的是其可自定义的快照支持。快照是特定系统在特定时间点的状态。在 ZFS 的情况下,此概念针对文件级别状态。ZFS 使用写入时复制事务模型。包含活动数据的数据块永远不会就地覆盖。对于每次写入,都会分配一个新的数据块,并将修改后的数据写入其中。引用原始数据块的所有元数据块也会更新以反映此更改,然后重新分配,保持原始元数据内容在其原始位置未修改。这种方法使得启用文件快照成为可能。

图 1. 通过时间滑块管理器进行快照自定义

例如,借助可写快照支持,Solaris 简化了损坏操作系统的恢复,通过使用特定于启动环境的实用程序 (beadm),可以轻松启动到先前正常工作的操作系统快照映像,并将其重新配置为默认启动映像。该过程相对轻松。

Time Slider 可视化功能内置于 GNOME 桌面环境的官方文件管理器 Nautilus 中。启用快照后,用户可以导航到启用的目录并单击 Time Slider 框,然后将生成在该特定目录上拍摄的所有快照的可视化表示。

图 2. 使用 Nautilus 显示当前快照可视化

假设您需要文档的早期版本或检索现在已删除的文件。使用时间滑块,您可以及时回溯并轻松地做到这一点。

图 3. 使用 Nautilus 显示过去快照可视化

这些例子仅仅触及了 ZFS 如何集成到 Solaris 的表面。无论如何,最终,这些是我真希望在 Linux 发行版中看到的一些功能。

虽然开局前景光明,但 ZFS on Linux 的未来仍然不明朗。其他发行版是否会至少效仿这两个例子之一?如果是这样,这些发行版将如何拥抱 ZFS?

Petros Koutoupis,LJ 特约编辑,目前是 Cray 公司 Lustre 高性能文件系统部门的高级性能软件工程师。他还是 RapidDisk 项目的创建者和维护者。Petros 在数据存储行业工作了十多年,并帮助开创了当今广泛使用的许多技术。

加载 Disqus 评论