P+Q双校验RAID-6是指在RAID-6中除了采用RAID-5的异或校验以外,还增加了一个“Q”校验位,其数据组织结构如图15-41所示。
在图15-41中,D0、D1、D…是数据块,P0、P1、P2…是P校验块,Q0、Q1、Q2…是Q校验块。
P校验依然使用异或算法得出,即P0=D0⊕D1、P1=D2⊕D3。
Q校验使用基于伽罗华域(Galois Field,GF)的里德-所罗门(Reed-Solomon)编码计算得出,即Q0=GF(D0)⊕GF(D1)、Q1=GF(D2)⊕GF(D3),其中GF(D0)的含义是对D0进行伽罗华域的里德-所罗门编码变换。
里德-所罗门编码是欧文·里德(Irving Reed)和格斯·所罗门(Gus Solomon)于1960年发布的一种纠错编码,它使用伽罗华域运算法则。对于伽罗华域和里德-所罗门编码感兴趣的读者可以查看专业数学书籍。
P+Q双校验RAID-6在两块成员盘离线的情况下依然能够得到完整数据,具体算法分析如下:
以图15-41为例,假设“物理盘3”离线,下面对每个条带组的数据分别进行分析。
(1)0号条带组。“物理盘3”离线后,0号条带组中缺失Q0校验块,不影响数据块D0和D1。
(2)1号条带组。“物理盘3”离线后,1号条带组中缺失D3数据块,RAID控制器可以通过计算式D2⊕P1得出D3。
(3)2号条带组。“物理盘3”离线后,2号条带组中缺失D5数据块,RAID控制器可以通过计算式D4⊕P2得出D5。
(4)3号条带组。“物理盘3”离线后,3号条带组中缺失P3校验块,不影响数据块D6和D7。
以图15-41为例,假设“物理盘2”和“物理盘3”离线,RAID-6中只剩下“物理盘0”和“物理盘1”,下面对每个条带组的数据分别进行分析。
(1)0号条带组。“物理盘2”和“物理盘3”离线后,0号条带组中缺失P0和Q0校验块,不影响数据块D0和D1。
(2)1号条带组。“物理盘2”和“物理盘3”离线后,1号条带组中缺失Q1校验块和D3数据块,Q1校验块不用理会,RAID控制器可以通过计算式D2⊕P1得出D3。
(3)2号条带组。“物理盘2”和“物理盘3”离线后,2号条带组中缺失D4和D5数据块,只剩下P2和Q2两个校验块,RAID控制器可以通过以下方程式计算出D4和D5。
(4)3号条带组。“物理盘2”和“物理盘3”离线后,3号条带组中缺失D7数据块和P3校验块,只剩下Q3校验块和D6数据块。对于P3校验块不用理会,而对于D7数据块,RAID控制器先计算出Q3⊕D6的结果,再通过GF(28)编码就可以得到D7的值。