云网牛站
所在位置:首页 > Linux新闻 > 解说Linux文件系统之ZFS高级文件系统

解说Linux文件系统之ZFS高级文件系统

2018-09-12 10:55:38作者:linux人稿源:系统极客

提起 Linux 文件系统,很多人只知道 ext4,其实有一个高级文件系统风头也是相当的强劲,它就是 ZFS,本文就给大家解说 ZFS 文件系统的历史和 ZFS 能在技术人员和科技企业中如此受欢迎的主要原因,在文章下面附有安装 ZFS 文件系统的文章。

解说Linux文件系统之ZFS高级文件系统

 

注意:本文讨论到功能和安装时,都专指 OpenZFS。自 Oracle 关源 OpenSolaris 以来,ZFS(由 Oracle 开发)和 OpenZFS 就已经走上了不同的两条路。

 

ZFS文件系统的历史

Z 文件系统(ZFS,Z File System)由 Matthew Ahrens 和 Jeff Bonwick 于 2001 年创建,ZFS 旨在成为 Sun Microsystems 的 OpenSolaris 操作系统的下一代文件系统。2008 年,ZFS 被移植到了 FreeBSD,同年由一个项目将 ZFS 文件系统移植到了 Linux 平台。由于 ZFS 根据与 GNU 通用公共许可证不兼容的通用开发和分发许可证进行许可,因此它不能被直接包含在 Linux 内核中。为了解决这一问题,大多数主流 Linux 发行版都提供了手动安装 ZFS 的方法。例如,你就可以在 Ubuntu 中安装使用 ZFS 文件系统。

Oracle 收购 Sun Microsystems 后不久 OpenSolaris 系统就宣布闭源了(Oracle 还真是开源杀手),从而 ZFS 的所有后续开发也就顺理成章成了闭源项目,这也引起相当多参与开发人员的不满。由于闭源决定,2/3 的核心 ZFS 开发者,包括 Matthew Ahrens 和 Jeff Bonwick 都离开了 Oracle,此后他们与其他公司一起于 2013 年 9 月创建了 OpenZFS 项目,该项目也率先开展了 ZFS 的开源开发。

既然 OpenZFS 项目与 Oracle 是分开的,有人就不解,为什么不将许可证更改为与 GPL 兼容,也好让其直被接纳入 Linux 内核。根据 OpenZFS 官网的说法:更改许可证涉及到联系涉及的代码贡献人,并获得他们对更改许可证的认可。这项工作几乎不可能完成,所以 OpenZFS 团队才决定保留原有许可证。

 

什么是ZFS文件系统,有哪些特点

不同否认,ZFS 是一款高、大、上的高级文件系统,因此它有一些非常有趣的功能,如:

存储池

写入时复制

快照

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

RAID Z

最大 16 EB 文件大小

最大 256 万亿 ZB 存储

 

存储池

与大多数文件系统不同,ZFS 将文件系统和卷管理器功能组合在一起,它可以创建跨越一系列驱动器或池的文件系统。ZFS 池的概念与 RAID 非常类似,如果你了解 Windows 10 中的存储空间就不难理解它了,什么是存储空间?存储空间是一个可将本地物理存储设备集中合并为存储池并划分为(一个或多个)虚拟驱动器的一项功能,用户所创建的存储空间可以大于、等于或小于存储池中单个物理硬盘的容量。存储空间目前支持  ATA、SATA、SAS 和 USB 存储设备,要使用该功能需要至少一个单独的可用磁盘设备(1个磁盘意义不大)。在 Windows 10 中用户我们无法使用所有的磁盘来创建存储空间,例如:你有 3 块 100 GB 的磁盘,Windows 10 将只允许你使用其中的 2 块来创建“存储池”。当存储池创建好之后,便可以创建 200 GB 的虚拟驱动或者创建一个 1000 GB 的虚拟驱动器。当然,如果你在只有 200 GB 物理存储上创建了 1000 GB 的存储空间,实际可用的存储量也只有 200 GB。而且随着空间的使用,Windows 会提示用户挂接更多的磁盘以容纳更多可用空间。

解说Linux文件系统之ZFS高级文件系统

 

写入时复制

写入时复制是一个有趣而且很酷的功能。在大多数文件系统上,当数据被覆盖时,它将永远丢失;而在 ZFS 文件系统上,新信息会被写入不同的块(block)中,写入完成后,文件系统元数据将更新指向为新信息。这一机制可以确保在写入过程中即便系统崩溃(或发生其它严重事件),旧数据也会被保留。这就意味着,系统崩溃后无需执行 fsck 操作。

 

快照

写入时复制机制引入了另一项 ZFS 功能:快照。ZFS 使用快照来跟踪文件系统中的更改,快照包含文件系统的原始版本,并且实时文件系统包含自拍摄快照以来所做的任何更改。当新数据写入实时文件系统时,会分配新 block 来存储此数据。文件删除后,也会删除快照引用。因此,快照主要用于跟踪对文件的更改,但不包括文件的添加和创建。

快照可以以只读方式挂载,以恢复文件的过去版本。 当然,也可以将实时系统回滚到先前快照的状态。

 

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

每当将新数据写入 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 的倍数添加。

 

超大的存储潜力

在 64 位文件系统成为主流的时候,ZFS 的创建者直接跳到了 128 位。这意味着,ZFS 文件系统能够提供的存储容量是 32 位和 64 位系统的 16 亿亿倍。

Jeff Bonwick(其中一位创始人)表示:要填满 128 位存储池所需要的电能,比将海洋之水烧开所消耗的能量还要多。

 

如何安装ZFS文件系统

对于 FreeBSD 或使用 illumos 内核的操作系统而言,ZFS 算是原生支持,可以开箱即用。

注:illumos 是 OpenSolaris 内核的一个分支。

目前还没有 Linux 发行版能够为用户提供开箱即用的 ZFS 支持,如果你有兴趣在 Linux 平台上使用 ZFS,那就参考如何在Ubuntu中安装使用ZFS文件系统一文,ZFS on Linux 最新版本已更新到 0.7.10。

 

相关主题

ZFS on Linux 0.7.10发布下载,高级文件系统和卷管理器

精选文章
热门文章