RAID 6底层原理探讨
1、概述
和RAID-5相似,RAID-6(6D + 2P)根据条带化的数据生成校验信息,条带化数据和校验数据一起分散存储到RAID组的各个磁盘上。在图1中,D0,D1,D2,D3,D4和D5是条带化的数据,P代表校验数据,Q是第二份校验数据。
图1 RAID-6校验数据生成公式

图1:RAID-6(6D + 2P)根据条带化的数据生成校验信息,条带化数据和校验数据一起分散存储到RAID组的各个磁盘上
校验数据生成公式(P和Q):
P的生成用了异或
P = D0 XOR D1 XOR D2 XOR D3 XOR D4 XOR D5
Q的生成用了系数和异或
Q = A0*D0 XOR A0*D1 XOR A0*D2 XOR A0*D3 XOR A0*D4 XOR A0*D5
D0~D5:条带化数据
A0~A5:系数
XOR:异或
*:乘
在RAID-6中,当有1块磁盘出故障的时候,利用公式1恢复数据,这个过程是和RAID 5一样的。而当有2块磁盘同时出故障的时候,就需要同时用公式1和公式2来恢复数据了。
在图1中,各系数A0~A5是线性无关的系数,在D0,D1,D2,D3,D4,D5,P,Q中有两个未知数的情况下,也可以联列求解两个方程得出两个未知数的值。这样在一个RAID组中有两块磁盘同时坏的情况下,也可以恢复数据。
上面描述的是校验数据生成的算法。其实RAID-6的核心就是有两份检验数据,以保证两块磁盘同时出故障的时候,也能保障数据的安全。
2、数据恢复流程
2.1、从1块磁盘故障中恢复数据
当有1块磁盘出故障的时候,利用公式1恢复数据,这个过程不需要Q这部分校验数据,如图2所示,这个过程是和RAID 5一样的。
图2 在RAID-6(6D + 2P)中恢复D3数据

图2 :在本图中展示了存放D3数据的盘出现故障的恢复过程
公式:
D3 = D0 XOR D1 XOR D2 XOR P XOR D4 XOR D5
2.2、从2块磁盘故障中恢复数据
当同时有2块磁盘故障的时候,需要同时用到公式1和公式2来恢复数据,如图3所示。
图3在RAID-6(6D + 2P)中恢复D3和D4数据

图3 :在本图中展示了存放D3和D4数据的盘出现故障的恢复过程
公式1和公式2:
P = D0 XOR D1 XOR D2 XOR D3 XOR D4 XOR D5
Q = A0*D0 XOR A0*D1 XOR A0*D2 XOR A0*D3 XOR A0*D4 XOR A0*D5
D3和D4由解以上两个联立的方程得出结果
数据分布
如图4所示,通过条带化,把应用数据和校验数据打散到一个RAID组的8个磁盘中,可以充分保证读写性能和数据的安全性。
图4 RAID-6的数据分布

图4 :RAID-6可以保证同一个RAID组中两块磁盘故障的情况下的数据安全