什么是 ZFS? 为什么人们为之疯狂?

今天,我们将了解 ZFS,一种高级文件系统。 我们将讨论它来自哪里,它是什么,以及为什么它在技术人员和企业中如此受欢迎。

即使我来自美国,我更喜欢将其发音为 ZedFS 而不是 ZeeFS,因为它听起来更酷。 您可以随意发音。

注意:您会在文章中看到 ZFS 重复了很多次。 当我谈论功能和安装时,我指的是 OpenZFS。 自 Oracle 关闭 OpenSolaris 以来,ZFS(由 Oracle 开发)和 OpenZFS 遵循了不同的路径。 (稍后会详细介绍。)

ZFS 的历史

Z 文件系统 (ZFS) 由 马修·阿伦斯和杰夫·邦维克 2001 年。ZFS 被设计为下一代文件系统 太阳微系统公司 开放式Solaris. 2008 年,ZFS 被移植到 FreeBSD。 同年一个项目开始移植 ZFS 到 Linux. 但是,由于 ZFS 是根据 共同开发和发行许可证, 这与 GNU 通用公共许可证,它不能包含在 Linux 内核中。 为了解决这个问题,大多数 Linux 发行版都提供了安装 ZFS 的方法。

在甲骨文收购 Sun Microsystems 后不久,OpenSolaris 成为 close-来源。 ZFS 的所有进一步开发也都变成了封闭源代码。 ZFS 的许多开发人员对这一事件的转折感到不满。 三分之二的核心 ZFS 开发人员包括阿伦斯和邦威克在内的公司都因为这个决定离开了甲骨文。 他们加入了其他公司并创建了 OpenZFS 项目 2013年9月,该项目引领了ZFS的开源开发。

让我们回到上面提到的许可证问题。 由于 OpenZFS 项目与 Oracle 是分开的,有些人可能想知道为什么他们不将许可证更改为与 GPL 兼容的东西,以便将其包含在 Linux 内核中。 根据 OpenZFS 网站,更改许可证将涉及联系为当前 OpenZFS 实现贡献代码的任何人(包括 OpenSolaris 之前的初始通用 ZFS 代码)并获得他们更改许可证的许可。 由于这项工作几乎是不可能的(因为一些贡献者可能已经死去或很难找到),他们决定保留他们拥有的许可证。

什么是 ZFS? 它有什么特点?

正如我之前所说,ZFS 是一种高级文件系统。 因此,它有一些有趣的 特征. 如:

  • 池化存储
  • 写时复制
  • 快照
  • 数据完整性验证和自动修复
  • RAID-Z
  • 最大 16 Exabyte 文件大小
  • 最大 256 Quadrillion Zettabytes 存储

让我们分解其中的几个功能。

池化存储

与大多数文件系统不同,ZFS 结合了文件系统和卷管理器的功能。 这意味着与其他文件系统不同,ZFS 可以创建跨越一系列驱动器或池的文件系统。 不仅如此,您还可以通过添加另一个驱动器将存储添加到池中。 ZFS 将处理 分区和格式化.

ZFS 中的池化存储

写时复制

写时复制 是另一个有趣(而且很酷)的功能。 在大多数文件系统上,当数据被覆盖时,它就会永远丢失。 在 ZFS 上,新信息被写入不同的块。 写入完成后,文件系统元数据将更新以指向新信息。 这确保了如果在写入发生时系统崩溃(或发生其他事情),旧数据将被保留。 这也意味着系统不需要运行 fsck 系统崩溃后。

快照

写入时复制导致另一个 ZFS 功能:快照。 ZFS 使用快照来跟踪文件系统中的更改。 “快照 包含文件系统的原始版本,活动文件系统包含自拍摄快照以来所做的任何更改。 没有使用额外的空间。 随着新数据被写入实时文件系统,新的块被分配来存储这些数据。” 如果文件被删除,快照引用也会被删除。 因此,快照主要用于跟踪文件的更改,而不是文件的添加和创建。

快照可以以只读方式挂载以恢复文件的过去版本。 也可以将实时系统回滚到以前的快照。 自快照以来所做的所有更改都将丢失。

数据完整性验证和自动修复

每当将新数据写入 ZFS 时,它都会为该数据创建一个校验和。 当读取该数据时,校验和得到验证。 如果校验和不匹配,则 ZFS 知道已检测到错误。 然后 ZFS 将自动尝试更正错误。

RAID-Z

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 “提供 160 亿倍于 32 位或 64 位系统的容量”。 事实上,Jeff Bonwick(创作者之一)说过 那个动力 “完全填充一个 128 位存储池,从字面上看,比煮沸海洋需要更多的能量。”

怎样安装 ZFS?

如果您想开箱即用地使用 ZFS,则需要安装 自由BSD 或一个 使用 illumos 内核的操作系统. 照明 是 OpenSolaris 内核的一个分支。

事实上,对 ZFS 的支持是一些有经验的 Linux 用户选择 BSD 的主要原因之一。

如果您想在 Linux 上试用 ZFS,您可以将其用作您的存储文件系统。 最近,Ubuntu 19.10 引入了开箱即用在根目录上安装 ZFS 的功能。 阅读有关在 Ubuntu 上使用 ZFS 的更多信息。 如果您有兴趣在 Linux 上尝试 ZFS, Linux 项目上的 ZFS 有许多关于怎样做到这一点的教程。

警告

这篇文章歌颂了 ZFS 的好处。 现在让我告诉你一个关于 ZFS 的快速问题。 使用 RAID-Z 可能很贵 因为您需要购买驱动器数量来增加存储空间。

你用过 ZFS 吗? 你的经历是怎样的? 请在下面的评测中告诉我们。

如果您觉得这篇文章很有趣,请花一点时间在社交媒体、黑客新闻或 红迪网.


相关阅读:

Posted in: LinuxTags: