盤夫上海數据恢复

Chinese

English

上海盤夫數据恢复中心 首頁 | 硬盤數据恢复 | 數据恢复費用 | 恢复成功案例 | 技術專區 | 聯系我們 | 网站地圖
 
硬盤數据恢复聯系我們:021-52730141 13917179384
 

RAID-6原理解析

有關各种RAID技術的討論一直在各個厂商以及用戶之間爭執不休,好象做存儲的,張口閉口都會說自家的RAID技術實現起來多么多么好,別家的技術有多大多大的缺陷,但有多少人真正了解RAID技術的實質呢?好在有DoSTOR這個大平台,可以幫助大家解惑,本次我們就請來DoSTOR特約技術專家董唯元先生,深入淺出的告訴各位,RAID-6是什么。

既然是講原理,那些“為什么需要RAID6”、“RAID6的优勢”等內容就都省去了。直接進入枯燥無趣的理論。

一、RAID5和XOR運算

為了照顧初學者,還是先把相關基本概念介紹一下,老手可以跳過這部分直接看下面。(別低頭!是看本帖下面,想些什么吶∼)

XOR運算是數理邏輯的基本運算之一,在課本上的符號是一個圓圈里面一個加號。實在懶得用插入符號功能,大家就湊合著看吧。

兩個數字之間的XOR運算定義是:

1 XOR 1 = 0
1 XOR 0 = 1
0 XOR 1 = 1
0 XOR 0 = 0
(忽然想起試行新車牌的時候,有些深圳人用三位二進制數標記性別。010是男的,101是女的。Sorry,扯遠了。)

多個數字XOR的時候,有兩個特點:

A)結果与運算順序無關。也就是 (a XOR b) XOR c = a XOR (b XOR c)。
B)各個參与運算的數字与結果循環對稱。如果 a XOR b XOR c = d,那么a = b XOR c XOR d;b = a XOR c XOR d;c = a XOR b XOR d。
磁盤陣列中的RAID5之所以能夠容錯,就是利用了XOR運算的這些特點。上面例子中的a、b、c、d就可以看作是四顆磁盤上的數据,其中三個是應用數据,剩下一個是校驗。碰到故障的時候,甭管哪個找不到了,都可以用剩下的三個數字XOR一下算出來。

在實際應用中,陣列控制器一般要先把磁盤分成很多條帶(英文叫Stripe,注意不是Stripper),然后再對每組條帶做XOR。

見下面第一個圖:

 

P1 = 數据a XOR 數据b XOR 數据c
P2 = 數据d XOR 數据e XOR 數据f
P3 = 數据g XOR 數据h XOR 數据i
P4 = 數据j XOR 數据k XOR 數据l
掃盲部分就講這么多,再不懂就google吧,滿山遍野都是RAID5算法的介紹。

二、RAID6和Reed-Solomon編碼

本來想寫成“李德-所羅門編碼”,但那**就不方便大家一邊看帖子一邊google了。Reed-Solomon編碼是通訊領域中經常碰到的一個算法,已經有15年以上的歷史了。(靠!講存儲嘛,跟通訊有個鳥關系?)

其實很多校驗算法都是通訊領域最先研究出來,然后才應用到其他領域的。前面說到的XOR算法對一組數据只能產生一個校驗,搞通訊的工程師們覺得不夠可靠,于是就研究出很多能對一組數据產生多個校驗的算法。Reed-Solomon編碼是其中應用最廣泛的一個,咱們以前經常用的ADSL、xDSL、高速Modem都有采用。后來手机、衛星電視、數字電視、CD唱片、DVD、條碼系統、還有……(有完沒完!說存儲呢!)連高級點儿的服務器內存也用這個算法做校驗和糾錯。(總算跟存儲沾上點儿邊∼)

現在存儲的工程師也覺得RAID5中只能容忍一顆磁盤离線不夠理想,需要一种容忍多顆磁盤离線的技術,自然就會想到Reed-Solomon編碼啦。把這种算法應用到存儲中,就可以讓N顆磁盤的空間裝應用數据,M顆磁盤的空間裝校驗碼(對一組N個數据生成M個校驗,但實際上校驗碼是分散在所有磁盤上的),這樣只要离線的磁盤不大于M顆,數据就不會丟失。

Reed-Solomon編碼理論中有一個公式:

N + M + 1 = 2的b次方(在電腦里寫公式真是麻煩!)

其中b是校驗字的位數。(校驗字是生成校驗過程需要用的一個東東,不是最后的校驗碼。)舉例來說,如果用8位的字節做校驗字,那么M + N = 255,而RAID6是特指M = 2,這樣N = 253。

就是說,用8位字節做校驗字的話,理論上一個RAID6的磁盤組可以容下253顆磁盤。

當然啦,實際應用中,太多的磁盤一起做運算會嚴重影響性能,所以陣列控制器和芯片的設計者都會把磁盤組的容量限制在16顆左右。(做了這么多無聊算術題,還是沒提RAID6到底是啥!)喂!喂!別走啊,很快就講到RAID6的實現啦。

賣了這么多關子,實在是因為RAID6這個概念所指的意義太混亂。從功能上講,能實現兩顆磁盤掉線容錯的,都叫RAID6。(至少我認識的銷售們都這么認為。)但是實行這一功能的方式卻有很多很多。(沉默3分鐘)

真的很多!哎喲!別打啊∼

Intel的P+Q RAID6,NetApp的RAID-DP,HP的RAID5-DP,還要很多實驗室中的原型机都能實行這個功能。但是由于机制不同,各种所謂的RAID6,其性能表現、磁盤負載分布、錯誤恢复方式都完全不同。

你讓我從哪說起好哩?

三、基于P+Q的RAID6

在Intel的80333IOP芯片中,有一個新的引擎叫P+Q單元,是專門用來處理RAID6加速的。詳情請查閱Intel官方网站……(雞蛋、西紅柿、拖鞋。咦!這是誰的臭襪子?)

對比RAID5的机制,Intel的P+Q RAID6是這**寫磁盤的:

見下面第二個圖:

 

這里每個條帶中的P,跟RAID5里面的P意義完全一樣,就是同一條帶中除Q以外其它數据的XOR運算結果。而Q呢,就是理解這個技術的關鍵所在了。

咳∼咳∼听好了。

Q是同一條帶中各數据的女朋友們進行XOR運算的結果。別翻白眼啊,書上就是這么寫的啊!哦,還是英文的,我翻譯給你听。

“把條帶中每個數据分別GF一下,然后這些結果再XOR,就得到Q。”(大哥,你到底懂不懂啊!GF是Galois Field的縮寫,是法國著名數學奇才伽羅瓦發明的一种數學變換。)

哦,想起來了。伽羅瓦嘛,發明群論的那個。生于法國大革命前,二十出頭就英年早逝,還是為了個姑娘跟人決斗被打死的。最著名的成果就是給3次以上方程判了死刑。是我人生第二偶像啊……(唐僧!)

這個GF變換呢,就是這個淘气的伽同學當年為了逃避老師點名,而發明的一种教室換座位方法。按照這种方法,每個人都不會坐在自己的座位上,而且每個人都肯定會有座位。而且任意個同學的座位號進行XOR運算之后,仍然跑不出這個教室里的座位號。(這個伽同學好像很無聊噢!沒辦法,人家聰明嘛!)

扯太遠啦!回到正題。

在Intel 80333IOP中存著兩個表格,分別對應GF正向變換和反向變換。任何一個8位二進制數,都可以直接在表格中查到對應的GF變換結果。(我還是想把這個結果說成是源數据的女朋友∼)

這兩個表格分別在Intel 80333IOP研發手冊的第445頁和446頁,不過我估計大部分人會懶得去看。也是,看了又能怎么**呢?反正Intel已經把那玩意固化到芯片里了。(哇!都半夜2點了,說完P+Q RAID6的恢复,我要先zZZ……了。)

如果一顆磁盤掉線,根本不需要Q用P直接就搞定了,跟RAID5一樣。

如果兩顆磁盤掉線,又分做兩种情況:

A)坏的地方有Q。這种情況跟RAID5坏一顆磁盤一樣,用XOR就恢复了。
B)坏的地方沒有Q。用GF變換加XOR一起搞定。
結合上面表格的例子,如果磁盤5和磁盤6掉線。那條帶1和條帶2就屬于情況A;而條帶3、4、5和6屬于情況B。

其實P+Q只是一种算法,Intel IOP里面的硬件加速引擎并不是必須的。有一些產品就采用了PowerPC等不含P+Q引擎的CPU,一樣不耽誤P+Q RAID6功能。GF轉換表在軟件里完成就是了。

四、准RAID6技術

除了P+Q RAID6,還要好多种辦法可以實現對兩顆磁盤掉線的容錯。

网友Billylee提供的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要簡單,但是根据“麻煩守琠w律”,正向工作簡單的事情,一般反向工作都會复雜。

備份和恢复一般也遵循這個規律。(別跟我提CDP,那東西遵循的是廣義麻煩守琠w律。每個I/O都打個時間標簽,還都當寶貝存著不扔,這能是個不麻煩的事嗎?Sorry,又扯遠了。)

當兩顆磁盤掉線的時候,Dual-XOR的算法只能支持逐個數据塊的恢复,而且不同條帶之間還要共同參与計算。

比如圖中的磁盤1和2掉線,恢复數据e的時候,就要至少動用到數据f、Pb3、Pa4和Pb5。而數据c和Pa3的恢复還要依賴數据e的恢复。

總之恢复起來是件賊頭痛的事情!

雖然Intel的Dual-XOR理論意義大于實際意義,但其改良的版本RAID-DP卻已經被NetApp產品化。NetApp之所以喜歡這個類似Dual-XOR的RAID-DP算法,原因也很簡單。

NetApp原本用的就是RAID4,而不是RAID5,其算法的中心思想就是每次I/O只跟兩顆磁盤打交道就OK,自然就不會在乎RAID-DP中很多動作都只跟兩、三顆磁盤打交道。(這個思想也許在很多RAID5的Fans看來有點奇怪,難道不是磁頭越多性能就越好嗎?但是人家NetApp這么多年的經驗都集中在WAFL文件系統上,而WAFL文件系統又是專門針對這种思想优化的。所以NetApp對這個略有异類的思想不僅沒有放棄,而且越研究越起勁。

 

這個遞歸式數据恢复机制簡直像在玩RPG游戲,但是對WAFL文件系統來說,卻的确是最合适的選擇之一。

除了RAID-DP,還有X-Code編碼、ZZS編碼、Park編碼……都可以看做是“准RAID6”。

X-Code從理論上看,的确是個負載均衡、計算簡單(只有XOR,沒有類似GF一**的變換)、磁盤對稱度很高的算法。但是實際應用還是有問題。

20樓的例子是5顆磁盤的X-Code編碼方式,例子中的5個條帶是一個整体,一起處理。如果寫入的數据不多,沒有寫滿前3個條帶,就需要在寫入的同時,把未更新的數据讀出來,湊齊3x5個數据,再一起計算校驗碼。

如果是6顆磁盤,那就要6個條帶作為一個整体。

7顆磁盤一個RAID組,就需要7個條帶一個整体。

8顆磁盤一個RAID組,就需要8個條帶一個整体。

9顆磁盤一個RAID組,就需要9個條帶一個整体。

10顆磁盤一個RAID組,就需要10個條帶一個整体……

(打住!在這發帖子又沒稿費,不用拼命湊字!)

總之這個算法的“重复單元”有點大。在實際應用中,這么大的“重复單元”使X-Code的應用面臨兩個問題:計算量大和空間浪費。(可能還有其他問題,比如名字太難听,總讓人聯想到黃色的東東。)

ZZS也叫俄羅斯編碼,bingo!猜對了,真聰明。這就是三個俄羅斯人在1983年提出的一种編碼方式,ZZS就是三個人名字首字母縮寫,跟S.H.E.演唱組的命名規則一樣。

与X-Code相比,ZZS的“重复單元”就小很多求求7顆磁盤的時候,3個條帶是一個整体。

人家ZZS論文里給出的是數學公式:n顆磁盤的時候,(n-1)/2個條帶是一個整体。

從這個公式你應該能發現ZZS編碼的一個要求……(我知道,只支持單數顆磁盤。)

嘿嘿!你錯了!實際上,ZZS算法只支持磁盤的個數為素數:……5、7、11、13、17……

不過人家ZZS組合(暫時就這么稱呼吧)也指出,ZZS算法允許其中一顆磁盤上面全寫0。這**就可以在應用中支持4、6、10、12、16……(素數-1)顆盤了。

什么?還沒明白?在計算的時候,內存里虛擬一個全0的影子盤不就行啦!

Park編碼

Park是名IBM的員工,在Yorktown上班。他的業余愛好是……(Sorry,又差點跑題)

相比俄國人訓練有素的數學功底,美國人既沒有興趣,也沒有耐心再從算法上去优化“雙重校驗”的技術。但是美國人講求實際的思想還是挺值得稱道。

這不,人家Park就說了,“研究了這么多算法,最終目的不就是坏兩顆盤數据仍可恢复嗎。到頭來算法搞得那么复雜,還不如我的看家本領求求窮舉法求求更實在。”

Park同志是這樣說的,也是這樣做的(凝重的音樂聲響起∼)

他編了一個程序,讓計算机幫他搜索給定磁盤數量的校驗分布模式。

結果你猜怎么著,人家還真有收獲。從3顆磁盤到38顆磁盤,除了8顆磁盤和9顆磁盤的情況,其他情況Park都找到了滿足要求的校驗分布模式。

什么?你問滿足的是什么要求?兩顆磁盤掉線數据可恢复啊。汗!

后來,一個名叫徐力浩(音)的中國人補上了8顆盤和9顆盤的校驗分布表。(咱們中國人到底還是比米國人聰明那么一點點,哈∼)

現在Park編碼已經對從3顆到38磁盤的所有情況,都能給出雙重校驗分布方法。但是各种分布方法之間根本沒有聯系,所以只能在給定磁盤數量的時候,去查Park編碼表。

Park編碼的樣子都是以3個條帶為一個“重复單元”,其中1個條帶專門用來存校驗,另外2個存數据。

 

 

 



  

  

 


PAFU 數据恢复工程師建議
  • PAFU 數据恢复工程師建議:數据恢复很重要,數据備份最重要!一旦您意識到數据丟失,立即停止對硬盤(或其它存儲媒介)的一切操作-不要恢复系統,不要往硬盤上再寫數据,不要反复讀盤,否則會對數据造成二次破坏,需要我們提供服務者請聯系我們,PAFU 數据恢复工程師將竭誠盡心為您服務。
  • 新聞20050606
     
    硬盤型號查詢厂商
    關鍵字
    硬盤型號查詢厂商
    硬盤固件信息交流
    RAID-6原理解析
    數据恢复服務承諾:
    硬盤故障檢測免費
    恢复不出數据不收費用
    恢复出的數据客戶不需要不收費用
    免費提供3天數据備份
    免費技術咨詢指導
    整個恢复過程不對客戶原盤有任何寫操作,确保原盤數据完全。
     
     
    上海數据恢复友情鏈接
    上海數据恢复

    上海數据恢复
    上海硬盤數据恢复

    關于我們服務內容网站地圖聯系方式加入收藏
    電話:021-52730141 13917179384 郵箱:linking@yeah.net
    地址:上海市武夷路697號玉溪商務中心409室  郵編:200051