磁盤RAID陣列
一、概述
1988年美國加州大學伯克利分校的提出了RAID概念(RedundantArrayofInexpensiveDisks廉價冗余磁盤陣列),隨着磁盤成本的不斷降低,RAID變成了(RedundantArrayofIndependentDisks獨立磁盤冗余陣列),但實質內容沒有改變。SNIA、Berkeley等組織機構把RAID0~RAID6七個等級定為標准的RAID等級,標准RAID可以組合成其他RAID等級,而實際中使用最多的等級是RAID0、RAID1、RAID3、RAID5、RAID6和RAID10。RAID每一個等級代表一種實現方法和技術,等級之間並無高低之分。在實際應用中,應當根據用戶的數據應用特點,綜合考慮可用性、性能和成本來選擇合適的RAID等級,以及具體的實現方式。
從實現角度看,RAID主要分為軟RAID、硬RAID以及軟硬混合RAID三種。
- 軟RAID:所有功能均由操作系統和CPU來完成,效率自然最低
- 硬RAID:配備了專門的RAID控制/處理芯片和I/O處理芯片以及陣列緩沖,不占用CPU資源,但成本很高
- 軟硬混合RAID:具備RAID控制/處理芯片,但缺乏I/O處理芯片,需要CPU和驅動程序來完成,性能和成本在軟RAID和硬RAID之間
二、RAID基本原理
RAID是由多個獨立的高性能磁盤驅動器組成的磁盤子系統,從而提供比單個磁盤更高的存儲性能和數據冗余的技術。
RAID是一類多磁盤管理技術,其向主機環境提供了成本適中、數據可靠性高的高性能存儲。RAID的兩個關鍵目標是提高數據可靠性和I/O性能。
磁盤陣列中,數據分散在多個磁盤中,然而對於計算機系統來說,就像一個單獨的磁盤。通過把相同數據同時寫入到多塊磁盤(典型的如鏡像),或者將計算的校驗數據寫入陣列中來獲得冗余能力,當單塊磁盤出現故障時可以保證不會導致數據丟失。
RAID中主要有三個關鍵概念和技術:鏡像(Mirroring)、數據條帶(DataStripping) 和 數據校驗(Dataparity):
- 鏡像:將數據復制到多個磁盤,一方面可以提高可靠性,另一方面可並發從兩個或多個副本讀取數據來提高讀性能。顯而易見,鏡像的寫性能要稍低,確保數據正確地寫到多個磁盤需要更多的時間消耗。
- 數據條帶:將數據分片保存在多個不同的磁盤,多個數據分片共同組成一個完整數據副本,這與鏡像的多個副本是不同的,它通常用於性能考慮。數據條帶具有更高的並發粒度,當訪問數據時,可以同時對位於不同磁盤上數據進行讀寫操作,從而獲得非常可觀的I/O性能提升。
- 數據校驗:利用冗余數據進行數據錯誤檢測和修復,冗余數據通常采用海明碼、異或操作等算法來計算獲得。利用校驗功能,可以很大程度上提高磁盤陣列的可靠性、魯棒性和容錯能力。不過,數據校驗需要從多處讀取數據並進行計算和對比,會影響系統性能。
不同等級的RAID采用一個或多個以上的三種技術,來獲得不同的數據可靠性、可用性和I/O性能。至於設計何種RAID(甚至新的等級或類型)或采用何種模式的RAID,需要在深入理解系統需求的前提下進行合理選擇,綜合評估可靠性、性能和成本來進行折中的選擇。
總體說來,RAID主要優勢有:大容量、高性能、可靠性、可管理性。
三、常見RAID等級
1、RAID0
RAID0稱為條帶,是一種簡單的、無數據校驗的數據條帶化技術。性能在所有RAID等級中是最高的。不提供任何形式的冗余策略。100%利用存儲空間。
寫數據的時候,會將數據分為N份,以獨立的方式實現N塊磁盤的讀寫,那么這N份數據會同時並發的寫到磁盤中,因此執行性能非常的高。
- 高性能
- 容量零損失
- 零容錯,一旦一塊磁盤故障則數據丟失
- 寫和讀有很高的性能
2、RAID1
RAID1稱為鏡像,它將數據完全一致地分別寫到工作磁盤和鏡像磁盤,它的磁盤空間利用率為50%。數據寫入時性能有所影響,但是讀數據沒有影響。提供了最佳的數據保護,一旦工作磁盤發生故障,系統自動從鏡像磁盤讀取數據,不會影響用戶工作。
- 良好的性能
- 總容量丟失一半可用空間
- 完全容錯
- 重建會更快
- 寫性能變慢
- 讀性能變好
- 能用於操作系統和小規模的數據庫
3、RAID3
RAID3稱為專用奇偶校驗條帶,它采用一個專用的磁盤作為校驗盤,其余磁盤作為數據盤,數據按 位 或 字節 為單位的方式交叉存儲到各個數據盤中。RAID3至少需要三塊磁盤。寫數據時性能過低。
- 當一塊硬盤失效時,該硬盤上的所有數據塊必須使用校驗信息重新建立。如果是從好盤中讀取數據塊,不會有任何變化。但是如果要讀取的數據塊正好位於已經損壞的硬盤上,則必須同時讀取同一條帶中的所有其他數據塊,並根據校驗值重建丟失的數據。
- 出現大量的寫操作,RAID-3會把數據的寫入操作分散到多個磁盤上進行,但是不管是向哪一個數據盤寫入數據,都需要同時重寫校驗盤中的相關信息
如下圖所示,物理盤2中的每一個校驗塊所包含的都是其他兩塊物理盤中對應數據塊的校驗信息,P0為數據0、1的異或值,P1為數據2、3的異或值,P2為數據4、5的異或值
5、RAID4
RAID4與RAID3的原理大致相同,RAID-4是以 條帶 為單位。提供了非常好的讀性能,但寫性能比較差。而且隨着成員磁盤數量的增加,校驗盤的系統瓶頸將更加突出。在實際應用中很少見,主流存儲產品也很少使用RAID4保護。
6、RAID5
RAID5稱為分布奇偶校驗條帶,應該是目前最常見的RAID等級,原理與RAID4相似,但不存在RAID4中的並發寫操作時的校驗盤性能瓶頸問題。
RAID-5數據以 條帶 為單位分布到各個硬盤上,不是把所有的校驗塊集中保存在一個專門的校驗盤中,而是將校驗塊分散到所有的數據盤中。
- 性能卓
- 讀速度將非常好
- 寫速度處於平均水准,如果我們不使用硬件 RAID 控制器,寫速度緩慢
- 從所有驅動器的奇偶校驗信息中重建
- 完全容錯
- 1個磁盤空間將用於奇偶校驗
- 可以被用在文件服務器,Web服務器,非常重要的備份中
RAID-5的校驗值采用的是異或算法。異或運算是二進制數值間的一種算法,其運算符號為XOR,或者用“⊕”表示。RAID-5之所以能夠容錯,就是利用了異或運算的以下特點
# 1.運算結果與運算順序無關
(a ⊕ b) ⊕ c=a ⊕ (b ⊕ c)
# 2.各個參與運算的數字與結果循環對稱
# 如果a ⊕ b ⊕ c=d, 那么:
a=b ⊕ c ⊕ d
b=a ⊕ c ⊕ d
c=a ⊕ b ⊕ d
上面例子中的a、b、c、d看作RAID-5四塊成員盤上的條帶,其中三個是數據條帶,剩下一個是校驗條帶,如果有一塊成員盤離線,不管哪個條帶丟失了,都可以用剩下的三個條帶經過異或計算出來。
如下圖所示,RAID-5的校驗碼存在於所有硬盤上,其中P0為數據條帶0、1的校驗值,P1為數據2、3的校驗值,P2為數據4、5的校驗值。
7、RAID6
RAID6稱為雙重奇偶校驗條帶,引入雙重校驗的概念解決其他RAID等級無法解決的兩個磁盤同時發生故障數據完整性問題。但是,它的成本要高於RAID5許多,寫性能也較差,且設計和實施非常復雜。因此RAID6很少得到實際應用,一般是替代RAID10方案的經濟性選擇。
標准RAID等級各有優勢和不足。把多個RAID等級組合起來,實現優勢互補,彌補相互的不足,從而達到在性能、數據安全性等指標上更高的RAID系統。當然,組合等級的實現成本一般都非常昂貴,只是在少數特定場合應用。實際得到較為廣泛應用的只有RAID01和RAID10兩個等級。
- 性能不佳
- 讀的性能很好
- 如果我們不使用硬件 RAID 控制器寫的性能會很差
- 從兩個奇偶校驗驅動器上重建
- 完全容錯
- 2個磁盤空間將用於奇偶校驗, 成本高
- 可用於大型陣列
- 用於備份和視頻流中,用於大規模
8、RAID10
RAID 10 可以被稱為1 + 0或0 +1。同時擁有RAID0的超凡速度和RAID1的高數據可靠性,但是磁盤的利用率比較低
-
RAID01是先做條帶化再作鏡像,本質是對物理磁盤實現鏡像;
-
RAID10是先做鏡像再作條帶化,是對虛擬磁盤實現鏡像。
相同的配置下,通常RAID01比RAID10具有更好的容錯能力。RAID01兼備了RAID0和RAID1的優點,整體磁盤利用率均僅為50%。
- 良好的讀寫性能
- 總容量丟失一半的可用空間
- 容錯
- 從副本數據中快速重建
- 由於其高性能和高可用性,常被用於數據庫的存儲中

四、主流RAID等級對比
RAID 等級 | RAID0 | RAID1 | RAID3 | RAID5 | RAID6 | RAID10 |
---|---|---|---|---|---|---|
別名 | 條帶 | 鏡像 | 專用奇偶校驗條帶 | 分布奇偶校驗條帶 | 雙重奇偶校驗條帶 | 鏡像加條帶 |
容錯性 | 無 | 有 | 有 | 有 | 有 | 有 |
冗余類型 | 無 | 有 | 有 | 有 | 有 | 有 |
熱備份選擇 | 無 | 有 | 有 | 有 | 有 | 有 |
讀性能 | 高 | 低 | 高 | 高 | 高 | 高 |
隨機寫性能 | 高 | 低 | 低 | 一般 | 低 | 一般 |
連續寫性能 | 高 | 低 | 低 | 低 | 低 | 一般 |
需要磁盤數 | n≥1 | 2n (n≥1) | n≥3 | n≥3 | n≥4 | 2n(n≥2)≥4 |
可用容量 | 全部 | 50% | (n-1)/n | (n-1)/n | (n-2)/n | 50% |
五、RAID選擇
在實際應用中,應當根據用戶的數據應用特點和具體情況,綜合考慮可用性、性能和成本來選擇合適的RAID等級。RAID等級的選擇主要有三個因素:數據可用性、I/O性能、成本。
- 如果不要求可用性,選擇RAID0以獲得高性能。
- 如果可用性和性能是重要的,而成本不是一個主要因素,則根據磁盤數量選擇RAID1。
- 如果可用性,成本和性能都同樣重要,則根據一般的數據傳輸和磁盤數量選擇RAID3或RAID5。