关于云计算:终于有人把-ZFS-文件系统讲明白了

40次阅读

共计 3204 个字符,预计需要花费 9 分钟才能阅读完成。

本文次要介绍高级文件系统 ZFS,将探讨它的起源、它是什么以及为什么它在技术人员和企业中如此受欢迎。

留神: 本文屡次提到 ZFS,当谈到 ZFS 性能和装置时,其实说的是 OpenZFS。自从 Oracle 进行对 OpenSolaris 更新代码之后 [1],ZFS(由 Oracle 开发)和 OpenZFS 遵循了不同的门路。

ZFS 的历史

ZFS 文件系统在 2001 年由 Matthew Ahrens 和 Jeff Bonwick[2] 创立。ZFS 旨在成为 Sun Microsystems Solaris 操作系统 [3] 的下一代文件系统。2008 年,ZFS 被移植到 FreeBSD,同年开始将 ZFS 移植到 Linux[4] 中。然而,因为 ZFS 是依据 Common_Development_and_Distribution_License(CDDL)[5] 开发的,该许可证与 GNU General Public License (GPL)[6] 不兼容,因而它不能蕴含在 Linux 内核中。为了解决这个问题,大多数 Linux 发行版都提供了装置 ZFS 的办法。

在 Oracle 收买 Sun Microsystems 后不久,OpenSolaris 就成为了闭源。ZFS 的所有后续开发也变成了闭源。过后 ZFS 的许多开发人员对这一转变感到不满,于是大概三分之二的 ZFS 外围开发人员(包含 Ahrens 和 Bonwick)来到了 Oracle。他们于 2013 年 9 月退出其余公司并创立了 OpenZFS 我的项目 [7],该我的项目引领了 ZFS 的开源。

让咱们回到下面提到的许可证问题。因为 OpenZFS 我的项目与 Oracle 离开,有些人可能想晓得为什么他们不将许可证更改为与 GPL 兼容的许可证,以便将其蕴含在 Linux 内核中。依据 OpenZFS 网站介绍 [8],更改许可证将要分割所有为 OpenZFS 奉献过代码的人(蕴含 OpenSolaris 之前的初始通用 ZFS 代码)并取得他们对更改许可证的批准。因为这项工作简直是不可能实现的(因为一些贡献者可能曾经死亡或很难找到),他们决定保留原来的许可证。

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

正如我后面提到的,ZFS 是一种高级文件系统。因而,它具备一些乏味的性能 [9]。如:

存储池

  • 写时拷贝
  • 快照
  • 数据完整性验证和主动修复
  • RAID-Z
  • 最大 16 EiB(2^64byte,即 16x1024x1024TB)的文件大小
  • 最大 256 ZiB(2^78byte)存储

存储池

与大多数文件系统不同,ZFS 联合了文件系统和卷零碎管理器的性能。这意味着与其余文件系统不同,ZFS 能够创立逾越一系列驱动器或池的文件系统。不仅如此,还能够通过增加另一个驱动器将存储增加到池中。ZFS 将解决分区和格式化 [10]。

ZFS 中的存储池

写时拷贝

写时拷贝 [11] 是另一个乏味(而且很酷)的性能。在大多数文件系统上,当数据被笼罩时,它会永远失落。在 ZFS 上,新信息被写入不同的块,写入实现后,文件系统元数据将更新以指向新信息。这确保如果在写入过程中零碎解体(或产生其余事件),旧数据将被保留,这也意味着零碎在解体后不须要运行文件系统查看 fsck (file system check)[12]。

快照

写时拷贝导致另一个 ZFS 性能:快照。ZFS 应用快照来跟踪文件系统中的更改。“快照蕴含文件系统的原始版本,实时文件系统蕴含自快照以来所做的任何更改,不应用额定的空间。当新数据写入实时文件系统时,会调配新块来存储这些数据。”如果文件被删除,快照援用也会被删除。因而,快照次要用于跟踪文件的更改,而不是文件的增加和创立。

快照可能以只读形式挂载以复原文件的过来版本,还能够将实时零碎回滚到以前的快照。一旦快照没了,所有更改都将失落。

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

每当新数据写入 ZFS 时,它都会为该数据创立校验和(checksum)。当读取该数据时,校验和被验证。如果校验和不匹配,则 ZFS 晓得已检测到谬误。而后 ZFS 将主动尝试更正谬误。

RAID-Z

ZFS 无需任何额定的软件或硬件即可解决磁盘阵列 RAID(Redundant Arrays of Independent Disks)。ZFS 有本人的 RAID 实现:RAID-Z。RAID-Z 实际上是 RAID-5 的变体,为了克服 RAID-5 的 WriteHole 问题,即“意外重启后数据和奇偶校验信息变得不统一”。要应用根本的 RAID-Z (RAID-Z1)[13],至多须要 2 块磁盘用于存储,1 块磁盘用于奇偶校验 [14]。RAID-Z2 至多须要 2 个存储驱动器和 2 个用于奇偶校验的驱动器。RAID-Z3 则至多须要 2 个存储驱动器和 3 个用于奇偶校验的驱动器。将驱动器增加到 RAID-Z 池时,它们必须以 2 的倍数增加。

微小的存储后劲

ZFS 在创立之初,就被设计为最初一代文件系统 [15]。在大多数文件系统都是 64 位的时候,ZFS 创建者决定间接跳到 128 位以备将来验证。这意味着 ZFS“提供了 32 位或 64 位零碎容量的 160 亿倍”。事实上,Jeff Bonwick 示意,“要填满一个 128 位的文件系统,将耗尽地球上所有存储设备。除非你领有煮沸整个陆地的能量,不然你不可能将其填满”[16]。“fully populating a 128-bit storage pool would, literally, require more energy than boiling the oceans.”

如何装置 ZFS?

如果想开箱即用地应用 ZFS,则须要装置 FreeBSD[17] 或应用 illumos 内核的操作系统。illumos[18] 是 OpenSolaris 内核的一个分支。

事实上,对 ZFS 的反对是一些有教训的 Linux 用户抉择 BSD [19] 的次要起因之一。

如果想在 Linux 上试用 ZFS,能够将其用作存储文件系统。最近,Ubuntu 19.10 引入了在根目录上开箱即用装置 ZFS 的性能。浏览无关在 Ubuntu 上应用 ZFS[20] 的更多信息。如果有趣味在 Linux 上尝试 ZFS,Linux 我的项目上的 ZFS 有许多教程。

参考链接:

【1】https://itsfoss.com/solaris-a…

【2】https://wiki.gentoo.org/wiki/ZFS

【3】https://en.wikipedia.org/wiki…

【4】https://zfsonlinux.org/

【5】https://en.wikipedia.org/wiki…

【6】https://en.wikipedia.org/wiki…

【7】http://www.open-zfs.org/wiki/…

【8】http://www.open-zfs.org/wiki/…

【9】https://wiki.archlinux.org/in…

【10】https://www.howtogeek.com/175…

【11】https://www.freebsd.org/doc/h…

【12】https://linuxhandbook.com/fsc…

【13】https://wiki.archlinux.org/in…

【14】https://www.pcmag.com/encyclo…

【15】https://web.archive.org/web/2…

【16】https://blogs.oracle.com/bonw…

【17】https://www.freebsd.org/

【18】https://wiki.illumos.org/disp…

【19】https://itsfoss.com/why-use-bsd/

【20】https://itsfoss.com/zfs-ubuntu/

【21】原文链接:https://itsfoss.com/what-is-zfs/

作者

John Paul

本文由博客一文多发平台 OpenWrite 公布!

正文完
 0