简介
我最受欢迎的博客文章之一是这篇文章欧宝体育直播官网关于“为您的家庭NAS使用ZFS的隐藏成本”。总结本文的主要论点:
扩展基于zfs的存储可能相对昂贵/低效。
例如,如果基于单个3盘RAIDZ vdev(相当于RAID5)运行ZFS池2),扩容池的唯一方法是增加一个3盘的RAIDZ vdev1.
您不能仅仅在现有的3盘RAIDZ vdev中添加一个磁盘来创建4盘RAIDZ vdev,因为vdev不能扩展。
这种限制的影响是,你必须预先购买所有的存储空间,即使你在未来几年都不需要这些空间。
否则,通过扩展额外的vdev,您将失去可能不是真正想要/需要的奇偶校验容量,这也限制了NAS的最大可用容量。
RAIDZ vdev扩展
幸运的是,ZFS的这一限制正在得到解决!
ZFS创始人马修·阿伦斯创建了一个把请求大约在2021年6月11日,详细介绍了一个新的ZFS功能,将允许RAIDZ vdev扩展。
最后,ZFS用户将能够通过一次只添加一个驱动器来扩展他们的存储。这个功能可以扩展存储空间,这对预算紧张的家庭用户来说尤其有吸引力3..
吉姆·索尔特写过篇好文章欧宝体育直播官网在Ars Technica上讨论这个。
这里仍有一个警告
现有数据将重新分配或重新平衡所有驱动器,包括新添加的驱动器。但是,已经存储在vdev上的数据将不会被删除restripedvdev扩容完成后。这意味着这些数据存储在旧的,低效率的parity-to-data比率。
我认为Matthew Ahrends用他自己的话解释得最好:
在扩展完成后,旧块仍然保持其旧的数据对奇偶比(例如5宽RAIDZ2,有3个数据对2个奇偶比),但分布在更大的磁盘集中。新的块将以新的数据与奇偶比写入(例如,5宽的RAIDZ2已扩展到6宽,具有4个数据与2个奇偶比)。但是,RAIDZ vdev的“假设奇偶比”没有改变,因此根据zfs list、df、ls -s和类似工具,对于新写入的块,报告的空间可能比预期的要小一些。
因此,如果您将一个新驱动器添加到RAIDZ vdev中,您将注意到在扩展后,您将拥有少可用容量比理论上预期的要大。
然而,更重要的是要理解这种影响积累.这对家庭用户尤其重要。
我认为从少量磁盘开始并随用随扩展的整个概念非常适合家庭用户。但这也意味着每次将磁盘添加到vdev时,现有数据仍然使用旧的数据对奇偶校验率存储。
想象一下,我们有一个10驱动器的底盘,我们开始与4驱动器RAIDZ2。
如果我们继续增加驱动器5按照这个例子,直到机箱满了10个驱动器,大约1.35个驱动器的容量“损失”到奇偶校验开销/效率损失欧宝体育直播官网4.
我认为这是相当大的开销或容量损失。
这个开销是如何计算的?如果我们只购买10个驱动器并创建一个10个驱动器的RAIDZ2 vdev,数据到奇偶校验的开销是20%,这意味着vdev总原始容量的20%用于存储奇偶校验。这是最有效的情况。
当我们开始使用四个驱动器的RAIDZ2 vdev时,数据到奇偶校验的开销是50%。这与“理想的”10个驱动器的配置相比,节省了30%的开销。
随着我们不断添加驱动器,奇偶校验的相对开销不断下降,因此我们最终得到了具有不同数据与奇偶校验比率的“多个数据集”,这比10个驱动器的最终阶段效率要低。
我创建了一个谷歌表来粗略估计每个阶段的开销,但我的数学完全错了。幸运的是,约里克重写了表格可以在这里找到.谢谢约里克!此外,truena的用户DayBlur也分享了这一信息额外的见解如果你对计算感兴趣的话。
的谷歌表允许您使用各种变量来估计给定场景的容量损失。请注意,由于使用了许多需要填充数据的驱动器而可能产生的任何损失(如Ars Technica文章中所讨论的那样)不属于计算的一部分。
有点不幸的是,特别是在家庭用户希望从小规模开始并随需扩展的场景中,这种开销表现得如此之多。但也有好消息!
失去的能力可以恢复!
开销或“损失容量”可能是恢复通过重写扩展vdev后的现有数据,因为数据将使用更大的vdev中更有效的奇对数据比写入。
重写所有数据可能需要相当长的时间,您可以选择推迟这一步,直到vdev扩展了几次,因此奇对数据比现在“足够好”,可以通过重写数据获得显著的存储收益。
因为开销损失的容量可以完全恢复,我认为这个警告是相对次要的,特别是与以前的情况相比,我们必须用整个vdev扩展池,并且没有办法恢复任何开销。
目前还没有内置机制来触发这种数据重写作为原生ZFS工具的一部分。这将是一个手动过程,直到有人可以创建一个脚本来自动化这个过程。根据Matthew Ahrens的说法,重条带化数据作为vdev扩展过程的一部分将是一项努力规模相近RAIDZ扩展本身。
评价
我认为怎么说都不过分太棒了RAIDZ vdev扩展特性是,特别是对于那些希望从小规模开始并随着时间增长存储空间的家庭用户。
尽管扩展过程可能会积累相当多的开销,但这些开销可以通过重写现有数据来恢复,这对大多数人来说可能不是问题。
尽管ZFS有很多很棒的特性和功能,但我认为相当多的家庭用户还是选择了其他存储解决方案,因为它的扩展成本/开销相对较高。现在这个障碍将被克服,我认为ZFS将更适合家庭用户DIY NAS人群。
发布时间
根据吉姆·索尔特(Jim Salter)在Ars Technica上的文章,这项功能可能会在2022年8月推出,所以我们需要一些耐心。即便如此,您可能已经决定基于ZFS构建新的DIY NAS:当您可能需要扩展存储时,该特性可能已经可用了!
更新一些——在我看来——糟糕的建议
播客2.5管理员(我喜欢听)讨论RAIDZ扩展的话题一集45.
有两句话我想提一下,因为我不同意。
不要重写数据?
正如在他的Ars Technica文章中,Jim Salter一直主张不要在vdev扩展后重写数据,但我个人不同意这个建议。我希望我已经演示了,如果您继续添加驱动器,奇偶校验开销对于大多数家庭用户来说是足够大的,因此值得在添加几个驱动器后重写数据。
就用镜子吧!
我也不同意的建议用镜子,尤其适合家庭用户6.我个人认为这是一个糟糕的建议,因为家庭用户和企业环境一样有其他的需求和愿望。
如果“只使用镜像”仍然是建议,为什么Matthew Ahrends首先建立整个RAIDZ vdev扩展功能?我认为RAIDZ vdev扩展对家庭用户非常有益。
也许Jim和我对于家庭用户想要或需要DIY NAS存储解决方案有非常不同的想法。欧宝体育直播官网我认为家庭用户想要的是:
在可接受的冗余下,以尽可能少的钱获得尽可能多的存储空间。
此外,我认为家庭用户通常使用较大的文件(至少几兆字节)。如果它们有时使用更小的文件,它们可以接受由于单个RAIDZ vdev较低的随机I/O性能而导致的一些性能损失7.
坦率地说,对我来说,“只使用镜像”的建议被用来“淡化”ZFS的一个重大限制8.吉姆是Ars Technica网站上的一位多产作家,拥有大量读者,所以他的建议很重要。所以这就是为什么我认为他坚持“只使用镜子”很可悲,而这显然不符合大多数家庭用户的最佳利益。
然而,这只是我的观点,你自己决定什么是最好的。
另一种方法是将现有的驱动器逐个替换为较大的驱动器。只有在你更换了所有的驱动器后,你才能获得额外的容量,所以这种方法有一个类似的缺点,只是扩大额外的vdev:你必须一次购买多个驱动器。此外,我认为这种方法是相当耗时和繁琐的,尽管人们确实使用它来扩展容量。公平地说:您确实可以添加4+磁盘vdev,具有更高RAIDZ级别的vdev或镜像,但在这种情况下,这些都没有意义。↩
只是为了说明冗余的程度,即在丢失多少磁盘的情况下仍然可以正常工作。↩
我个人认为它甚至对中小企业主也很好。只有较大的企业想要继续增加由多个驱动器组成的相对较大的vdev,因为如果他们每次只扩展一个驱动器,他们可能不得不非常频繁地扩展容量,这可能是不现实的。↩
如果您只在池几乎满时才升级—不建议!—开销增加到1.69个驱动器。↩
从4个驱动器到5个驱动器。然后是五到六次,以此类推。↩
我链接了Jim Salter的原文,因为我想让你阅读这篇文章,并做出自己的决定,而不仅仅是听我说。↩
如果随机I/O性能很重要,那么使用基于SSD的存储可能是明智的。↩
当它进入生产环境时,显然由ZFS vdev扩展来解决。↩