作者:香農青島數據恢復中心 2011-04-29 12:42
在經過多年的沉寂之后,RAID 6技術隨著大容量ATA硬盤的廣泛采用又重新引起了業界的重視。相對于RAID 5來說,用戶對RAID 6的了解比較少,因此本站根據HDS的技術白皮書《采用RAID-6技術,增強數據保護》改編成此文與大家共享。為了較為完整地說明問題,編者保留了一些與具體產品配置相關的內容。
RAID 5是在存儲系統中廣泛采用的數據保護技術。該技術是通過把應用數據分成數段,連同這些數據段的校驗信息寫入一組磁盤來實現的。如果其中有個磁盤出現了故障,就會利用其余的磁盤中的數據和檢驗信息把故障盤中的數據恢復到熱備盤中以保證數據不會丟失。這樣RAID 5就存在一種風險,如果在數據重建的過程中,RAID組中的第二塊硬盤出現故障,就會出現數據丟失。
以前,兩塊盤同時壞的情況是小概率事件,幾乎不可能發生。但是近來隨著光纖(FC)盤和SATA盤的容量和密度不斷增加,使得RAID 5的重建時間也不斷增加。這樣兩塊盤同時壞的概率也增加了,在企業級存儲上,這種風險必須得到重視。
為了應對這種情況,存儲廠商的RAID 6技術就是可以保證兩塊盤同時出故障而不會丟失數據的新技術。日立數據系統(HDS)公司的TagmaStore全線存儲系統除了支持RAID 5,RAID 1技術以外還可以支持RAID 6保護技術,提供給用戶多種保護方式的選擇。
RAID技術是為了防止存儲系統因為磁盤故障而丟失數據而研發出來的。該技術把數據和校驗信息分布到一組盤中(RAID組),當有盤壞的時候,丟失的那部分數據可以通過其他盤上的數據和校驗信息計算恢復。這樣就增強了存儲系統的可靠性。
HDS公司的TagmaStore全線存儲系統可以支持RAID 0,RAID 1,RAID 5和RAID 6技術,所以HDS的存儲系統不但可以提供更好的可靠性,而且也可以比以往的存儲系統有更出色的性能。
HDS 的高端存儲系統一般以4個磁盤為一個組,稱為Array Group,而一個RAID組則包含一個或者多個Array Group。例如:RAID 1(鏡像)可以是2D + 2P或者4D + 4P的配置,也就是說2塊數據盤,2塊鏡像盤,或者4塊數據盤和4塊鏡像盤的配置。RAID 5(帶校驗的條帶化)可以是3D + 1P的配置,其中3塊數據盤,1塊檢驗盤,或者是7D + 1P的配置,其中7塊數據盤,1塊檢驗盤的配置。實際上,RAID 5的數據和校驗都是條帶化后分散在RAID組中的各個磁盤中的。
RAID -1提供了最高的可靠性,一塊盤上的數據都鏡像到RAID組中的另外一塊磁盤上。但是這種方式對磁盤的利用率不高,只有一半的磁盤空間能夠存放數據,存放同樣的數據要多買一倍的磁盤。RAID 5改善了利用率的問題,但是因為要計算校驗信息而使得寫性能有所下降。HDS TagmaStore系列存儲中的模塊化產品也能支持RAID 0技術(沒有校驗的條帶化),RAID 0技術有很好的性能表現,但是RAID 0沒有冗余保護功能,RAID組中任何一塊磁盤的損壞都會造成數據的丟失。因此HDS只在中端模塊化陣列的光纖盤上支持RAID 0技術,在SATA盤上不支持RAID 0,同時HDS建議用戶不要在關鍵數據上采用RAID 0技術。
當采用RAID 1或者RAID 5技術的時候,如果其中有個磁盤出現了故障,就會利用RAID組中其余的磁盤中的數據和檢驗信息把故障盤中的數據恢復到熱備盤中以保證數據不會丟失。工程師用新盤替換壞掉的磁盤,這時候存儲系統會把熱備盤中的數據拷貝回新換上的盤中(HDS的WMS/AMS中端模塊化存儲可以支持不回拷)。當回拷完成后,系統又回到了正常工作狀態,可以再次抵御磁盤故障。
如今磁盤的容量和密度一再變大,出現了300GB的光纖盤和500GB的SATA盤,每個盤中存放的數據比以往大了很多,磁盤故障影響的數據量也跟著增加。這樣從磁盤故障,到磁盤系統恢復正常狀態的時間也會比以往長很多,這個過程中同一個RAID組里面第二塊磁盤出現故障而導致數據丟失的可能性也變大。
為了防止兩塊磁盤故障而引起的數據丟失,HDS TagmaStore存儲系統現在支持RAID 6(6D + 2P)。和RAID 5相似的是,RAID 6采用了校驗數據,和RAID 5不同的是RAID 6有兩份檢驗數據,可以保證同一RAID組中兩塊磁盤同時故障而不丟失數據。
和RAID 5相似,RAID 6(6D + 2P)根據條帶化的數據生成校驗信息,條帶化數據和校驗數據一起分散存儲到RAID組的各個磁盤上。在圖1中,D0,D1,D2,D3,D4和D5是條帶化的數據,P代表校驗數據,Q是第二份校驗數據。
?
圖1:RAID 6(6D + 2P)根據條帶化的數據生成校驗信息,條帶化數據和校驗數據一起分散存儲到RAID組的各個磁盤上
RAID 6校驗數據生成公式(P和Q):
P的生成用了異或
P = D0 XOR D1 XOR D2 XOR D3 XOR D4 XOR D5
Q的生成用了系數和異或
Q = A0*D0 XOR A0*D1 XOR A0*D2 XOR A0*D3 XOR A0*D4 XOR A0*D5
D0~D5:條帶化數據
A0~A5:系數
XOR:異或
*:乘
在RAID 6中,當有1塊磁盤出故障的時候,利用公式1恢復數據,這個過程是和RAID 5一樣的。而當有2塊磁盤同時出故障的時候,就需要同時用公式1和公式2來恢復數據了。
在圖1中,各系數A0~A5是線性無關的系數,在D0,D1,D2,D3,D4,D5,P,Q中有兩個未知數的情況下,也可以聯列求解兩個方程得出兩個未知數的值。這樣在一個RAID組中有兩塊磁盤同時壞的情況下,也可以恢復數據。
上面描述的是校驗數據生成的算法。其實RAID 6的核心就是有兩份檢驗數據,以保證兩塊磁盤同時出故障的時候,也能保障數據的安全。
如圖2所示,通過條帶化,把應用數據和校驗數據打散到一個RAID組的8個磁盤中,可以充分保證讀寫性能和數據的安全性。
?
圖2:RAID 6的數據分布
RAID 6可以保證同一個RAID組中兩塊磁盤故障的情況下的數據安全。
從1塊磁盤故障中恢復數據
當有1塊磁盤出故障的時候,利用公式1恢復數據,這個過程不需要Q這部分校驗數據,如圖3所示,這個過程是和RAID 5一樣的。
圖3:在RAID 6(6D + 2P)中恢復D3數據,展示了存放D3數據的盤出現故障的恢復過程
公式:D3 = D0 XOR D1 XOR D2 XOR P XOR D4 XOR D5
從2塊磁盤故障中恢復數據
當同時有2塊磁盤故障的時候,需要同時用到公式1和公式2來恢復數據,如圖4所示。
圖4:在RAID 6(6D + 2P)中恢復D3和D4數據,展示了存放D3和D4數據的盤出現故障的恢復過程
公式1和公式2:
P = D0 XOR D1 XOR D2 XOR D3 XOR D4 XOR D5
Q = A0*D0 XOR A0*D1 XOR A0*D2 XOR A0*D3 XOR A0*D4 XOR A0*D5
D3和D4由解以上兩個聯立的方程得出結果
空間的利用率
表1表明了在RAID 1、RAID 5和RAID 6下有多少磁盤空間是可以給用戶數據使用的。
表1:不同RAID類型的磁盤利用率比較
RAID類型 | 空間利用率 | 備注 |
RAID 1 (2D + 2D) | 50% | 鏡像 |
RAID 5 (3D + 1D) | 75% | 數據盤和校驗盤之間的比例 |
RAID 5 (7D + 1D) | 87.5% | |
RAID 6 (6D + 2D) | 75% | RAID 6 (6D + 2D)和RAID 5 (3D + 1D)的利用率是一樣的 |
性能之間的比較
表2表明了在足夠磁盤數據的情況下各種RAID類型的性能比較,RAID 1 (2D + 2D)作為基準(100%)。
表2:不同RAID類型的性能比較
RAID類型 | 隨機讀和順序讀 | 順序寫 | 隨機寫 |
RAID 1 (2D + 2D) | 100% | 100% | 100% |
RAID 5 (3D + 1D) | 100% | 150% | 50% |
RAID 5 (7D + 1D) | 200% | 350% | 100% |
RAID 6 (6D + 2D) | 200% | 300% | 66.7% |
備注 | 和磁盤的數量成正比 | 和數據盤的數量成正比 | ? |
比較RAID 5 (7D + 1D)和RAID 6 (6D + 2D)隨機寫
如表2中所示,RAID 6在增加了可靠性的同時,犧牲了部分隨機寫性能。在隨機寫操作中,在同樣多的磁盤的RAID組中,RAID 6所花費的時間是RAID 5的的1.5倍。每次RAID 5 (7D + 1D)進行一次隨機寫操作,實際上產生了4個I/O:讀老的應用數據,讀老的校驗數據,寫新的應用數據和寫新的校驗數據(P)。而RAID 6做同樣一個隨機寫操作,實際上需要6個I/O,讀老的用戶數據,讀老的校驗數據P,讀老的校驗數據Q,寫新的用戶數據,寫新的校驗數據P,寫新的校驗數據Q。這樣就造成了RAID 5 (7D + 1D)和RAID 6 (6D + 2D)隨機寫的33%性能差異。
在選擇采用何種RAID類型的時候,必須注意以下事項:
隨著用戶數據的不斷增長,用戶采用大容量磁盤的可能性也與日俱增,但是在使用大容量硬盤的時候,必須要考慮過長的重建時間而引起的數據丟失風險。在某些情況下,數據重建會非常困難或者對系統性能的沖擊會很大,如:大交易量,大量寫操作的數據庫應用,建議采用RAID 6技術,這樣可以給用戶數據帶來更好的保護。
RAID 5技術是很多存儲系統數據保護的基礎。但是采用RAID 5技術需要承擔在第一塊故障盤重建的過程中,第二塊磁盤發生故障而導致數據丟失的風險。而RAID 6技術的推出使得數據可以在兩塊磁盤同時故障的情況下也不會丟失。