RAID技术概述 RAID-5的正确和不正确重建

0Mp硬盘123
不当重建是客户在尝试自行解决阵列问题时经常犯的错误。这个问题足够复杂,足以让数据恢复工程师感到困惑。重要的是要确切了解数据发生了什么变化,以及这如何影响成功恢复数据的机会。0Mp硬盘123

我们将探讨最流行的级别——RAID-5。我们将考虑初始化、正确重建和错误重建的过程是如何为其执行的。此外,我们还将讨论在不当重建后是否有可能恢复数据。0Mp硬盘123

RAID-5 的不当重建可能有很多种情况,在本文中,我们将只限于其中一种——即新旧配置相同的情况。这是实践中的常见情况,也是最容易解释和从中恢复数据的。一旦我们研究了这种情况,我们就可以在接下来的文章中转向更复杂的案例。0Mp硬盘123

我们假设您已经学习了上一篇关于 RAID-1 的文章,并理解我们所说的初始化、重建以及"不当重建"问题的本质。因此,让我们直接探讨这些过程在 RAID-5 中的具体情况。0Mp硬盘123

0Mp硬盘123

正确重建与不当重建的区别0Mp硬盘123

RAID-5 中的冗余0Mp硬盘123

让我们考虑一个三驱动器的 RAID-5 LS(左同步)方案:0Mp硬盘123

0Mp硬盘123

三驱动器 RAID-5 LS 的模板。0Mp硬盘123
每行都有一个存储其他块 XOR 结果的块:0Mp硬盘123
C0 = A0 xor B0,0Mp硬盘123
B1 = A1 xor C1,0Mp硬盘123
A2 = B2 xor C20Mp硬盘123

数据被分成块。每行包含数据块。然而,有一个特殊的块存储了为该行中所有数据块计算出的 XOR 操作结果。我们将此块称为"XOR 块"。RAID-5 有多种方案,但就本文而言,它们之间的差异并不重要。0Mp硬盘123

有了 XOR 块,我们可以恢复任何一个故障成员的数据。例如,如果块 C0 = A0 xor B0,那么:0Mp硬盘123

  • A0 = B0 xor C00Mp硬盘123

  • B0 = A0 xor C00Mp硬盘123

  • C0 = A0 xor B0 (根据定义)。0Mp硬盘123

对于其他行也是如此——任何成员都可以使用 XOR 操作和其余成员来恢复。同样的规则适用于具有更多成员的 RAID-5。0Mp硬盘123

这使我们得出任何正常运行的 RAID-5 的一个特性:XOR 块必须是有效的。数据块的 XOR 结果必须等于存储在 XOR 块中的值。0Mp硬盘123

RAID-5 初始化

如果我们取任意驱动器并尝试创建 RAID-5,我们不能确定 XOR 块是有效的。因此,RAID-5 阵列需要初始化。0Mp硬盘123

我们如何使 XOR 块有效?显而易见的解决方案是计算数据块的 XOR 并将结果写入相应的 XOR 块。大多数 RAID 控制器都是这样做的。0Mp硬盘123

0Mp硬盘123

RAID 5 初始化0Mp硬盘123
执行 XOR 块计算和更新:0Mp硬盘123
A0 XOR B0 -> C00Mp硬盘123
A1 XOR C1 -> B10Mp硬盘123
B2 XOR C2 -> A20Mp硬盘123

也就是说,在初始化期间,所有成员上的数据都会被部分更新0Mp硬盘123

降级后的重建

如果其中一个成员发生故障,RAID-5 会降级——数据仍然可用(缺失驱动器的数据是动态计算的),但不再保证可靠性。0Mp硬盘123

要恢复阵列的特性,必须用新驱动器更换故障驱动器。仅仅将新驱动器添加到阵列中就足够了吗?不。新驱动器不包含正确的数据或有效的 XOR 块。必须执行重建,这是一个将正确数据写入新驱动器的过程。如何获取正确的数据?很简单——计算旧成员的 XOR。0Mp硬盘123

0Mp硬盘123

RAID-5 重建(恢复成员 C):0Mp硬盘123
对成员 A 和 B 的数据进行 XOR 运算,并将结果写入 NewC0Mp硬盘123
A0 xor B0 -> NewC0Mp硬盘123
A1 xor B1 -> NewC0Mp硬盘123
A2 xor B2 -> NewC0Mp硬盘123

这意味着:在正确重建期间,只有新驱动器会被更新。0Mp硬盘123

不当重建

让我们看看当执行了初始化而不是(正确的)重建时,数据是如何变化的。RAID-5 有很多参数,为简单起见,我们假设所有参数都没有改变。0Mp硬盘123

0Mp硬盘123

在 RAID-5 中使用新成员进行初始化:0Mp硬盘123
执行 XOR 块重新计算:0Mp硬盘123
A0 xor B0 -> NewC0 (正确)0Mp硬盘123
A1 xor NewC1 -> B1 (错误)0Mp硬盘123
B2 xor NewC2 -> A2 (错误)0Mp硬盘123

初始化将重新计算并更新所有 XOR 块。在这种情况下:0Mp硬盘123

  • 新驱动器上的数据块将保持不变,即它们将继续存储无用的数据。0Mp硬盘123

  • 旧驱动器上的 XOR 块将基于错误的数据重新计算,因此它们将是错误的。0Mp硬盘123

损坏分析

让我们了解这些损坏如何影响逻辑 RAID 镜像——组装后的 RAID 上的数据会是什么样子。0Mp硬盘123

0Mp硬盘123

由驱动器 A、B 和 NewC 组装的 RAID 数据。0Mp硬盘123
每 6 个块包含 2 个坏块。0Mp硬盘123

对于三盘 RAID-5,每 6 个块一组将有 4 个好块和 2 个坏块。从技术上讲,这只有 33.3% 的损坏。而对于 10 个驱动器的 RAID-5,我们只会得到 10% 的损坏。这听起来还不算太糟!但残酷的事实是,客户需要的是健康的文件,而不是扇区。而未被损坏的文件将非常少。0Mp硬盘123

让我们为我们的例子计算一下:如果块大小是 64 KB,那么 6 个块只有 384 KB。几乎所有常见的文件,如存档、照片和文档,都远大于这个大小,也就是说,它们几乎肯定会被损坏。0Mp硬盘123

是否有可能在没有故障驱动器的情况下恢复数据?

让我们看看是否有办法在没有旧的故障驱动器 C 的情况下恢复数据。0Mp硬盘123

我们已经发现,在包含成员 A、B 和 NewC 的配置中,数据将被损坏。这不是一个可行的方案。0Mp硬盘123

如果我们尝试从冗余中恢复驱动器 C 的数据呢?不幸的是,在重新初始化期间,XOR 块被重新计算,现在 A xor B = NewC。这意味着,如果我们用 A、B 和虚拟盘(缺失驱动器的占位符)组装一个阵列,我们将得到与用 A、B 和 NewC 组装阵列完全相同的数据。0Mp硬盘123

结论:没有原始 C 盘,不可能完全恢复数据。0Mp硬盘123

是否可以使用损坏驱动器的镜像来恢复数据?

假设驱动器 C 的损坏不是致命的,并且我们设法使用 PC-3000 对数据进行了复制。这个副本会帮助我们吗?0Mp硬盘123

0Mp硬盘123

驱动器 A、B 和镜像 C 上的数据0Mp硬盘123
只有 A 和 B 上的 XOR 块损坏了0Mp硬盘123

在重新初始化是以相同配置执行的情况下,情况相当简单:0Mp硬盘123

  • A 和 B 上的数据块是有效的0Mp硬盘123

  • A 和 B 上的 XOR 块是无效的0Mp硬盘123

  • C 上的数据块和 XOR 是有效的0Mp硬盘123

还有一个额外的因素需要考虑——阵列可以存储有关配置的元数据。驱动器 A、B 上的元数据可能与驱动器 C 上的元数据冲突。0Mp硬盘123

所以我们拥有所有的数据块,但存在 XOR 和元数据问题。0Mp硬盘123

0Mp硬盘123

从驱动器 A、B 和 C 的镜像组装的 RAID 数据。0Mp硬盘123
所有数据块都是正确的——有可能获得没有任何损坏的 RAID 数据。0Mp硬盘123

使用 PC-3000 RAID 系统,我们可以轻松获得正确的阵列数据,并保持所有用户文件完好无损。无论是元数据冲突还是 XOR 问题都无法阻止我们。0Mp硬盘123

可以使用原始控制器访问数据吗?不幸的是,我们不能保证这一点,也不能保证这对数据是安全的。由于元数据冲突,控制器可能只构建一个由驱动器 A、B 和虚拟盘组成的阵列(我们在上面讨论过这种配置不正确),或者它可能建议重建阵列:A xor B -> C,而这个过程将损坏数据。如果您想使用原始控制器,请务必制作所有驱动器的副本!0Mp硬盘123

结论:在 PC-3000 RAID 系统中,我们可以组装一个用户数据完好的 RAID。使用原始控制器访问数据可能是危险的。0Mp硬盘123

结论

在本文中,我们探讨了 RAID-5,这是最流行的 RAID 级别。不幸的是,这个级别也受到不当重建问题的影响——即启动了初始化而不是正确重建的情况。当客户尝试自行重新获取数据访问权限时,经常会犯这个错误。0Mp硬盘123

在本文中,我们仅限于新配置与旧配置匹配的情况。我们通过这个例子探讨了:0Mp硬盘123

  • RAID-5 是一个在每一行存储特殊 XOR 块的级别,这使其能够承受任何一个成员的故障。0Mp硬盘123

  • 在 RAID-5 初始化期间,通常会计算并写入 XOR 块。也就是说,阵列的每个成员都会被部分更新。0Mp硬盘123

  • 在(正确)重建期间,故障成员的数据被恢复并写入新驱动器。数据是使用 XOR 块恢复的。因此,在正确重建期间,只有新驱动器被更新。0Mp硬盘123

  • 在不当重建期间,由于 XOR 重新计算,旧成员被错误数据部分更新。0Mp硬盘123

  • 如果故障成员永久损坏,将无法完全恢复 RAID 数据。所有中型和大型文件都将包含错误。0Mp硬盘123

  • 如果可以对损坏成员的数据进行复制,则可以使用 PC-3000 RAID 系统恢复 RAID 数据。0Mp硬盘123

  • 使用原始控制器进行数据恢复可能是危险的。0Mp硬盘123

我们没有考虑新配置与旧配置不同的情况。那里的损坏更为复杂,但在许多情况下数据恢复仍然是可能的。我们将在后续文章中探讨一些例子。0Mp硬盘123