其實P+Q只是一種算法,Intel IOP里面的硬件加速引擎并不是必須的。有一些產(chǎn)品就采用了PowerPC等不含P+Q引擎的CPU,一樣不耽誤P+Q RAID6功能。GF轉(zhuǎn)換表在軟件里完成就是了。
四、準(zhǔn)RAID6技術(shù)
除了P+Q RAID6,還要好多種辦法可以實現(xiàn)對兩顆磁盤掉線的容錯。
網(wǎng)友Billylee提供的Intel講義中就提到一種Dual-XOR算法,這種方法就是取橫向和斜向兩個方向進行XOR運算,這樣每個應(yīng)用數(shù)據(jù)都在兩個校驗中留下痕跡,當(dāng)兩顆磁盤掉線時,就可以恢復(fù)數(shù)據(jù)。
但是Dual-XOR的恢復(fù)工作異常復(fù)雜艱苦,并不實用。很多技術(shù)人員研究這種算法的意義,完全是把它當(dāng)作未經(jīng)優(yōu)化的原型思想。
如圖,Pa是橫向的校驗,跟RAID5完全一樣:
Pa1 = 數(shù)據(jù)a XOR 數(shù)據(jù)b
Pa2 = 數(shù)據(jù)c XOR 數(shù)據(jù)d
…………
Pa6 = 數(shù)據(jù)k XOR 數(shù)據(jù)l
Pb是斜向校驗,定義為:
Pb4 = 數(shù)據(jù)a XOR Pa2 XOR數(shù)據(jù)f
Pb5 = 數(shù)據(jù)c XOR 數(shù)據(jù)e XOR Pa4
Pb6 = Pa3 XOR數(shù)據(jù)h XOR 數(shù)據(jù)j
可以看出Dual-XOR的校驗生成過程比P+Q要簡單,但是根據(jù)“麻煩守恒定律”,正向工作簡單的事情,一般反向工作都會復(fù)雜。
備份和恢復(fù)一般也遵循這個規(guī)律。(別跟我提CDP,那東西遵循的是廣義麻煩守恒定律。每個I/O都打個時間標(biāo)簽,還都當(dāng)寶貝存著不扔,這能是個不麻煩的事嗎?Sorry,又扯遠(yuǎn)了。)
當(dāng)兩顆磁盤掉線的時候,Dual-XOR的算法只能支持逐個數(shù)據(jù)塊的恢復(fù),而且不同條帶之間還要共同參與計算。
比如圖中的磁盤1和2掉線,恢復(fù)數(shù)據(jù)e的時候,就要至少動用到數(shù)據(jù)f、Pb3、Pa4和Pb5。而數(shù)據(jù)c和Pa3的恢復(fù)還要依賴數(shù)據(jù)e的恢復(fù)。
總之恢復(fù)起來是件賊頭痛的事情!
雖然Intel的Dual-XOR理論意義大于實際意義,但其改良的版本RAID-DP卻已經(jīng)被NetApp產(chǎn)品化。NetApp之所以喜歡這個類似Dual-XOR的RAID-DP算法,原因也很簡單。
NetApp原本用的就是RAID4,而不是RAID5,其算法的中心思想就是每次I/O只跟兩顆磁盤打交道就OK,自然就不會在乎RAID-DP中很多動作都只跟兩、三顆磁盤打交道。(這個思想也許在很多RAID5的Fans看來有點奇怪,難道不是磁頭越多性能就越好嗎?但是人家NetApp這么多年的經(jīng)驗都集中在WAFL文件系統(tǒng)上,而WAFL文件系統(tǒng)又是專門針對這種思想優(yōu)化的。所以NetApp對這個略有異類的思想不僅沒有放棄,而且越研究越起勁。
這個遞歸式數(shù)據(jù)恢復(fù)機制簡直像在玩RPG游戲,但是對WAFL文件系統(tǒng)來說,卻的確是最合適的選擇之一。
除了RAID-DP,還有X-Code編碼、ZZS編碼、Park編碼……都可以看做是“準(zhǔn)RAID6”。
待續(xù)
本文版權(quán)歸作者及DoSTOR所有,如需轉(zhuǎn)載請與本站聯(lián)系!