1、概述& q! p, c7 q: W 和RAID-5相似,RAID-6(6D + 2P)根据条带化的数据生成校验信息,条带化数据和校验数据一起分散存储到RAID组的各个磁盘上。在图1中,D0,D1,D2,D3,D4和D5是条带化的数据,P代表校验数据,Q是第二份校验数据。
}( r. J1 h
图1 RAID-6校验数据生成公式 9 x! S7 \' j0 B3 A: J1 f4 i) p# h! g
图1:RAID-6(6D + 2P)根据条带化的数据生成校验信息,条带化数据和校验数据一起分散存储到RAID组的各个磁盘上
j 3 k E2 P9 t# G5 z3 - U
校验数据生成公式(P和Q): - c- o6 k2 Y3 @/ f2 C
P的生成用了异或
P= D0 XOR D1 XOR D2 XOR D3 XOR D4 XOR D5 4 j4 Q3 A3 {7 o) V/ ]+ y4 P! `/ p5 o
Q的生成用了系数和异或 6 }' t; I& S2 P" w6 Y
Q = A0*D0 XOR A0*D1 XOR A0*D2 XOR A0*D3 XOR A0*D4 XOR A0*D5 0 n0 ~; G& ~5 V8 C
D0~D5:条带化数据 ) C8 o) ` \! j8 y: f7 W
A0~A5:系数
XOR:异或
*:乘
在RAID-6中,当有1块磁盘出故障的时候,利用公式1恢复数据,这个过程是和RAID 5一样的。而当有2块磁盘同时出故障的时候,就需要同时用公式1和公式2来恢复数据了。 ; j4 S2 ~! C, Z' t3 D
在图1中,各系数A0~A5是线性无关的系数,在D0,D1,D2,D3,D4,D5,P,Q中有两个未知数的情况下,也可以联列求解两个方程得出两个未知数的值。这样在一个RAID组中有两块磁盘同时坏的情况下,也可以恢复数据。
上面描述的是校验数据生成的算法。其实RAID-6的核心就是有两份检验数据,以保证两块磁盘同时出故障的时候,也能保障数据的安全。 ; T6 C0 t+ d% L1 z9 m7 k, D0 Q
! ?% P* ?4 L; s* [
2、数据恢复流程
2.1、从1块磁盘故障中恢复数据 9 P t0 F: }% p- \- X
, `: P4 p1 X1 ?
当��1块磁盘出故障的时候,利用公式1恢复数据,这个过程不需要Q这部分校验数据,如图2所示,这个过程是和RAID 5一样的。 7 X% r) L, K$ y1 f4 K
' U! t1 g; p' o! }+ U5 s5 O5 \
图2 在RAID-6(6D + 2P)中恢复D3数据 7 S% J; G- P2 ?
图2 :在本图中展示了存放D3数据的盘出现故障的恢复过程
2 x5 ]/ D7 R6 U
公式: 3 J% _6 i' H/ `- T
D3 = D0 XOR D1 XOR D2 XOR P XOR D4 XOR D5 4 n7 k( C5 h: S) x
2.2、从2块磁盘故障中恢复数据
当同时有2块磁盘故障的时候,需要同时用到公式1和公式2来恢复数据,如图3所示。
图3在RAID-6(6D + 2P)中恢复D3和D4数据
]
1 B m8 q9 j5 j! j1 z ^
图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 ; W: h$ x6 p4 d$ F. \& M# h6 o
D3和D4由解以上两个联立的方程得出结果
数据分布
如图4所示,通过条带化,把应用数据和校验数据打散到一个RAID组的8个磁盘中,可以充分保证读写性能和数据的安全性。
图4 RAID-6的数据分布 ' P. I; x1 N$ y m
* F1 @0 g2 k& Z0 l4 P
图4 :RAID-6可以保证同一个RAID组中两块磁盘故障的情况下的数据安全