存储 频道

RAID6及“准RAID6”算法介绍(2)

【IT168 资讯】

  三、基于P+Q的RAID6

  在Intel的80333IOP芯片中,有一个新的引擎叫P+Q单元,是专门用来处理RAID6加速的。详情请查阅Intel官方网站,下课……(鸡蛋、西红柿、拖鞋。咦!这是谁的臭袜子?)

  好啦~当偶真不知道啊!

  Intel的P+Q RAID6是这样写磁盘的:

  这里每个条带中的P,跟RAID5里面的P意义完全一样,就是同一条带中除Q以外其它数据的XOR运算结果。

  而Q呢,就是理解这个技术的关键所在了。

  咳~咳~听好了。

  Q是同一条带中各数据的Galois Field进行XOR运算的结果。

  “找到条带中每个数据的GF,然后这些GF再XOR一下,就得到Q。”

  (大哥,你到底懂不懂啊!GF是Galois Field的缩写,是法国著名数学家伽罗瓦发明的一种数学变换。)

  哦,想起来了。伽罗瓦嘛,发明群论的那个。生于法国大革命前,二十出头就英年早逝,还是为了个姑娘跟人决斗被打死的。最著名的成果就是给3次以上方程判了死刑。是我人生第二偶像啊……

  这个GF变换呢,就是这个淘气的伽同学当年为了逃避老师点名,而发明的一种教室换座位方法。按照这种方法,每个人都不会坐在自己的座位上,而且每个人都肯定会有座位。而且任意个同学的座位号进行XOR运算之后,仍然跑不出这个教室里的座位号。

  (这个伽同学好像很无聊噢!没办法,人家聪明嘛!)

  扯太远啦!回到正题。

  在Intel 80333IOP中存着两个表格,分别对应GF正向变换和反向变换。任何一个8位二进制数,都可以直接在表格中查到对应的GF变换结果。(我还是想把这个结果说成是源数据的女朋友~)

  这两个表格分别在Intel 80333IOP研发手册的第445页和446页,不过我估计大部分人会懒得去看。也是,看了又能怎么样呢?反正Intel已经把那玩意固化到芯片里了。

  如果一颗磁盘掉线,根本不需要Q用P直接就搞定了,跟RAID5一样。

  如果两颗磁盘掉线,又分做两种情况:

  A)坏的地方有Q。这种情况跟RAID5坏一颗磁盘一样,用XOR就恢复了。

  B)坏的地方没有Q。用GF变换加XOR一起搞定。按照Intel的官方说法,是用“恢复矩阵”进行恢复。

  结合上面表格的例子,如果磁盘5和磁盘6掉线。那条带1和条带2就属于情况A;而条带3、4、5和6属于情况B。

  其实P+Q只是一种算法,Intel IOP里面的硬件加速引擎并不是必须的。有一些产品就采用了PowerPC等不含P+Q引擎的CPU,一样不耽误P+Q RAID6功能。

  GF转换表在软件里完成就是了。


  四、Dual-XOR

  除了P+Q RAID6,还要好多种办法可以实现对两颗磁盘掉线的容错。

  Intel提到一种Dual-XOR算法,这种方法就是取横向和斜向两个方向进行XOR运算,这样每个应用数据都在两个校验中留下痕迹,当两颗磁盘掉线时,就可以恢复数据。

  但是Dual-XOR的恢复工作异常复杂艰苦,并不实用。很多技术人员研究这种算法的意义,完全是把它当作未经优化的原型思想。

  如图,Pa是横向的校验,跟RAID5完全一样:

  Pa1 = 数据a XOR 数据b

  Pa2 = 数据c XOR 数据d

  …………

  Pa6 = 数据k XOR 数据l

  Pb是斜向校验,定义为:

  Pb4 = 数据a XOR Pa2 XOR数据f

  Pb5 = 数据c XOR 数据e XOR Pa4

  Pb6 = Pa3 XOR数据h XOR 数据j

  可以看出Dual-XOR的校验生成过程比P+Q要简单(没有GF,生活就是简单!),但是根据“麻烦守恒定律”,正向工作简单的事情,一般反向工作都会复杂。

  备份和恢复一般也遵循这个规律。

  (别跟我提CDP,那东西是遵循的是广义麻烦守恒定律。每个I/O都打个时间标签,还都当宝贝存着不扔,这能是个不麻烦的事吗?Sorry,又扯远了。)

  当两颗磁盘掉线的时候,Dual-XOR的算法只能支持逐个数据块的恢复,而且不同条带之间还要共同参与计算。

  比如图中的磁盘1和2掉线,恢复数据e的时候,就要至少动用到数据f、Pb3、Pa4和Pb5。而数据c和Pa3的恢复还要依赖数据e的恢复。

  总之恢复起来是件贼头痛的事情!

0
相关文章