RAID5到RAID6,RAID6磁碟陣列資料安全提高多少?【轉】

myhuaer發表於2010-05-05
磁碟陣列(disk array)可以有效的提高儲存系統的可靠性和效能,同時也存在顯著的缺點,那就是由於多個裝置(磁碟)同時使用,導致了可靠性降低(從機率的角度來講:N個裝置的可靠性是一個裝置的1/N)。
   RAID(Redundant array of inexpensive disk)就是為了解決這個問題而產生的,RAID透過給磁碟陣列增加冗餘磁碟提高了磁碟陣列的可靠性。所謂冗餘磁碟,即該磁碟不用於存放實際資料,而用來存放一些冗餘資訊,而這些冗餘資訊可用來在必要的時候進行有效資料恢復,從而增加磁碟陣列的可靠性,翻譯成中文應該叫廉價磁碟冗餘陣列。
   在RAID6出現之前,RAID已經有了從RAID0~RAID5六個版本。那麼我們已經有了這麼多的RAID方式,提供了相當級別的可靠性保護,為什麼我們還需要RAID6?在這裡,我們這裡先比較研究一下幾種比較有代表性的RAID方式:
磁碟冗餘家族概覽
   目前應用最廣泛,支援裝置最多的RAID方式主要是RAID0,RAID1和RAID5
   (1)無冗餘(RAID0):RAID0實際上不能算做真正的RAID技術,它只是實現了磁碟陣列存放資料的帶狀分佈。雖然提高了大規模資料訪問的效能,但是RAID0並沒有冗餘容錯的功能,因為它本身並無冗餘,所以可以說這裡的RAID0是個誤稱
   (2)映象(RAID1):RAID1同樣實現了資料的帶狀分佈,與RAID0所不同的是,在資料寫入一個磁碟的時候,同時在另一個磁碟做相應的鏡象。因此,RAID1雖然有資料容錯功能,但是其對磁碟的利用率實在比較底,僅為50%。
資料分佈示意圖(以4塊磁碟組成的陣列為例):

 

註釋:其中d1,d2等表示存放的資料,d1’, d2’分別表示了資料d1和d2的備份。

   (3)奇偶校驗(RAID5):相對於RAID1比較,RAID5也是僅僅實現了單個磁碟的冗餘糾錯功能,但是卻大大提高了磁碟的有效利用率。以 RAID5(4D+P)為例子來講,使用4塊磁碟存放資料位,使用1塊磁碟存放校驗位。其基本原理是這樣的:根據條帶化的資料4D(使用四位資料)生成一位的校驗資訊,存放在第五塊磁碟中。
   生成P校驗位的公式一般是這樣的:
   P = D1 ⊕ D2 ⊕ D3 ⊕ D4
   P為校驗位,D1~D4分別代表四個資料位,⊕表示異或操作。
   可以看到,當D1,D2,D3,D4中其餘的一個資料丟失的時候,可以利用其餘的三個資料位和校驗位P進行恢復,具體的恢復公式如下:
   例如,當D1丟失的時候,D1 = D2 ⊕ D3 ⊕ D4 ⊕ P
   同時可以看到,當兩快磁碟出現故障的時候,RAID5無法恢復。
   資料分示意布圖(以4D+1P為例):

其中,P1為資料位d0,d1,d2,d3的校驗資訊,P2為資料位d4,d5,d6, d7的校驗資訊等等。可以看到,校驗資訊並非存放在一塊固定的磁碟上的,而是存放在不同的磁碟的,這樣可以平衡各個磁碟的讀寫次數,從而平衡各個磁碟的使用頻率(因為校驗位的讀寫要相對頻繁一點)。  

RAID6:突破磁碟冗餘侷限
   RAID5已經提供了一定程度的可靠性,然而也犧牲了一定的讀取速度。特別是在RAID重構作業中,大量的資料讀寫操作增加硬碟的負擔,舊的硬碟更容易發生故障。RAID5的侷限性還表現在RAID5僅能在一塊硬碟發生故障的情況下修復資料,如果2塊硬碟同時發生故障,RAID5則無能為力。
   以前,兩塊盤同時壞的情況是小機率事件,幾乎不可能發生。但是近來隨著光纖(FC)盤和SATA盤的容量和密度不斷增加,使得RAID 5的重建時間也不斷增加。兩塊硬碟同時損壞的機率也大幅增加,在企業級儲存上,這種風險必須得到重視。所以RAID6應需誕生了。
   RAID6同RAID5最大的區別就是在RAID5的基礎上除了具有P校驗位以外,還加入了第2個校驗位Q位。以RAID6(6D+1P+1Q)為例子,這個系統需要8塊硬碟,其中6塊用於存放資料,1塊用於存放P校驗位,1塊用於存放Q校驗位。當然,我得又一次強調,並非某個具體的獨立的盤全部用來存放 P校驗資訊,另外一個Q校驗資訊。而是對於某個位組(6個資料位+P位+Q位)來說,採用某種原則,6塊盤上存放資料位,1塊盤存放P位,1塊盤用來存放 Q位。
   其數學原理如下:
   校驗位的生成:
   P = D1 ⊕ D2 ⊕ D3 ⊕ D4 ⊕ D5 ⊕ D6
   Q = GF(D1) ⊕ GF(D2) ⊕ GF(D3) ⊕ GF(D4) ⊕ GF(D5) ⊕ GF(D6)
   D1~D6:條帶化的資料
   P校驗位
   Q校驗位
   ⊕:異或操作
   GF(D1):對D1位進行Galois Field變換。
   當一塊磁碟出現資料錯誤或者丟失的時候,恢復方法同RAID5,無須使用Q校驗位。當兩塊磁碟上的資料出現錯誤或者丟失的時候,恢復方法為:利用上邊給出的P,Q的生成公式,聯立方程組,無論受損的資料是否包括P或者Q,總是能夠解出損失的兩位的資料。資料分佈示意圖(以6D+P+Q位例):

同樣可以看到,每個位組(6D+1P+1Q)的P,Q位是位於不同的磁碟上的。


RAID6與RAID5資料安全性比較:
   RAID6是在RAID5的改進,RAID6不僅能在一個磁碟離線的情況下將資料恢復(使用和 RAID5一樣的異或校驗),而且由於用了兩個盤作為糾錯盤,所以能應付兩個磁碟同時離線的情況。由於目前磁碟的容量越來越大等因素,在大型的關鍵資料庫中(如商業銀行大型的資料庫等)出現兩個磁碟同時出錯的機率也在上升,這也使得RAID6技術越來越被看好。
   筆者針對同樣是8個磁碟,資料利用率同樣是75%,但分別用RAID5和RAID6進行構建的磁碟陣列情況進行比較。一個用兩個獨立的RAID5 (3D+ 1P)構建;另一個用RAID6(6D+1P+1Q)構建,應用伯努利(Bernoulli)機率分佈分析如下(假設單個磁碟在10年內出現故障的機率是):
   兩個獨立的RAID5(3D+1P)構建的系統資料安全的機率分析:
   在三種情況下,該系統的資料是安全的:
   1. 8個磁碟都沒有損壞的情況,機率是
   2. 8個磁碟只有一個損壞的情況,機率是
   3. 兩個獨立RAID5(3D+1P)系統中,各損壞一個磁碟的情況,機率是
   所以,兩個獨立的RAID5(3D+1P)構建的系統資料安全的總機率是
   ? 一個RAID6(6D+1P+1Q)構建的系統資料安全的機率分析:
   1. 8個磁碟都沒有損壞的情況,機率是 [與上個系統相同] =
   2. 8個磁碟只有一個損壞的情況,機率是 [與上個系統相同]
   3. 8個磁碟中有兩個損壞的情況,機率是
   所以,一個RAID6(6D+1P+1Q)構建的系統資料安全的總機率是
   實際一點,假設單個磁碟在10年內出現故障的機率是 ,則用RAID5構建的系統,十年內不出故障的安全機率為99.881629%;對比用RAID6構建的系統,十年內不出故障的安全機率為99.994607%。
   可見,RAID6的資料安全級別是相當高的。當然RAID5的安全性也相當好了。從上面資料看起來,兩者相差不大。但是對於出現故障的機率RAID5 是 0.118371%, RAID6是0.005393%.這樣看來,提高還是很大的。隨著磁碟的容量越來越大導致資料出錯機率的增大。兩者的差距還會進一步加大,RAID6的優勢就更明顯了。而當磁碟容量增至20多TB的時候,RAID6的安全性比RAID5已經高出1000倍左右。

總結篇

  對RAID6做一下總結如下:
   在使用大資料塊的情況下,RAID6的隨機讀取效能很好;因為不但要在每硬碟上寫入校驗資料而且要在專門的校驗硬碟上寫入資料,RAID6的隨機寫入效能很差。RAID6的持續寫入效能一般,在使用小資料塊時表現很好。總體而言,RAID6擁有更快速的讀取效能,更高的容錯能力。但同時,RAID6也存在寫入速度很慢的缺點,RAID控制器在設計上更加複雜,成本更高。
   RAID6是一項很有吸引力的技術,它允許一個陣列中的兩塊磁碟同時出現故障而不會丟失資料。現在的磁碟可靠性已經很高,尤其是高階的光纖通道磁碟,那麼有必要對兩塊磁碟同時出現故障的情況進行設防嗎?答案是肯定的,目前的磁碟容量已經很大,如果一塊磁碟出現故障,那麼整個RAID組中的磁碟都需要進行資料重構,磁碟容量越大需要的時間越長,在資料重構的時間內如果再發生磁碟故障,那麼所有的資料都將丟失。因此RAID6技術將可靠性提高了1000倍以上。
   可以看到,RAID更加註重的是資料的安全性,而且由於成本之高,所以並不適合所有的企業,對於一般安全性的資料而言,RAID5還是比較合適的,只有高安全性資料,才需要RAID6技術

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/34596/viewspace-661985/,如需轉載,請註明出處,否則將追究法律責任。

相關文章