如果你需要实际配置和操作RAID6,或者你希望在听厂商洗脑的时候有一定的辨别能力,那么还请您耐住性子慢慢看下来。本文介绍的这些抽象的数学算法,可以让你更好的理解RAID6技术,尤其到我们连载系列第三节讲述真假RAID6的时候,会帮助你理解得更加直接和深刻。
先做好接收烦恼的准备吧,下面让我们一起进入疯狂的公式世界。@_@
首先我们先介绍一些后面必然会涉及到的基础概念,就像如果我们要解释E=MC8就必须先说清楚,什么是E,什么是M,什么是C等等。我们首先介绍XOR校验。
[疯狂公式之一XOR校验]
XOR算法是RAID运算里最基础的概念,也是RAID5的容错原理,在RAID6里也将频繁涉及到。
XOR最基本的bit运算法则为:1⊕1 = 0, 0⊕0=0, 1⊕0=1.因此,会衍生出如下的byte运算法则,对于byte数据M来说:M⊕M=0, M⊕0=M。
如果P为数据块X,Y,Z计算的XOR 值,也就说P = X⊕Y⊕Z时;当X数据块故障时,可以通过P,Y,Z来得到它,也就是X = P⊕Y⊕Z = (X⊕Y⊕Z) ⊕Y⊕Z=X⊕(Y⊕Y) ⊕(Z⊕Z)。
这就是基于XOR运算的RAID5能够允许一个存储设备故障的根本原因。
[疯狂公式之伽罗瓦域运算和里德-所罗门编码]
伽罗瓦域(Galois Field)预算是在RAID6在进行双位校验需要用到的数学原理。它包括+,-,×, ÷四种运算,其中+,-操作和XOR运算一样,表示为⊕;而×表示为乘以基数,表示为⊙;同样,÷定义为,若A=C÷B,则C=A⊙B。
因此可以得到GF(8)在产生多项式X8+ X4+ X3+ X2+1情况下运算表为:

表-2 GF(8)运算表
对应GF(8)的逆运算表GF-1(8)为:

表-3 GF-1(8)运算表
从而,在GF运算的乘除操作将通过查表完成,如
0x2⊙0x8 = gfilog [gflog[2] + gflog[8]] = gfilog[1+3]
= gfilog[4] = 0x10 (参考表-2,表-3中红色字体)
0xd÷0x11 = gfilog[gflog[0xd] - gflog[0x11]]
= gfilog[0x68 - 0x64]
= gfilog[4]
= 0x10
里德--所罗门编码
Reed-Solomon编码,是欧文.里德(Irving Reed)和格斯.所罗门(Gus Solomon)于1960年发布的一种纠错编码。他使用伽罗瓦域(GF)运算法则,能提供在RAID6中Q校验计算的系数,并提供错误恢复功能。
它是最大距离可分码(MDS码,Maximum Distance Separable Code)的一种类型;表示为RS(n,k),其中n表示每个码字(codeword)符号的总数,k表示每个码字(codeword)中数据符号的总数。

图-3 RS码字
其中2t = n – k,对于RAID6来说2t=2,所以它能修复两个磁盘损坏;如果符号(symbol)的长度为s,那么码字的长度n=2s – 1。
当采用byte长度(8bit)为Symbol时,其最大码字长度为n = 28–1=255,所以它此时支持255个磁盘 ,其中253个为数据盘,剩下2个为校验盘。
看完这些数学概念,你是不是已经快疯掉,好在我们的概念到此为止就结束了,下面我们会介绍这些数学概念在RAID6写入和恢复过程中的作用。要打起精神哦,下面的路仍然很长。。。。
[1] [2] 下一页

【责编:Chuan】