共计 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 公布!