硬盤分段和數據冗余(RAID2~5)
硬盤分段改善了硬盤子系統的性能,因為向硬盤讀寫數據的速度與硬盤子系統中硬盤數目成正比地增加,但它的缺點是硬盤子系統中任一硬盤的故障都會導致整個計算器系統失敗。整個分段的硬盤子系統部能作鏡像,如果已經用了4個硬盤進行分段,我們可以再增加4個分段的硬盤作為原來4個硬盤的鏡像。很明顯這是昂貴的(雖然可能比鏡像一個昂貴的大硬盤來得便宜)。可以不用鏡像而用其它數據冗余的方法來提供高容錯性能。可以選擇一神奇偶碼模式來實現上述方法,可以外加一個專作奇偶校驗用的硬盤(如在RAID3中),或者可把奇偶校驗數據分散分布在磁盤陣列的全部硬盤中。不管用何種級別的RAID,磁盤陣列總是用異或(XOR)操作來產生奇偶數據,當子系統中有一個硬盤發生故障時,也是用異或操作重建數據。下列簡單分析了XOR是怎樣工作的。
硬盤ABC奇偶盤(A,B,C異或的結果)
數據1010
首先記住在XOR操作中,2個數異或的結果是真(即“1”)時,這二個數中有且一個數為1(另一個為0)。我們假設A,B,C中B盤故障,此時可將A,C和奇偶數據XOR起來,得到B盤失去的數據0;同樣如C盤故障,我們可將A,B盤和奇偶盤的數據XOR,得到C盤原先的數據1。如果推廣到7個盤的硬盤子系統:
硬盤ABCDEF奇偶位
數據0001010
如果丟失B盤數據,我們可以XORA,C,D,E,F和奇偶位來得到失去的B盤數據0。而XORA,B,C,D,E,F和奇偶位可恢復D盤的數據1。采用專用的奇偶校驗盤(如上所述,即RAID3),當同時產生多個寫操作時,每次操作都要對奇偶盤進行寫入。這將產生I/O瓶頸效應。RAID5把奇偶位信息分散分布在硬盤子系統的所有硬盤上(而不是使用專用的校驗盤0,這就改善了上述RAID3中的奇偶盤瓶頸效應。RAID5的一種配置:奇偶信息散布在子系統的每個硬盤上。利用每個硬盤的一部分來組成校驗盤,寫入硬盤的奇偶位信息將較均勻地分布在所有硬盤上。所以某個用戶可能把它的一個數據段寫在硬盤A,而將奇偶信息寫在硬盤B,第二個用戶可能把數據寫在硬盤C,而奇偶信息寫在硬盤D。從這里也可看出RAID5的性能會得到提高。這種方法將提高硬盤子系統的事務處理速度。所謂事務處理,是指處理從許多不同用戶來的多個硬盤I/O操作,由于可能同時有很多用戶與硬盤打交道,迅速向硬盤寫入數據,有時幾乎是同時進行的,這種情況下,用分布式奇偶盤的方式比起用專用奇偶盤,瓶頸效應發生的可能性要小。對硬盤操作來說,RAID5的寫性能比不上直接硬盤分段(指沒有校驗信息的RAID0)。因為產生或存儲奇偶碼需要一些額外操作。例如,在修改一個硬盤上的數據時,其它盤上對應段的數據(即使是無關的數據)也要讀入主機,以便產生必要的奇偶信息。奇偶段產生后(這要花一些時間),我們要將更新的數據段和奇偶段寫入硬盤,這通常稱為讀-修改-寫策略。因此,雖然RAID5比RAID0優越,但就寫性能來說,RAID5不如RAID0。鏡像技術(RAID1)和數據奇偶位分段(RAID5)用于上述的硬盤子系統中時,都產生冗余信息。但在RAID1中,所有數據都被復制到第二個相同的硬盤上。在RAID5,數據的XOR碼而不是數據本身被復制,因此可以用數據的非常緊湊的表現方式,來恢復由于某一硬盤故障而丟失的數據。采用RAID5時,對于5個硬盤的數組,有大約20%的硬盤空間用于存放奇偶碼,而十個硬盤的數組只有約10%的空間存放奇偶碼。在可用空間總的格式化空間的意義上來說,硬盤系統中的硬盤越多該系統就越省錢。總之,RAID5把硬盤分段和奇偶冗余技術的優點結合在一起,這樣的硬盤子系統特別適合于事務處理環境,例如民航售票處,汽車出租站,銷售系統的終端,等等。在某些場合,可優先考慮RAID1(在那些寫數據比讀數據更頻繁的情況)。但許多情況,RAID5提供了將高性能,低價格和數據安全性綜合在一起的解決辦法。
硬盤故障恢復
鏡像和RAID提供了從硬盤故障中恢復數據的新方法。因為數據的所有部分都是有冗余的,數據有效性很高(即使在硬盤發生故障時)。另一重要優點是,恢復數據的工作不用立即進行,因為系統可以在一個硬盤有故障的情況下正常工作,當然在這種情況下,剩下的系統就不再有容錯性能。要避免丟失數據就必須在第二個硬盤故障前恢復數據。更換故障硬盤后,要進行數據恢復。在鏡像系統中“鏡像”盤上有一個數據備份,因此故障硬盤(主硬盤或鏡像硬盤)通過簡單的硬盤到硬盤的拷貝操作就能重建數據,這個拷貝操作比從磁帶上恢復數據要快得多。RAID5硬盤子系統中,故障硬盤通過無故障硬盤上存放的糾錯(奇偶)碼信息來重建數據。正常盤上的數據(包括奇偶信息部分)被讀出,并計算出故障盤丟失的那些數據,然后寫入新替換的盤。這個過程比從磁帶上恢復數據要快不少。設計靈活的磁盤陣列可以重新配置,替換盤的地址不一定和故障盤的地址相同。這種靈活性使安裝過程變得更為簡單。備用盤甚至可以在硬盤故障前預先連在系統上。在那種情況下,它就成了隨時可用的備份盤。這種盤通常稱為“熱備份”。
可靠性和可用性
這二個名詞雖然相互關連,事實上卻代表了硬盤故障的二個不同的方面,可靠性指的是硬盤在給定條件下發生故障的概率。可用性指的是硬盤在某種用途中可能用的時間。利用這二個名詞,我們可以看到磁盤陣列是怎樣把我們的硬盤系統可靠性提高到接近百分之百的程度的。磁盤陣列可以改善硬盤系統的可靠性。因為某一硬盤中的數據可以從其它硬盤的數據中重新產生出來(例如RAID5),所以很少會有機會使整個硬盤系統失效。硬盤子系統的可靠性因而大大改善了。下表是RAID硬盤子系統與單個硬盤子系統的可靠性比較:
硬盤子系統,硬盤數時間,平均故障時間*,平均丟失數據時間
單個硬盤,1,30,000小時,30,0000小時
RAID0(分段),5,30,000小時,6,0000小時
RAID1(鏡像),2,30,000小時,49,9百萬小時
RAID5(分段加奇偶碼),5,30,000小時,46,2百萬小時
硬盤子系統可靠性比較
我們還必須考慮系統的可用性。單一硬盤系統的可用性比沒有數據冗余的磁盤陣列要好,而冗余磁盤陣列的可用性比單個硬盤的好得多。這是因為冗余磁盤陣列允許單個硬盤出錯,而繼續正常工作。此外,一個硬盤故障后的系統恢復時間也大大縮短(與從磁帶恢復數據相比)。最后,因為發生故障時,硬盤上的數據是故障當時的數據,替后的硬盤也將包含故障時的數據(舉例說,前天晚上的備份數據)。要得到完全的容錯性能,計算器硬盤子系統的其它部件也必須有冗余例如提供二個電源,或者配備雙份硬盤控制器。沒有其它部件的冗余,即使有非常可靠的硬盤子系統,還是不能完全防止計算機系統的失效。
最佳化的容錯系統
如先前所述,直接分段的子系統(RAID0)可以大大提高讀寫速度(相對單個硬盤),因為數據分散在多個硬盤,硬盤操作可以同時進行。把二個直接分段的硬盤子系統組成鏡像,可以有效地構成全冗余的快速硬盤子系統。這樣的子系統,其硬盤操作甚至比直接分段的硬盤子系統還快,因為該系統能同時執行二個讀操作(每個硬盤一個讀操作),而寫操作的速度則與非鏡像直接分段子系統幾乎一樣,因為把數據同時寫入二個硬盤只需花費很少的額外開銷。通過我們前面所述的概念,例如雙工:(雙控制器,雙電源等),可以進一步改善有關冗余方面的問題。雙控制器還使我們得到更高的數據傳輸速度,因為控制器成為子系統性能瓶頸的可能性更小了。