RAID 如何处理不一致的数据?

Mas*_*imo 9 raid data-recovery

RAID 1 和 RAID 5(以及它们的兄弟 10 和 50)分别通过镜像和奇偶校验来实现数据冗余。这允许 RAID 阵列在磁盘(或整个磁盘)上的扇区变得不可读时仍然可以访问数据。RAID 6(或 60)使用附加检查来允许双重故障。

但是 RAID 阵列如何处理并非完全不可读,而是明显不一致的数据?

如果发生某些错误,例如在磁盘上更改了条带上的 fe 数据,但更改未传播到其他数据,则整个条带将变得不一致。如果在镜像集中,一个磁盘显示“此位为 0”而另一个磁盘显示“此位为 1”,那么 RAID 控制器如何知道哪个是正确的?相同的推理可以应用于 RAID-5 条带,但增加了复杂性,您无法轻易知道条带中的哪个扇区实际上是错误的。此外,RAID 6 是否通过双重检查缓解了这个问题,或者当数据实际上可读但在某处出错时,它是否仍然无法从数据损坏中恢复,尤其是当 RAID 6 阵列往往有很多磁盘时?

这在理论上可以通过校验和来解决,以确保数据(或奇偶校验)的哪个副本是正确的;但是是否有任何 RAID 控制器实际上实现了这种校验和(这当然会占用额外的空间)?或者它是否需要在操作系统级别处理,大多数文件系统可以并且将对其内容进行校验和?如果是这种情况,当 RAID 控制器的一般方法是从底层存储层抽象操作系统时,他们怎么能告诉 RAID 控制器“条带 Z 上磁盘 Y 上扇区 X 上的数据是错误的”可能的?

Mic*_*ael 2

您有效地描述了其中一个磁盘写入(或读取)错误的情况。RAID 控制器没有实用的方法(例如,写入和读回会降低性能)来防止这种情况。它必须依赖于磁盘能够检测到此类错误,并使用不同的块或从卷中退出 - 从而导致 RAID 性能下降。

如果考虑单磁盘情况,防止不一致写入(或读取)的唯一保护就是磁盘本身。RAID 以此为基础,但没有引入额外的保护措施。

注意:根据经验,我知道 XFS 对阵列中的错误磁盘反应非常敏感。因此,至少我的非低端控制器和操作系统确实能够识别但无法防止这种不一致(已知有故障的磁盘被强制添加到卷中)。