探究OpenZFS后Linux迁移中的新功能

2020-12-25 11:08:04 来源: INeng财经

5月23日发布时,Linux 0.8(ZoL)上的ZFS带来了许多新功能和性能改进。这是在Delphix 宣布 将于2018年3月将其自身产品迁移到Linux上之后进行的。今天最激动人心的May功能(例如ZFS本地加密)。

有关完整列表(包括此处未涵盖的新功能和性能改进),您可以访问 Github上的 ZoL 0.8.0版本。(请注意, ZoL 0.8.1 已于上周发布,但是由于Linux上的ZFS遵循 语义版本控制,因此它仅是一个错误修复版本。)

不幸的是,对于Ubuntu爱好者而言,这些新功能将在相当长的一段时间内不会出现在Canonical的存储库中-2019年10月即将发布的临时版本Eoan Ermine在其存储库中仍显示0.7.12。我们可以希望Ubuntu 20.04 LTS(尚未命名)将合并0.8.x分支,但是到目前为止还没有正式的词汇。如果您运行的是Ubuntu 18.04(或更高版本),并且绝对不能等待,那么广泛使用的 Jonathon F PPA的功能为0.8.1。Debian的实验版本中有 0.8.0,Arch Linux的 zfs-dkms AUR软件包中有0.8.1,Gentoo在sys-fs / zfs中的测试有0.8.1 。其他Linux发行版的用户可以在https://zfsonlinux.org/上直接从master找到构建软件包的说明。 。

前述的Linux迁移使Delphix令人印象深刻的OpenZFS开发人员阵容增加到了已经在Linux上进行ZFS工作的庞大团队。11月,FreeBSD项目 宣布 了 对Linux作为OpenZFS旗舰开发平台的事实上的新优势的认可 。FreeBSD通过在Linux而不是Illumos的ZFS上重新建立自己的OpenZFS代码库来做到这一点。对于BSD爱好者来说,更好的消息是,必要的移植工作将被纳入Linux本身的ZFS的主要代码库中,随着 工作的进行,PR从FreeBSD的新ZoL fork合并而来 。

最近几个月,Linux上的ZFS以及整个OpenZFS项目都非常繁忙。从历史上看,OpenZFS的大部分新开发工作都是由Delphix的员工完成的,而后者又将Illumos用作他们的首选平台。从那里,新代码被相对较快地移植到FreeBSD,而较慢地移植到Linux。

但是多年来,为Linux项目上的ZFS积累了动力。改进和错误修正的流程颠倒了方向-几乎所有在0.8中真正令人兴奋的新功能都起源于Linux,而不是从其他地方移植而来。

到云的ZFS复制就在这里,而且 速度很快

让我们深入探讨最重要的内容。

ZFS本机加密

Native ZFS加密是0.8中最重要的新功能之一。到目前为止,ZFS用户一直依赖于OS提供的ZFS之上或之下的加密文件系统层。尽管这种方法行之有效,但也带来了困难-ZFS层下方的加密(GELI或LUKS)降低了ZFS保证数据安全性的本机能力。同时,ZFS层(在ZVOL上创建的GELI或LUKS卷)上方的加密使ZFS本机压缩(启用时往往会提高性能和可用存储空间)成为不可能。

但是,本机加密的实用性不仅会随着加密文件系统的更好的集成和易用性而停止。该功能还附带原始的加密ZFS复制。当您对ZFS文件系统进行本地加密后,就可以将文件系统完整地复制到远程ZFS池中,而无需解密(或解压缩)数据,也不需要远程系统拥有可对其进行解密的密钥 。

反过来,此功能意味着可以使用ZFS复制来使不受信任的远程备份系统保持 最新状态。这使得即使对远程系统具有root和/或物理访问权限的攻击者,也无法窃取在那里备份的数据。

ZFS设备移除

ZFS爱好者最常抱怨的是,如果您对将新磁盘添加到现有ZFS池中的命令不满意,则无法撤消该命令。您将陷入一个包含单磁盘vdev且实际上没有奇偶校验或冗余的池中。

过去,唯一的缓解措施是将更多磁盘附加到新的单磁盘vdev,并将其升级为镜像。如果您首先使用一堆镜子,这可能还不错。但是,如果您的池基于RAIDz(条带化)vdev,或者如果您刚好没有钱和/或没有新磁盘,那就太冷了。

与0.8.0开始,设备删除可能在有限数量的情况下用一个新的zpool删除命令。不过,明智的做法是-移除设备并非易事,也不应该轻易删除。删除了设备的池最终导致丢失的存储块等于CNAME;引用最初存储在已删除磁盘上的块的文件系统调用最终会先查找原始块,然后被重定向到块的新位置。这对错误添加并立即删除的设备的影响应该相对较小,但是如果用于删除具有成千上万个已用块的设备,则可能会对性能产生严重影响。

ZFS中的TRIM支持

关于Linux上ZFS的长期存在的抱怨之一是它缺乏对SSD的TRIM支持。如果没有TRIM,SSD的性能会随着时间的推移而显着降低-经过数年的未修剪使用之后,SSD可能很容易降至其原始性能的1/3或更小。

如果您的比较点是传统硬盘,则没关系。一个好的固态硬盘通常具有的吞吐量是非常快的防锈磁盘的五到六倍,IOPS是一万倍。那么,朋友中可怜的67%罚款是多少?但是,如果您要依靠系统的预配置性能,则会遇到麻烦。

幸运的是,0.8为ZFS带来了对手动和自动TRIM的支持。大多数用户和管理员将希望使用 autotrim池属性来启用自动实时TRIM支持。具有较少存储使用窗口的对性能非常敏感的系统,可以选择使用zpool trim在非工作时间安排常规的TRIM任务 。

ZFS池检查点

检查点不如我们已经提到的功能那么迷人,但是它们肯定可以节省您的培根。将检查点想像为池范围的快照。但是,当快照保留单个数据集或ZVOL的状态时,检查点将保留整个池的状态。

如果要启用更改磁盘格式(通常是不可逆的)的新功能标志,则可以首先 zpool检查点池,使您可以将其回滚到升级前的状态。检查点还可以用于回滚原本不可逆的数据集或zvol级别的操作,例如destroy。当您仅打算销毁其快照之一时,zfs偶然 销毁了整个数据集?如果您有检查点,则可以将该操作回滚。

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。