共计 2292 个字符,预计需要花费 6 分钟才能阅读完成。
导读 | 今天,我们来看看 ZFS,一个高级文件系统。我们将讨论它来自哪里,它是什么,以及为什么它在技术人员和企业中如此受欢迎。虽然我来自美国,但我更喜欢用 ZedFS 而不是 ZeeFS 发音,因为它听起来更酷。你可以随意发音。 |
Z 文件系统(ZFS)由 Matthew Ahrens 和 Jeff Bonwick 于 2001 年创建.ZFS 旨在成为 Sun Microsystems 的 OpenSolaris 的下一代文件系统。2008 年,ZFS 被移植到 FreeBSD。同年,一个项目开始将 ZFS 移植到 Linux。但是,由于 ZFS 根据与 GNU 通用公共许可证不兼容的通用开发和分发许可证进行许可,因此它不能包含在 Linux 内核中。为了解决这个问题,大多数 Linux 发行版提供了安装 ZFS 的方法。
甲骨文收购 Sun Microsystems 后不久,OpenSolaris 成为了密切的来源。ZFS 的所有进一步开发也成为封闭源。ZFS 的许多开发人员对这一转变事件感到不满。由于这一决定,三分之二的核心 ZFS 开发者,包括 Ahrens 和 Bonwick,离开了 Oracle。他们与其他公司一起在 2013 年 9 月创建了 OpenZFS 项目。该项目率先开展了 ZFS 的开源开发。
让我们回到上面提到的许可证问题。由于 OpenZFS 项目与 Oracle 是分开的,因此有些人可能想知道为什么他们不会将许可证更改为与 GPL 兼容的东西,因此它可以包含在 Linux 内核中。根据 OpenZFS 网站的说法,更改许可证将涉及将任何贡献代码的人联系到当前的 OpenZFS 实施(包括初始的,常见的 ZFS 代码,直到 OpenSolaris)并获得他们更改许可证的许可。由于这项工作几乎不可能(因为一些贡献者可能已经死亡或很难找到),他们决定保留他们拥有的许可证。
正如我之前所说,ZFS 是一个高级文件系统。因此,它有一些有趣的功能。如:
让我们分解一下这些功能。
与大多数文件系统不同,ZFS 结合了文件系统和卷管理器的功能。这意味着与其他文件系统不同,ZFS 可以创建跨越一系列驱动器或池的文件系统。不仅如此,您还可以通过添加其他驱动器将存储添加到池中。ZFS 将处理分区和格式化。
Copy-on-write 是另一个有趣(而且很酷)的功能。在大多数文件系统上,当数据被覆盖时,它将永远丢失。在 ZFS 上,新信息被写入不同的块。写入完成后,文件系统元数据将更新为指向新信息。这可确保在写入过程中如果系统崩溃(或其他事情发生),旧数据将被保留。这也意味着系统崩溃后系统不需要运行 fsck。
Copy-on-write 引入另一个 ZFS 功能:快照。ZFS 使用快照来跟踪文件系统中的更改。“快照包含文件系统的原始版本,实时文件系统包含自拍摄快照以来所做的任何更改。没有使用额外的空间。当新数据写入实时文件系统时,会分配新块来存储此数据。“删除文件后,也会删除快照引用。因此,快照主要用于跟踪文件的更改,但不包括文件的添加和创建。
快照可以以只读方式挂载,以恢复文件的过去版本。也可以将实时系统回滚到先前的快照。自快照以来所做的所有更改都将丢失。
每当将新数据写入 ZFS 时,它都会为该数据创建校验和。读取该数据时,将验证校验和。如果校验和不匹配,则 ZFS 知道已检测到错误。然后,ZFS 将自动尝试更正错误。
ZFS 可以处理 RAID 而无需任何额外的软件或硬件。不出所料,ZFS 有自己的 RAID 实现:RAID-Z。RAID- Z 实际上是 RAID- 5 的一种变体。但是,它旨在克服 RAID- 5 写入孔错误,“其中数据和奇偶校验信息在意外重启后变得不一致”。要使用基本级别的 RAID-Z(RAID-Z1),您需要至少两个磁盘用于存储,一个用于奇偶校验。RAID-Z2 至少需要两个存储驱动器和两个用于奇偶校验的驱动器。RAID-Z3 至少需要两个存储驱动器和三个用于奇偶校验的驱动器。当驱动器添加到 RAID- Z 池时,它们必须以 2 的倍数添加。
创建 ZFS 时,它被设计为文件系统中的最后一个单词。在大多数 64 位文件系统的时候,ZFS 创建者决定直接跳到 128 位以便将来证明它。这意味着 ZFS“提供的容量是 32 或 64 位系统的 16 亿亿倍”。事实上,Jeff Bonwick(其中一位创始人)表示,为一个“完全填充 128 位存储池提供动力,实际上需要比沸腾海洋更多的能量。”
如果你想开箱即用 ZFS,就需要安装 FreeBSD 或使用 illumos 内核的操作系统。illumos 是 OpenSolaris 内核的一个分支。
事实上,对 ZFS 的支持是一些有经验的 Linux 用户选择 BSD 的主要原因之一。
如果要在 Linux 上尝试 ZFS,则只能将其用作存储文件系统。据我所知,没有 Linux 发行版为您提供了在开箱即用的基础上安装 ZFS 的选项。如果您有兴趣在 Linux 上尝试 ZFS,那么 Linux 上的 ZFS 项目有很多关于如何做到这一点的教程。
本文介绍了 ZFS 的优点。现在让我告诉你一个 ZFS 的快速问题。使用 RAID- Z 可能会很昂贵,因为您需要购买多少驱动器来添加存储空间。
你曾经使用过 ZFS 吗?你的经历是什么样的?请在下面的评论中告诉我们。