NetApp公司推出的双异或RAID-6也称为RAID-DP,它实际上也就是双RAID-4技术。所谓双RAID-4技术主要是说在同一磁盘阵列中组建两个独立的不同算法的校验磁盘,在单校验磁盘下工作原理与RAID-4一样,但增加了一个校验盘之后,则使整个磁盘阵列的安全性得到提高,能够允许两块盘同时离线。
构建RAID-DP最少需要4块物理盘才能实现。下面以6块物理盘为例进行说明,其数据分布情况如图15-42所示。
图15-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
图15-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同时离线,如图15-43所示。
从图15-43可以看出,物理盘0和物理盘1同时离线后,数据块D0、D1、D4、D5、D8、D9、D12、D13丢失,在RAID-DP运行过程中,RAID控制器将用剩下的数据块和校验块计算出丢失的数据块,计算过程如下:
因为DP1=D1⊕D6⊕D11⊕P3,所以D1=DP1⊕D6⊕D11⊕P3,通过这个计算式将得到丢失的数据块D1,如图15-44所示。
因为P0=D0⊕D1⊕D2⊕D3,所以D0=P0⊕D1⊕D2⊕D3,通过这个计算式将得到丢失的数据块D0,如图15-45所示。
因为DP0=D0⊕D5⊕D10⊕D15,所以D5=D0⊕DP0⊕D10⊕D15,通过这个计算式将得到丢失的数据块D5,如图15-46所示。
因为P1=D4⊕D5⊕D6⊕D7,所以D4=P1⊕D5⊕D6⊕D7,通过这个计算式将得到丢失的数据块D4,如图15-47所示。
因为DP2=D2⊕D7⊕P2⊕D12,所以D12=D2⊕D7⊕P2⊕DP2,通过这个计算式将得到丢失的数据块D12,如图15-48所示。
因为P3=D12⊕D13⊕D14⊕D15,所以D13=D12⊕P3⊕D14⊕D15,通过这个计算式将得到丢失的数据块D13,如图15-49所示。
因为DP3=D3⊕P1⊕D8⊕D13,所以D8=D3⊕P1⊕DP3⊕D13,通过这个计算式将得到丢失的数据块D8,如图15-50所示。
现在还剩下最后一个数据块D9需要计算。
因为P2=D8⊕D9⊕D10⊕D11,所以D9=D8⊕P2⊕D10⊕D11,通过这个计算式将得到丢失的数据块D9,如图15-51所示。
到此为止,丢失的数据块D0、D1、D4、D5、D8、D9、D12、D13已经全部计算出来,物理盘0和物理盘1中的其他数据块也可以用同样方法算出。