[疯狂公式之伽罗瓦域运算和里德-所罗门编码]
伽罗瓦域(Galois Field)预算是在RAID6在进行双位校验需要用到的数学原理。它包括+,-,×, ÷四种运算,其中+,-操作和XOR运算一样,表示为⊕;而×表示为乘以基数,表示为⊙;同样,÷定义为,若A=C÷B,则C=A⊙B。
表-1 十进制运算和伽罗瓦域运算对比
因此可以得到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写入和恢复过程中的作用。要打起精神哦,下面的路仍然很长。。。。