天天看點

北亞工程師詳解資料恢複中RAID6結構

【什麼是raid】

【單一備援模型】

北亞工程師詳解資料恢複中RAID6結構

根據上圖,可以很容易的分析出,不管這3頁中的哪一頁丢失,都可以通過另兩頁計算另一頁的資料來。很顯然,即使是超過3頁的情況,按上述方式設計記錄模式,也可以支援任意一頁記錄的丢失。

北亞工程師詳解資料恢複中RAID6結構

可以很清晰得看到,第三行的校驗和,不再是3個數字,而且不論多少個資料成員,用異或得到的校驗和容量不會累加。

d1 + d2 + d3 + ... +dn-1 = p1

dx = p1 - d1 - d2 - d3 - ... -dn-1(d序列中排除dx)

也就是:dx = p1 + d1 + d2 + d3 +... +dn-1(d序列中排除dx)

【多次備援模型】

常用0x11d做為raid6的本原多項式,意思是2的n次方如果大于0x11d,就對于做xor的取餘運算,確定結果小于0x256,這樣就可以算出2^0到2^255之間的所有數值。

【raid6】

北亞工程師詳解資料恢複中RAID6結構

之是以p和q螺旋式循環分布,是為了使所有磁盤負載均衡,如果不好了解,可以把p和q單獨放在一列中,算法的意義是相同的。

再重複一下,下面提及的+、-、*、/運算都是指基于gf(2^8)上的加、減、乘、除

p值等于同一行(條帶)上的所有單元相加的和。或者可以了解為1與每個單元相乘後的累加和,如第一個條帶的p:

在gf(2^8)上,每個多項式對應一個0~255的值,即d0對應多項式x的0次幂,d1對應多項式x的2次幂等,按多項式展開,x為2進制,故d0 = 1,d1 =2,d2=4 ,d3=8,等等,如下表所示:

北亞工程師詳解資料恢複中RAID6結構

傳回raid結構圖中,q值等于每個數值單元格乘以他們的相應的dn再累加的結果,其中dn可約定,隻需保證同一條帶的運算中不重複出現dn即可,如第一行的q可以為:

q = d1 x1 + d2x2 +d3*x3

這樣,對于每一行(條帶),就可以保證任意2個單元丢失,都可以計算出來(為了明了,以下計算直接将減法改為加法):

以第一行為例:

a) 如果p,q均丢失,資料區不影響,x1,x2,x3均可正常讀寫

b)如果xn丢失,根據p或q都可計算出來(實際中,因p 的計算更快速,通常會使用p校驗計算出丢失的 xn)

c)如果p,xn丢失,p值不做處理,假設丢失的是x2,根據q值的定義

p = x1+x2+x3

=> x1 = p + x2 + x3

=> q = d1 (p + x2 + x3) +d2x2 +d3*x3

=> q = d1p + d1x2 + d1 x3 + d2x2 + d3*x3

=> q = d1p + d1x2 + d2x2 + d1x3 + d3*x3

=> q + d1p + d1x2 + d2x2 = (d1+d3) x3

=> x3 = ( q + d1p + d1x2 + d2*x2) / (d1+d3)

繼續閱讀