RAID-6的全称为“IndependentData disks with two independent distributed parity schemes(带有两个独立分布式校验方案的独立数据磁盘)”。
RAID-6是在RAID-5 基础上,为了进一步加强数据保护而设计的一种RAID级别,与RAID-5 的不同之处于在于,RAID-6采用双重校验方式,能够防止两块成员盘故障而引起的数据丢失,因此RAID-6的数据冗余性能相当好。
但是,由于RAID-6增加了一个校验,所以数据写入的效率比RAID-5还要低很多,而且RAID控制器的设计也更为复杂。另外,RAID-6的磁盘空间利用率也比RAID-5低。
前文介绍过,RAID-6有很多的标准,包括Intel公司的P+Q双校验RAID-6、NetApp公司的双异或RAID-6(也称为RAID-DP)、X-Code编码RAID-6、ZZS编码RAID-6、Park编码RAID-6、EVENODD编码RAID-6等,本节将介绍这些RAID-6的结构。
1.10.1
P+Q双校验RAID-6数据组织原理P+Q双校验RAID-6是指在RAID-6除了采用RAID-5的异或校验以外,还增加了一个“Q”校验位,其数据组织结构如图1-41所示。
图1-41
P+Q双校验RAID-6数据分布图
在图1-41中,“D0、D1、D2…
”是数据块,“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在两块成员盘离线的情况下依然能够得到完整数据,具体算法分析如下:
情况一,一块成员盘离线
以图1-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”。
情况二,两块成员盘离线
以图1-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( )编码就可以得到D7的值。
1.10.2
NetApp双异或RAID-6数据组织原理NetApp公司推出的双异或RAID-6也称为RAID-DP,它实际上也就是双RAID-4技术,所谓双RAID-4技术主要是说在同一磁盘阵列中组建两个独立的不同算法的校验磁盘,在单校验磁盘下工作原理与RAID-4一样,但增加了一个校验盘之后,则使整个磁盘阵列的安全性得到提高,能够允许两块盘同时离线。
构建RAID-DP最少需要4块物理盘才能实现,下面以6块物理盘为了进行说明,其数据分布情况如图1-42所示:
图1-42
RAID-DP数据分布图
图1-42中“P0、P1、P2、P3”是第一个独立的校验信息,属于横向校验,其中:
P0=D0⊕D1⊕D2⊕D3;
P1=D4⊕D5⊕D6⊕D7;
P2=D8⊕D9⊕D10⊕D11;
P3=D12⊕D13⊕D14⊕D15。
图1-42中“DP0、DP1、DP2、DP3”是第二个独立的校验信息,属于斜向校验,其中:
DP0=D0⊕D5⊕D10⊕D15;
DP1=D1⊕D6⊕D11⊕P3;
DP2=D2⊕D7⊕P2⊕D12;
DP3=D3⊕P1⊕D8⊕D13。
因为有第二个独立的校验信息存在,所以理论上RAID-DP即使两块成员盘同时离线也不会出现故障。
下面我们来分析在两块成员盘同时离线的情况下,RAID-DP如何保持数据的完整性。
假设成员盘中的硬盘0和硬盘1同时离线,如图1-43所示。
图1-43
硬盘0和硬盘1同时离线的RAID-DP
从图1-43可以看出,硬盘0和硬盘1同时离线后,数据块D0、D1、D4、D5、D8、D9、D12、D13丢失,在RAID-DP运行过程中,RAID控制器将用剩下的数据块和校验块计算出丢失的数据块,计算过程如下:
第一步,计算数据块D1
因为DP1=D1⊕D6⊕D11⊕P3,
所以D1= DP1⊕D6⊕D11⊕P3。
通过这个计算式将得到丢失的数据块D1,如图1-44所示。
图1-44
计算出丢失的数据块D1
第二步,计算数据块D0
因为P0=D0⊕D1⊕D2⊕D3,
所以D0= P0⊕D1⊕D2⊕D3。
通过这个计算式将得到丢失的数据块D0,如图1-45所示。
图1-45
计算出丢失的数据块D0
第三步,计算数据块D5
因为DP0=D0⊕D5⊕D10⊕D15,
所以D5=D0⊕DP0⊕D10⊕D15。
通过这个计算式将得到丢失的数据块D5,如图1-46所示。
图1-46
计算出丢失的数据块D5
第四步,计算数据块D4
因为P1=D4⊕D5⊕D6⊕D7,
所以D4= P1⊕D5⊕D6⊕D7。
通过这个计算式将得到丢失的数据块D4,如图1-47所示。
硬盘0和硬盘1中的其他数据块也可以用同样方法算出。
- 工程师微信二维码
- 微信扫一扫添加好友可直接咨询数据恢复相关问题
- 关注盘首微信小程序
- 扫描微信小程序查看大量数据恢复技术视频教程