X-Code從理論上看,的確是個(gè)負(fù)載均衡、計(jì)算簡(jiǎn)單(只有XOR,沒有類似GF一樣的變換)、磁盤對(duì)稱度很高的算法。但是實(shí)際應(yīng)用還是有問題。
20樓的例子是5顆磁盤的X-Code編碼方式,例子中的5個(gè)條帶是一個(gè)整體,一起處理。如果寫入的數(shù)據(jù)不多,沒有寫滿前3個(gè)條帶,就需要在寫入的同時(shí),把未更新的數(shù)據(jù)讀出來,湊齊3×5個(gè)數(shù)據(jù),再一起計(jì)算校驗(yàn)碼。
如果是6顆磁盤,那就要6個(gè)條帶作為一個(gè)整體。
7顆磁盤一個(gè)RAID組,就需要7個(gè)條帶一個(gè)整體。
8顆磁盤一個(gè)RAID組,就需要8個(gè)條帶一個(gè)整體。
9顆磁盤一個(gè)RAID組,就需要9個(gè)條帶一個(gè)整體。
10顆磁盤一個(gè)RAID組,就需要10個(gè)條帶一個(gè)整體……
(打住!在這發(fā)帖子又沒稿費(fèi),不用拼命湊字?。?br />
總之這個(gè)算法的“重復(fù)單元”有點(diǎn)大。在實(shí)際應(yīng)用中,這么大的“重復(fù)單元”使X-Code的應(yīng)用面臨兩個(gè)問題:計(jì)算量大和空間浪費(fèi)。(可能還有其他問題,比如名字太難聽,總讓人聯(lián)想到黃色的東東。)
ZZS也叫俄羅斯編碼,bingo!猜對(duì)了,真聰明。這就是三個(gè)俄羅斯人在1983年提出的一種編碼方式,ZZS就是三個(gè)人名字首字母縮寫,跟S.H.E.演唱組的命名規(guī)則一樣。
與X-Code相比,ZZS的“重復(fù)單元”就小很多??7顆磁盤的時(shí)候,3個(gè)條帶是一個(gè)整體。
人家ZZS論文里給出的是數(shù)學(xué)公式:n顆磁盤的時(shí)候,(n-1)/2個(gè)條帶是一個(gè)整體。
從這個(gè)公式你應(yīng)該能發(fā)現(xiàn)ZZS編碼的一個(gè)要求……(我知道,只支持單數(shù)顆磁盤。)
嘿嘿!你錯(cuò)了!實(shí)際上,ZZS算法只支持磁盤的個(gè)數(shù)為素?cái)?shù):……5、7、11、13、17……
不過人家ZZS組合(暫時(shí)就這么稱呼吧)也指出,ZZS算法允許其中一顆磁盤上面全寫0。這樣就可以在應(yīng)用中支持4、6、10、12、16……(素?cái)?shù)-1)顆盤了。
什么?還沒明白?在計(jì)算的時(shí)候,內(nèi)存里虛擬一個(gè)全0的影子盤不就行啦!
Park編碼
Park是名IBM的員工,在Yorktown上班。他的業(yè)余愛好是……(Sorry,又差點(diǎn)跑題)
相比俄國人訓(xùn)練有素的數(shù)學(xué)功底,美國人既沒有興趣,也沒有耐心再從算法上去優(yōu)化“雙重校驗(yàn)”的技術(shù)。但是美國人講求實(shí)際的思想還是挺值得稱道。
這不,人家Park就說了,“研究了這么多算法,最終目的不就是壞兩顆盤數(shù)據(jù)仍可恢復(fù)嗎。到頭來算法搞得那么復(fù)雜,還不如我的看家本領(lǐng)??窮舉法??更實(shí)在。”
Park同志是這樣說的,也是這樣做的(凝重的音樂聲響起~)
他編了一個(gè)程序,讓計(jì)算機(jī)幫他搜索給定磁盤數(shù)量的校驗(yàn)分布模式。
結(jié)果你猜怎么著,人家還真有收獲。從3顆磁盤到38顆磁盤,除了8顆磁盤和9顆磁盤的情況,其他情況Park都找到了滿足要求的校驗(yàn)分布模式。
什么?你問滿足的是什么要求??jī)深w磁盤掉線數(shù)據(jù)可恢復(fù)啊。汗!
后來,一個(gè)名叫徐力浩(音)的中國人補(bǔ)上了8顆盤和9顆盤的校驗(yàn)分布表。(咱們中國人到底還是比米國人聰明那么一點(diǎn)點(diǎn),哈~)
現(xiàn)在Park編碼已經(jīng)對(duì)從3顆到38磁盤的所有情況,都能給出雙重校驗(yàn)分布方法。但是各種分布方法之間根本沒有聯(lián)系,所以只能在給定磁盤數(shù)量的時(shí)候,去查Park編碼表。
Park編碼的樣子都是以3個(gè)條帶為一個(gè)“重復(fù)單元”,其中1個(gè)條帶專門用來存校驗(yàn),另外2個(gè)存數(shù)據(jù)。
全文完
本文版權(quán)歸作者及DoSTOR所有,如需轉(zhuǎn)載請(qǐng)與本站聯(lián)系!