RAID 6

RAID 6

一種RAID方式
RAID6技術是在RAID5基礎上,為了進一步加強數據保護而設計的一種RAID方式,實際上是一種擴展RAID5等級。與RAID5的不同之處在于除了每個硬盤上都有同級數據XOR校驗區外,還有一個針對每個數據塊的XOR校驗區。這樣一來,每個數據塊有了兩個校驗保護屏障(一個分層校驗,一個是總體校驗),因此RAID6的數據冗餘性能相當好。[1]
    中文名:兩種存儲的奇偶校驗碼的磁盤結構 外文名:RAID 6 别名: 類型:冗餘陣列 屬于:數據恢複 系統形式:開放式系統

RAID6校驗位具體實現方法

與RAID5相比,RAID6增加了第二個獨立的奇偶校驗信息塊。兩個獨立的奇偶系統使用不同的算法,數據的可靠性非常高,即使兩塊磁盤同時失效也不會影響數據的使用。但RAID6需要分配給奇偶校驗信息更大的磁盤空間,相對于RAID5有更大的“寫損失”,因此“寫性能”非常差。較差的性能和複雜的實施方式使得RAID6很少得到實際應用。

常見的RAID6組建類型RAID6(6D+2P)

1RAID6(6D+2P)原理

和RAID5相似,RAID6(6D+2P)根據條帶化的數據生成校驗信息,條帶化數據和校驗數據一起分散存儲到RAID組的各個磁盤上。在圖1中,D0,D1,D2,D3,D4和D5是條帶化的數據,P代表校驗數據,Q是第二份校驗數據。

RAID6(6D+2P)根據條帶化的數據生成校驗信息,條帶化數據和校驗數據一起分散存儲到RAID組的各個磁盤上

RAID6校驗數據生成公式(P和Q):

P的生成用了異或

P=A0XORB0XORC0XORD0XORE0XORF0

A、B、C、D、E、F代表raid6中6塊硬盤,A0、B0、C0、D0、E0、F0代表6塊硬盤的第一個strip

Q的生成用了系數和異或,假設生成硬盤D的Q校驗

QA=A0*D0XORA1*D1XORA2*D2XORA3*D3XORA4*D4XORA5*D5.....XORAn*Dn

D0~Dn:單個硬盤的所有條帶化數據

A0~An:系數

XOR:異或

*:乘

硬盤D的Q校驗數據不會存放在硬盤D中,而是存放在其他硬盤中

Q校驗數據的計算隻需要使用剛剛寫入的strip數據Dn*An再XOR這次寫入以前的Qn-1即可

在RAID6中,當有1塊磁盤出故障的時候,利用公式1恢複數據,這個過程是和RAID5一樣的。而當有2塊磁盤同時出故障的時候,就需要同時用公式1和公式2來恢複數據了。

各系數A0~A5是線性無關的系數,在D0,D1,D2,D3,D4,D5,P,Q中有兩個未知數的情況下,也可以聯列求解兩個方程得出兩個未知數的值。這樣在一個RAID組中有兩塊磁盤同時壞的情況下,也可以恢複數據。上面描述的是校驗數據生成的算法。其實RAID6的核心就是有兩份檢驗數據,以保證兩塊磁盤同時出故障的時候,也能保障數據的安全。

一個RAID-6的陣列中可以最多有16個硬盤。

假設一共6塊硬盤,使用4塊創建邏輯盤,raid6,4個硬盤在使用時都被先條帶化,然後分别存儲數據和校驗位。

如果一塊硬盤出現物理故障,RAID的會處于降級狀态,但是仍然有容錯功能;

如果第二塊硬盤出現故障,邏輯盤中還剩下的兩塊硬盤就不再有容錯功能。

如果陣列中有hotspare硬盤,出故障的硬盤上的數據會轉移到hotspare硬盤上,

自動進行重建,數據的條帶化存儲方式和原來的兩塊硬盤相同。

模型分析

内容提要:RAID6之所以重要,不是因為它能恢複兩個同時發生的磁盤故障,而是能用完好的對等磁盤恢複一個磁盤故障和一個讀取錯誤。随着磁盤容量的上升,上述這種錯誤的發生幾率也在增加。更為重要的是,低質量SATA磁盤使用比較多,造成這種幾率又要提高10倍乃至百倍。

raid的特點

從最基本的角度來說,RAID就是指一組磁盤關聯和相對應的數據布局,在某些組件發生讀取錯誤的情況下仍能确保從系統檢索到數據。RAID0是基礎條帶化模型,不支持任何冗餘,因此可最優化系統性能,但在數據故障情況下不能恢複數據。

RAID5設計旨在從單次數據故障中恢複數據,通過添加一個冗餘校驗盤(“P”盤即奇偶校驗盤),作為對等數據XOR計算,從而實現數據恢複功能。從數學角度來說,我們把數據恢複可看作隻有一個未知變量(也就是因讀取故障丢失的數據)的線性方程式,并能通過基礎代數方法輕松解出任何線性方程。

RAID6擴展了RAID5的功能,可在同一數據集上恢複兩個數據錯誤。從數學角度來說,RAID5使用一個方程式解出一個未知變量,而RAID6則能通過兩個獨立的線性方程構成方程組,從而恢複兩個未知數據。第一個方程與RAID5機制一樣,也是通過添加P盤實現的,而第二個方程則有所不同,将創建一個盤,因此RAID6又稱作“P+Q”盤機制。

從理論上說,這種回歸計算可以無限延伸,可創建任意類型的M+N冗餘,但實際應用通常僅限于N=2,也就是說數據條帶上同時發生兩個不同的故障,這也就是RAID6所要解決的主要問題。

為什麼需要RAID6?RAID5可獨立解決磁盤不能檢索數據的兩種情況:

一個磁盤損壞,也就是說不能對任何讀寫命令做出響應,需要更換。RAID5能從保存的對等數據中恢複所有數據,重建缺陷磁盤。

磁盤組本身沒問題,但其中一個磁盤上出現了壞塊(即不能讀取的塊),造成某些數據不能恢複。

請注意,從數學角度說,每個磁盤的平均無故障時間(MTBF)大約為50萬至150萬小時(也就是每50~150年發生一次硬盤損壞)。實際往往不能達到這種理想的情況,在大多數散熱和機械條件下,都會造成硬盤正常工作的時間大幅減少。

考慮到每個磁盤的壽命不同,陣列中的任何磁盤都可能出現問題,從統計學角度說,陣列中N個磁盤發生故障的機率比單個磁盤發生故障的機率要大N倍。結合上述因素,如果陣列中的磁盤數量合理,且這些磁盤的平均無故障時間(MTBF)較短,那麼在磁盤陣列的預期使用壽命過程中,就很有可能發生磁盤故障(比方說每幾個月或每隔幾年就會發生一次故障)。

兩塊磁盤同時損壞的幾率有多大呢(“同時”就是指一塊磁盤尚未完全修複時另一塊磁盤也壞掉了)?如果說RAID5陣列的MTBF相當于MTBF^2,那麼這種幾率為每隔1015萬個小時發生一次(也就是1千多年才出現一次),因此不管工作條件如何,發生這種情況的概率是極低的。從數學理論角度來說,是有這種概率,但在現實情況中我們并不用考慮這一問題。不過有時卻是會發生兩塊磁盤同時損壞的情況,我們不能完全忽略這種可能性,實際兩塊磁盤同時損壞的原因與MTBF基本沒有任何關系。

讀取錯誤(不能恢複的ECC讀取錯誤)從統計角度來說也比較少見,一般來說是指讀取多少位後會出現一次讀取錯誤。就SCSI/FC/SAS磁盤(SAS是本文的重點,但同樣的量化說明适用于所有這三種技術)來說,發生讀取錯誤的幾率為每讀取10^15位(也就是約100TB)到10^16位(約1000TB或1PB),會出現一次錯誤。我們把這一幾率稱作誤碼率(BER)。

不過,SATA磁盤的錯誤率要大一些,其BER比其它類型的磁盤要高出一兩個數量級(即其BER為每讀取10^14到10^15位出現一次錯誤,或者說每讀取10/100TB出現一次錯誤,具體取決于磁盤設計)。如果SATA磁盤容量為1TB,完整讀取磁盤十次,就會發現新的故障塊(假定這裡的BER為每讀取10^14位出錯一次)。存儲相同數據的相應兩個塊同時出現問題幾乎是不可能的,幾率為每讀取10^30位發生一次。

然而,如果一個問題由于MTBF引起,另一個問題由于讀取錯誤引起,這樣兩個錯誤同時發生的幾率有多大?假設我們有10個SAS磁盤組成的陣列,每個磁盤容量為300GB,BER為每讀取10^-15位出錯一次,那麼我們在重建磁盤時發生讀取錯誤的可能性有多大?

計算方法如下:10^15(位)X1/8(字節/位)X1/10(磁盤)X1/300GB,從而得到每50次重建就會出現一次。這種幾率還是比較大的,但并不足以讓人震驚,要是磁盤陣列在使用壽命中要發生50次故障的話,那才真成了問題!不過,上述幾率在統計學上還是有意義的,我們可以換一種方式來理解,也就是說,如果我們出售50款與上述配置一樣的陣列,那麼至少其中一個會出現上述嚴重問題。這種幾率也不算高,但要是客戶安裝上百個陣列的話,問題就比較嚴重了。不過,有的SAS磁盤的BER比我們這裡假定的情況要好上10倍,因此問題可以大大化解。

如果使用SATA會有什麼情況呢?磁盤容量越大,問題就越嚴重!

磁盤的BER會較差,造成問題的嚴重性。假定同樣有上述10個磁盤組成陣列,但每個磁盤容量為500GB,BER為讀取10^-14位出錯一次,那麼計算如下:10^14X1/8X1/10X1/500GB,得出每2.5次重建就會出一次嚴重問題,這就要引起我們的高度重視了。我們這裡所談的是5TB容量的陣列,盡管這種陣列還不太常見,但完全是當前技術可以達到的水平。

這就是說,這種容量大小的陣列每2.5個中,就有一個陣列會出現每次重建就發生塊損壞的問題,用戶會看到“ReadErroratLBA=0xF43E1AC9”這類報錯信息,着實讓人頭痛。用戶怎麼會明白0xF43E1AC9到底指什麼?是說空間為空?還是說内核數據下次重啟會發生藍屏錯誤?是僅涉及沒人會用得到的數據庫?

還是包含着銀行帳戶信息?實際上看到這種錯誤信息我們根本無所做出判斷,唯一的辦法就是從備份中恢複數據,這會花大量時間,而且還要考慮到從5TB容量的磁帶中恢複數據會面臨多大的讀取錯誤幾率。這種讀取錯誤的幾率要大大高于磁盤,因此用戶會遇到無窮盡的問題。

說到底,我們要在價格與風險之間進行權衡,SAS和高端驅動器的平均無故障時間(MTBF)更長/BER性能更高,因而出問題的可能性也就少得多(盡管不是不可能出問題),而低端SATA有助于大幅節約購買設備的資本投入,卻會面臨較高的雙重故障幾率。在此情況下,RAID6市場便應運而生。

需要指出的是,上述涉及的某些風險可通過其它技術加以規避減輕,如定期掃描磁盤以避免壞塊的巡讀(PatrolRead),确保不會因為另一塊磁盤的故障造成同一條帶上的數據發生雙重故障。就目前而言,RAID6似乎是針對SATA驅動器的更合适的解決方案,也是我們更加需要的解決方案。不過随着市場預期的發展,磁盤容量和陣列規模不斷上升,這種技術在SAS磁盤領域的應用也可能頗有商機。

相關詞條

相關搜索

其它詞條