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

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

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

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

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

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

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

     (打??!在這發帖子又沒稿費,不用拼命湊字?。?br />

    總之這個算法的“重復單元”有點大。在實際應用中,這么大的“重復單元”使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就說了,“研究了這么多算法,最終目的不就是壞兩顆盤數據仍可恢復嗎。到頭來算法搞得那么復雜,還不如我的看家本領??窮舉法??更實在?!?br />

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

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

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

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

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

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

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


全文完


    本文版權歸作者及DoSTOR所有,如需轉載請與本站聯系!

未經允許不得轉載:存儲在線-存儲專業媒體 » DoSTOR技術大講堂:RAID-6原理解析連載(三)
分享到

dostor

相關推薦

精品国产午夜肉伦伦影院,双性老师灌满浓jing上课h,天天做天天爱夜夜爽,攵女乱h边做边走