“降级”的 RAID 6 阵列和“干净”的 RAID 5 阵列有什么区别?

ATL*_*ief 16 raid performance raid5 raid6 fault-tolerance

假设您有两个 RAID 阵列,一个有 N 个磁盘,另一个有 N+1 个磁盘。具有 N 个磁盘的阵列被格式化为RAID\xc2\xa05并保持不变,而另一个阵列在其中一个磁盘被移除之前被格式化为RAID\xc2\xa06 。现在,两个阵列都有 N 个磁盘,N-1 个磁盘的可用存储空间,并且可以在丢失一个(多个)磁盘的情况下幸存下来。

\n

除了 RAID 控制器使用的任何元数据之外,这两个阵列之间是否有任何差异(在数据布局、性能和可靠性方面)?我能否将缺少一个磁盘的 RAID\xc2\xa06 阵列转换为一个较少预期磁盘的 RAID\xc2\xa05,并尽可能减少“重塑”/“重写”?

\n

我知道 RAID 5 和 RAID 6 中有不同的“策略”/“对齐”,但这可能超出了这个问题的范围。也许应该假设两个阵列都使用两个 RAID 级别通用的策略。

\n

Zac*_*c67 23

除了 RAID 控制器使用的任何元数据之外,这两个阵列之间是否有任何差异(在数据布局、性能、可靠性方面)?

是的。RAID5 使用单个旋转奇偶校验,而 RAID6 使用两个。您可能会想象专用奇偶校验磁盘,但它们实际上是旋转的。

RAID5 应该相当简单:

在此输入图像描述

对于 RAID6,想象最后一个磁盘丢失:

在此输入图像描述

图表由维基百科提供[*1]

布局明显不同,与完整的 RAID5 阵列相比,降级的 RAID6 需要大量额外的读取和重新计算来补偿丢失的磁盘。

例如,不是直接读取 B3,而是需要读取 [B1, B2, Bp, Bq] 中的任意三个块来重建 B3 - 请注意,这种数据重建只是暂时的,并且需要在每次访问 B3 时进行。另请注意,随机读取的“读取放大”随着磁盘数量的增加而增加。对于更长的顺序读取,无论如何都必须读取其他块。

降级的 RAID6 阵列预计性能会更差,具体取决于工作负载以及 RAID 控制器实施和缓存。RAID 实施往往会针对正常操作和稳定性进行优化,因此即使具有较大的缓存,性能下降的阵列也可能会低于预期。

我能否将缺少一个磁盘的 RAID6 阵列转换为包含一个预期较少的磁盘的 RAID5,并尽可能减少“重塑”/“重写”?

是的,理论上是的,因为所有数据都可以重建。实际上,这取决于现有 RAID 控制器的功能。由于需要特殊的迁移算法,实现的可能性不大。就我个人而言,我认为我从未见过该选项,但我也没有一直在寻找它。

[*1] 您应该注意,在 RAID 阵列中映射数据有不同的方法。上图显示了最简单的、未经优化的方案。其他方案将优化特定的工作负载,并且用于顺序读取访问的 RAID5 方案可能是

A1-A2-A3-Ap
B2-B3-Bp-B1
C3-Cp-C1-C2
Dp-D1-D2-D3
Run Code Online (Sandbox Code Playgroud)

  • 当然,使用旋转奇偶校验,以便只读工作负载可以使用所有磁盘,而不是让奇偶校验磁盘空闲,并且如果系统可以/经常只写入小块和相关的奇偶校验更改,它会平衡写入,而不是重写整个磁盘条纹。无论如何,RAID4 是使用专用奇偶校验磁盘的一种,问题的想法可能适用于 N 盘 RAID0 和丢失奇偶校验盘的 N+1 盘 RAID4:它们很可能非常相似。当然,如果你从 RAID4 中随机取出一个磁盘,你可能会碰到一个数据磁盘,然后它就完全不一样了。 (5认同)
  • 一些企业级 RAID 控制器确实可以进行此类迁移,但通常不受欢迎。通常不建议转换降级的卷,因为它涉及执行“大量”I/O,并且在除单次降级的 RAID6 之外的所有情况下,您距离丢失该卷只有一个 URE 距离。更换驱动器、使卷恢复正常,然后*然后*进行迁移可能会更安全。 (5认同)
  • 请注意,读取放大仅发生在随机读取触及丢失的驱动器时,而不读取条带的其余部分(并且在过去访问的条带缓存中没有该部分)。命中整个条带的顺序读取不会受到影响(无论阵列是干净的还是降级的,都必须从三个驱动器读取)。如今,从奇偶校验重建的 CPU 开销完全可以忽略不计,除非您的阵列构建在 NVMe SSD 等快速存储之上。 (4认同)