OpenZFS2.1发布了让我们谈谈它全新的dRAIDvdevs

周五下午,OpenZFS 项目发布了我们常年最喜欢的“它很复杂但值得”文件系统的 2.1.0 版。新版本与 FreeBSD 12.2-RELEASE 及更高版本以及 Linux 内核 3.10-5.13 兼容。此版本提供了几项常规性能改进,以及一些全新的功能——主要针对企业和其他极其高级的用例。

今天,我们将专注于可以说是 OpenZFS 2.1.0 添加的最大特性——dRAID vdev 拓扑。至少自 2015 年以来,dRAID 一直在积极开发中,并在 2020 年 11 月合并到 OpenZFS master 中时达到 beta 状态。从那时起,它在几个主要的 OpenZFS 开发商店中进行了大量测试——这意味着今天的发布是生产状态的“新”版本,而不是“新”如未经测试。

分布式 RAID (dRAID) 概述

如果您已经认为 ZFS 拓扑是一个复杂的主题,请准备好让您大吃一惊。分布式 RAID (dRAID) 是一种全新的 vdev 拓扑,我们在 2016 年 OpenZFS 开发峰会的演讲中首次遇到。

创建 dRAID vdev 时,管理员指定每个条带的数据、奇偶校验和热备用扇区的数量。这些数字与 vdev 中的实际磁盘数量无关。

dRAID 拓扑

在上面的例子中,我们有 11 个磁盘:wwn-0 通过wwn-A. 我们创建了一个 dRAID vdev,每个条带有 2 个奇偶校验设备、4 个数据设备和 1 个备用设备——用简明的术语来说,一个draid2:4:1.

尽管我们在 中总共有 11 个磁盘,但draid2:4:1每个数据条带中只使用了 6 个磁盘,并且每个物理条带中使用了一个。

实际上,dRAID 将“对角奇偶校验”RAID 的概念更进一步。第一个奇偶校验 RAID 拓扑不是 RAID5,而是 RAID3,其中奇偶校验位于固定驱动器上,而不是分布在整个阵列中。

RAID5 摒弃了固定奇偶校验驱动器,取而代之的是在所有阵列磁盘中分布奇偶校验——与概念上更简单的 RAID3 相比,它提供了明显更快的随机写入操作,因为它不会对固定奇偶校验磁盘上的每次写入造成瓶颈。

dRAID 采用了这一概念——在所有磁盘上分配奇偶校验,而不是将其全部集中在一个或两个固定磁盘上——并将其扩展到spares. 如果 dRAID vdev 中的磁盘出现故障,则死磁盘上的奇偶校验和数据扇区将复制到每个受影响条带的保留备用扇区。

让我们看一下上面的简化图,看看如果阵列中的磁盘出现故障会发生什么。

请注意,这些图表是 简化的。完整的图片涉及组、切片和行,我们不会在这里尝试进入。逻辑布局也会随机排列,以根据偏移更均匀地分布在驱动器上。鼓励那些对最毛茸茸的细节感兴趣的人查看原始代码提交中的详细注释。

还值得注意的是,dRAID 需要固定的条带宽度,而不是传统 RAIDz1 和 RAIDz2 虚拟设备支持的动态宽度。如果我们使用 4kn 磁盘, draid2:4:1 像上面显示的那样的 vdev 将需要 24KiB 磁盘上的每个元数据块,而传统的六宽 RAIDz2 vdev 只需要 12KiB。d+p get的值越高,这种差异draid2:8:1 就越严重——对于相同的元数据块,a需要高达 40KiB!

出于这个原因,special 分配 vdev 在具有 dRAID vdevs 的池中非常有用——当具有draid2:8:1 3-wide 的池 special 需要存储 4KiB 元数据块时,它special在draid2:8:1.

(0)
上一篇 2022年7月10日
下一篇 2022年7月10日

相关推荐