存储 频道

存储那点事:关于RAID保护

  RAID 6底层原理探讨

  1、概述

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

  图1 RAID-6校验数据生成公式

 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数据

 RAID 6底层原理探讨

  图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数据

 RAID 6底层原理探讨

  图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的数据分布

 RAID 6底层原理探讨

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

0
相关文章