我一直在读: http://community.netapp.com/t5/Tech-OnTap-Articles/Back-to-Basics-RAID-DP/ta-p/86123
这基本上将 RAID-DP 描述为对角奇偶校验 RAID。但有一件事让我有点困扰 - 这个例子必须简化,因为它描述了求和。这很公平 - 对于 RAID4 和 RAID5 中的“正常”奇偶校验 - 您执行 XOR 而不是直接加和,这是可行的,因为 XOR 非常高效并且您可以重建。
如果你的奇偶校验是:
A 异或 B 异或 C = P
然后
P 异或 B 异或 C = A
不过,有一件事让我有点困扰——DP 和不能这样工作,因为如果你进行“XOR 样式”双重奇偶校验……你最终会得到一个模棱两可的结果。你创建了一堆联立方程,这样你就可以找出位之间的关系——例如,你知道哪些位是相等的,哪些是不相等的。然而,你最终会得到两个有效的解决方案——一个是另一个的“逆”。
我猜这就是为什么这个例子使用加法和的原因……但让我困扰的是那是:您的加法和通常比源字节数要大。如果您“求和”10 个字节长的值,您的和可能大于一个字节。我猜您可以“包装”您的和,但您仍然有可能得到模棱两可的结果。
你的平价有效地告诉您哪些位彼此相等,哪些不相等。但最终结果是模棱两可的 - 您要么得到“正确”答案,要么得到“正确”答案的反转。
我错过了什么?
(我怀疑答案可能与 RAID-6 的做法类似)。
答案1
或许http://www.netapp.com/us/media/tr-3298.pdf哪个有更多细节和参考资料可以帮助您理解设计?
答案2
不用担心结果不适合加法。只需忽略溢出即可。没有歧义。例如,让我们想象一下保存单个十进制数字的桶。
5 + 4 + 8 + 3 + 6 => 26。
由于它只保存一位数字,我们只需写“6”表示奇偶校验。现在我们需要重建第四位数据数字。加法的逆运算是减法:
6 - (5 + 4 + 8 + 6) => -17 只需向其中添加“10”直到得到一个正数,而 3 就是缺失的值。
您说得对,对于双磁盘,您无法处理单行并恢复信息。您必须能够读取多行。 这里是一篇 USENIX 论文,介绍了行对角奇偶校验的算法。