RAID原理和級(jí)別
一、概述
1988年美國加州大學(xué)伯克利分校的提出了RAID概念(RedundantArrayofInexpensiveDisks廉價(jià)冗余磁盤陣列),隨著磁盤成本的不斷降低,RAID變成了(RedundantArrayofIndependentDisks獨(dú)立磁盤冗余陣列),但實(shí)質(zhì)內(nèi)容沒有改變。SNIA、Berkeley等組織機(jī)構(gòu)把RAID0~RAID6七個(gè)等級(jí)定為標(biāo)準(zhǔn)的RAID等級(jí),標(biāo)準(zhǔn)RAID可以組合成其他RAID等級(jí),而實(shí)際中使用最多的等級(jí)是RAID0、RAID1、RAID3、RAID5、RAID6和RAID10。
RAID每一個(gè)等級(jí)代表一種實(shí)現(xiàn)方法和技術(shù),等級(jí)之間并無高低之分。在實(shí)際應(yīng)用中,應(yīng)當(dāng)根據(jù)用戶的數(shù)據(jù)應(yīng)用特點(diǎn),綜合考慮可用性、性能和成本來選擇合適的RAID等級(jí),以及具體的實(shí)現(xiàn)方式。
從實(shí)現(xiàn)角度看,RAID主要分為軟RAID、硬RAID以及軟硬混合RAID三種。
軟RAID:所有功能均由操作系統(tǒng)和CPU來完成,效率自然最低
硬RAID:配備了專門的RAID控制/處理芯片和I/O處理芯片以及陣列緩沖,不占用CPU資源,但成本很高
軟硬混合RAID:具備RAID控制/處理芯片,但缺乏I/O處理芯片,需要CPU和驅(qū)動(dòng)程序來完成,性能和成本在軟RAID和硬RAID之間
二、RAID基本原理
RAID是由多個(gè)獨(dú)立的高性能磁盤驅(qū)動(dòng)器組成的磁盤子系統(tǒng),從而提供比單個(gè)磁盤更高的存儲(chǔ)性能和數(shù)據(jù)冗余的技術(shù)。
RAID是一類多磁盤管理技術(shù),其向主機(jī)環(huán)境提供了成本適中、數(shù)據(jù)可靠性高的高性能存儲(chǔ)。RAID的兩個(gè)關(guān)鍵目標(biāo)是提高數(shù)據(jù)可靠性和I/O性能。
磁盤陣列中,數(shù)據(jù)分散在多個(gè)磁盤中,然而對于計(jì)算機(jī)系統(tǒng)來說,就像一個(gè)單獨(dú)的磁盤。通過把相同數(shù)據(jù)同時(shí)寫入到多塊磁盤(典型的如鏡像),或者將計(jì)算的校驗(yàn)數(shù)據(jù)寫入陣列中來獲得冗余能力,當(dāng)單塊磁盤出現(xiàn)故障時(shí)可以保證不會(huì)導(dǎo)致數(shù)據(jù)丟失。
RAID中主要有三個(gè)關(guān)鍵概念和技術(shù):鏡像(Mirroring)、數(shù)據(jù)條帶(DataStripping) 和 數(shù)據(jù)校驗(yàn)(Dataparity):
鏡像:將數(shù)據(jù)復(fù)制到多個(gè)磁盤,一方面可以提高可靠性,另一方面可并發(fā)從兩個(gè)或多個(gè)副本讀取數(shù)據(jù)來提高讀性能。顯而易見,鏡像的寫性能要稍低,確保數(shù)據(jù)正確地寫到多個(gè)磁盤需要更多的時(shí)間消耗。
數(shù)據(jù)條帶:將數(shù)據(jù)分片保存在多個(gè)不同的磁盤,多個(gè)數(shù)據(jù)分片共同組成一個(gè)完整數(shù)據(jù)副本,這與鏡像的多個(gè)副本是不同的,它通常用于性能考慮。數(shù)據(jù)條帶具有更高的并發(fā)粒度,當(dāng)訪問數(shù)據(jù)時(shí),可以同時(shí)對位于不同磁盤上數(shù)據(jù)進(jìn)行讀寫操作,從而獲得非常可觀的I/O性能提升。
數(shù)據(jù)校驗(yàn):利用冗余數(shù)據(jù)進(jìn)行數(shù)據(jù)錯(cuò)誤檢測和修復(fù),冗余數(shù)據(jù)通常采用海明碼、異或操作等算法來計(jì)算獲得。利用校驗(yàn)功能,可以很大程度上提高磁盤陣列的可靠性、魯棒性和容錯(cuò)能力。不過,數(shù)據(jù)校驗(yàn)需要從多處讀取數(shù)據(jù)并進(jìn)行計(jì)算和對比,會(huì)影響系統(tǒng)性能。
不同等級(jí)的RAID采用一個(gè)或多個(gè)以上的三種技術(shù),來獲得不同的數(shù)據(jù)可靠性、可用性和I/O性能。至于設(shè)計(jì)何種RAID(甚至新的等級(jí)或類型)或采用何種模式的RAID,需要在深入理解系統(tǒng)需求的前提下進(jìn)行合理選擇,綜合評(píng)估可靠性、性能和成本來進(jìn)行折中的選擇。
總體說來,RAID主要優(yōu)勢有:大容量、高性能、可靠性、可管理性。
三、常見RAID等級(jí)
1、RAID0
RAID0稱為條帶,是一種簡單的、無數(shù)據(jù)校驗(yàn)的數(shù)據(jù)條帶化技術(shù)。性能在所有RAID等級(jí)中是最高的。不提供任何形式的冗余策略,如果一個(gè)磁盤(物理)損壞,所有數(shù)據(jù)都會(huì)丟失。100%利用存儲(chǔ)空間。
寫數(shù)據(jù)的時(shí)候,會(huì)將數(shù)據(jù)分為N份,以獨(dú)立的方式實(shí)現(xiàn)N塊磁盤的讀寫,那么這N份數(shù)據(jù)會(huì)同時(shí)并發(fā)的寫到磁盤中,因此執(zhí)行性能非常的高。

2、RAID1
RAID1稱為鏡像,它將數(shù)據(jù)完全一致地分別寫到工作磁盤和鏡像磁盤,它的磁盤空間利用率為50%。數(shù)據(jù)寫入時(shí)性能有所影響,但是讀數(shù)據(jù)沒有影響。提供了最佳的數(shù)據(jù)保護(hù),一旦工作磁盤發(fā)生故障,系統(tǒng)自動(dòng)從鏡像磁盤讀取數(shù)據(jù),不會(huì)影響用戶工作。

3、RAID3
RAID3稱為專用奇偶校驗(yàn)條帶,它采用一個(gè)專用的磁盤作為校驗(yàn)盤,其余磁盤作為數(shù)據(jù)盤,數(shù)據(jù)按 *位* 或 *字節(jié)* 為單位的方式交叉存儲(chǔ)到各個(gè)數(shù)據(jù)盤中。RAID3至少需要三塊磁盤。寫數(shù)據(jù)時(shí)性能過低。
當(dāng)一塊硬盤失效時(shí),該硬盤上的所有數(shù)據(jù)塊必須使用校驗(yàn)信息重新建立。如果是從好盤中讀取數(shù)據(jù)塊,不會(huì)有任何變化。但是如果要讀取的數(shù)據(jù)塊正好位于已經(jīng)損壞的硬盤上,則必須同時(shí)讀取同一條帶中的所有其他數(shù)據(jù)塊,并根據(jù)校驗(yàn)值重建丟失的數(shù)據(jù)。
出現(xiàn)大量的寫操作,RAID-3會(huì)把數(shù)據(jù)的寫入操作分散到多個(gè)磁盤上進(jìn)行,但是不管是向哪一個(gè)數(shù)據(jù)盤寫入數(shù)據(jù),都需要同時(shí)重寫校驗(yàn)盤中的相關(guān)信息
如下圖所示,物理盤2中的每一個(gè)校驗(yàn)塊所包含的都是其他兩塊物理盤中對應(yīng)數(shù)據(jù)塊的校驗(yàn)信息,P0為數(shù)據(jù)0、1的異或值,P1為數(shù)據(jù)2、3的異或值,P2為數(shù)據(jù)4、5的異或值
但是這種情況會(huì)導(dǎo)致物理盤2,也就是存放校驗(yàn)位的磁盤經(jīng)常性故障,于是出現(xiàn)了解決方案 RAID5

5、RAID4
RAID4與RAID3的原理大致相同,RAID-4是以 *條帶* 為單位。提供了非常好的讀性能,但寫性能比較差。而且隨著成員磁盤數(shù)量的增加,校驗(yàn)盤的系統(tǒng)瓶頸將更加突出。在實(shí)際應(yīng)用中很少見,主流存儲(chǔ)產(chǎn)品也很少使用RAID4保護(hù)。
6、RAID5
RAID5稱為分布奇偶校驗(yàn)條帶,應(yīng)該是目前最常見的RAID等級(jí),原理與RAID4相似,但不存在RAID4中的并發(fā)寫操作時(shí)的校驗(yàn)盤性能瓶頸問題。
RAID-5數(shù)據(jù)以 *條帶* 為單位分布到各個(gè)硬盤上,不是把所有的校驗(yàn)塊集中保存在一個(gè)專門的校驗(yàn)盤中,而是將校驗(yàn)塊分散到所有的數(shù)據(jù)盤中。
性能卓
讀速度將非常好
寫速度處于平均水準(zhǔn),如果我們不使用硬件 RAID 控制器,寫速度緩慢
從所有驅(qū)動(dòng)器的奇偶校驗(yàn)信息中重建
完全容錯(cuò)
1個(gè)磁盤空間將用于奇偶校驗(yàn)
可以被用在文件服務(wù)器,Web服務(wù)器,非常重要的備份中
RAID-5的校驗(yàn)值采用的是異或算法。異或運(yùn)算是二進(jìn)制數(shù)值間的一種算法,其運(yùn)算符號(hào)為XOR,或者用“⊕”表示。RAID-5之所以能夠容錯(cuò),就是利用了異或運(yùn)算的以下特點(diǎn)
# 1.運(yùn)算結(jié)果與運(yùn)算順序無關(guān)
(a ⊕ b) ⊕ c=a ⊕ (b ⊕ c)
# 2.各個(gè)參與運(yùn)算的數(shù)字與結(jié)果循環(huán)對稱
# 如果a ⊕ b ⊕ c=d, 那么:
a=b ⊕ c ⊕ d
b=a ⊕ c ⊕ d
c=a ⊕ b ⊕ d
上面例子中的a、b、c、d看作RAID-5四塊成員盤上的條帶,其中三個(gè)是數(shù)據(jù)條帶,剩下一個(gè)是校驗(yàn)條帶,如果有一塊成員盤離線,不管哪個(gè)條帶丟失了,都可以用剩下的三個(gè)條帶經(jīng)過異或計(jì)算出來。
如下圖所示,RAID-5的校驗(yàn)碼存在于所有硬盤上,其中P0為數(shù)據(jù)條帶0、1的校驗(yàn)值,P1為數(shù)據(jù)2、3的校驗(yàn)值,P2為數(shù)據(jù)4、5的校驗(yàn)值。

7、RAID6
RAID6稱為雙重奇偶校驗(yàn)條帶,引入雙重校驗(yàn)的概念解決其他RAID等級(jí)無法解決的兩個(gè)磁盤同時(shí)發(fā)生故障數(shù)據(jù)完整性問題。但是,它的成本要高于RAID5許多,寫性能也較差,且設(shè)計(jì)和實(shí)施非常復(fù)雜。因此RAID6很少得到實(shí)際應(yīng)用,一般是替代RAID10方案的經(jīng)濟(jì)性選擇。
標(biāo)準(zhǔn)RAID等級(jí)各有優(yōu)勢和不足。把多個(gè)RAID等級(jí)組合起來,實(shí)現(xiàn)優(yōu)勢互補(bǔ),彌補(bǔ)相互的不足,從而達(dá)到在性能、數(shù)據(jù)安全性等指標(biāo)上更高的RAID系統(tǒng)。當(dāng)然,組合等級(jí)的實(shí)現(xiàn)成本一般都非常昂貴,只是在少數(shù)特定場合應(yīng)用。實(shí)際得到較為廣泛應(yīng)用的只有RAID01和RAID10兩個(gè)等級(jí)。
性能不佳
讀的性能很好
如果我們不使用硬件 RAID 控制器寫的性能會(huì)很差
從兩個(gè)奇偶校驗(yàn)驅(qū)動(dòng)器上重建
完全容錯(cuò)
2個(gè)磁盤空間將用于奇偶校驗(yàn), 成本高
可用于大型陣列
用于備份和視頻流中,用于大規(guī)模
8、RAID10
RAID 10 可以被稱為1 + 0或0 +1。同時(shí)擁有RAID0的超凡速度和RAID1的高數(shù)據(jù)可靠性,但是磁盤的利用率比較低
相同的配置下,通常RAID01比RAID10具有更好的容錯(cuò)能力。RAID01兼?zhèn)淞薘AID0和RAID1的優(yōu)點(diǎn),整體磁盤利用率均僅為50%。
四、主流RAID等級(jí)對比
RAID 等級(jí) | RAID0 | RAID1 | RAID3 | RAID5 | RAID6 | RAID10 |
別名 | 條帶 | 鏡像 | 專用奇偶校驗(yàn)條帶 | 分布奇偶校驗(yàn)條帶 | 雙重奇偶校驗(yàn)條帶 | 鏡像加條帶 |
容錯(cuò)性 | 無 | 有 | 有 | 有 | 有 | 有 |
冗余類型 | 無 | 有 | 有 | 有 | 有 | 有 |
熱備份選擇 | 無 | 有 | 有 | 有 | 有 | 有 |
讀性能 | 高 | 低 | 高 | 高 | 高 | 高 |
隨機(jī)寫性能 | 高 | 低 | 低 | 一般 | 低 | 一般 |
連續(xù)寫性能 | 高 | 低 | 低 | 低 | 低 | 一般 |
需要磁盤數(shù) | 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選擇
在實(shí)際應(yīng)用中,應(yīng)當(dāng)根據(jù)用戶的數(shù)據(jù)應(yīng)用特點(diǎn)和具體情況,綜合考慮可用性、性能和成本來選擇合適的RAID等級(jí)。RAID等級(jí)的選擇主要有三個(gè)因素:數(shù)據(jù)可用性、I/O性能、成本。