其實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)系!

分享到

多易

相關(guān)推薦