什么是RAID
硬盤是個(gè)很脆弱的東西,它經(jīng)常會(huì)壞掉。所以,為了保證服務(wù)器可靠耐用,硬盤必須時(shí)時(shí)刻刻保持可用。所以有了RAID這個(gè)東西。它的目的是將好幾個(gè)硬盤合并在一起,就算硬盤壞了一個(gè),剩下還有好幾個(gè)硬盤是正常的,這樣服務(wù)器才不會(huì)掛掉。
當(dāng)然,保證服務(wù)高可用只是RAID其中的一個(gè)功能。它還能提升儲(chǔ)存容量、加快存取速度等能力。
RAID分為0~6級(jí),另外還有RAID 1+0,簡(jiǎn)稱RAID 10。下面分別介紹這幾種RAID實(shí)現(xiàn)原理。
下圖就是一個(gè)RAID實(shí)物圖:
下圖是RAID示意圖:
它跟插線板是相似的概念。區(qū)別在于,插線板是為了擴(kuò)展電源插孔,RAID是為了擴(kuò)展硬盤插槽。
RAID-0
RAID 0沒有數(shù)據(jù)冗余、沒有奇偶校驗(yàn)。因此,如果一個(gè)硬盤壞掉了,整個(gè)RAID陣列的數(shù)據(jù)都沒法正常使用了。它存在的意義在于加快讀寫速度,提升硬盤容量。通常在數(shù)據(jù)可靠性要求不高的情況下才會(huì)使用RAID 0。比如游戲、科學(xué)計(jì)算。
因?yàn)槊總€(gè)硬盤都可以獨(dú)立讀寫,如果硬盤有n塊,那么讀寫速度提升是n倍。
下圖是RAID 0的數(shù)據(jù)分布方式:
RAID-1
RAID 1模式下,如果有n塊硬盤,那么會(huì)把數(shù)據(jù)保存n份一模一樣的。這樣即使一份數(shù)據(jù)壞掉了,剩下的備份可以正常工作。性能方面,隨機(jī)存取速度相當(dāng)于所有硬盤的總和,寫入性能和原來(lái)單個(gè)硬盤的性能一樣。
RAID-1E
這種模式跟RAID 1的區(qū)別在于,當(dāng)硬盤數(shù)量大于2時(shí),RAID 1E對(duì)于同一份數(shù)據(jù)最多保存兩份一模一樣的。這樣可以充分的利用硬盤空間。下圖說(shuō)明了這種儲(chǔ)存方式。
RAID-1+0
這種模式全稱是RAID-1加上RAID-0。它實(shí)現(xiàn)的原理如下圖所示:
用幾句話來(lái)描述吧。它相當(dāng)于先把這些硬盤成對(duì)成對(duì)的用RAID-1方式組合起來(lái),然后再把這些組合結(jié)果用RAID-0方式組合起來(lái)。這種模式下它支持高可用,又能有很好的讀寫性能。這種方式,由于需要存兩份一模一樣的數(shù)據(jù),因此容量會(huì)損失一半。
這種方式是目前最常用的。
RAID-2
這種模式現(xiàn)在已經(jīng)不太常用了。它把每個(gè)數(shù)據(jù)位都打散,然后均勻的放到各個(gè)硬盤上。使用了Hamming代碼來(lái)做糾錯(cuò),將Hamming代碼放到專門的幾個(gè)硬盤里面。下圖可以看到這種模式的數(shù)據(jù)分布:
RAID-3
這種模式現(xiàn)在也已經(jīng)不太常用了。它把每個(gè)數(shù)據(jù)字節(jié)都打散,然后均勻的分散到各個(gè)硬盤。然后將奇偶校驗(yàn)的數(shù)據(jù)放到專門的硬盤里。關(guān)于奇偶校驗(yàn)的數(shù)據(jù)在后面會(huì)提到。這種模式下,由于每個(gè)數(shù)據(jù)都分散到各個(gè)硬盤的不同地方,因此每次操作都需要所有硬盤來(lái)參與。所以,對(duì)于隨機(jī)存取的場(chǎng)景下,這種模式的性能是很差的。對(duì)于特別長(zhǎng)的順序讀寫是非常合適的,比如視頻監(jiān)控?cái)?shù)據(jù)。
RAID-4
這種模式把每個(gè)數(shù)據(jù)塊打散,然后均勻的分散到各個(gè)硬盤。另外還設(shè)置了專門的硬盤用來(lái)儲(chǔ)存奇偶校驗(yàn)的數(shù)據(jù)。這種模式下,隨機(jī)讀取的性能非常好。但是隨機(jī)寫入的性能卻不行。因?yàn)樾枰獙⑺衅媾夹r?yàn)的數(shù)據(jù)全部寫到專門的硬盤里面。
RAID-5
這種模式把每個(gè)數(shù)據(jù)塊打散,然后均勻分布到各個(gè)硬盤。與RAID-4不同的是,它將奇偶校驗(yàn)的數(shù)據(jù)均勻的分散到不同的硬盤。這樣如果有一個(gè)硬盤壞掉了,丟失的數(shù)據(jù)可以從奇偶校驗(yàn)里面計(jì)算出來(lái)。
通常RAID-5的容量會(huì)損失1/3,用來(lái)儲(chǔ)存奇偶校驗(yàn)信息。
這種模式兼顧了成本、性能,也是比較常用的一種模式。
RAID-6
這種模式與其他模式的區(qū)別在于,它支持兩塊硬盤同時(shí)損壞,并且仍然能夠正常工作。它有這般神奇的能力,是因?yàn)樗4媪藘煞N奇偶校驗(yàn)。一種是普通的XOR方式,跟RAID-5一樣。另外一種比較復(fù)雜,需要消耗比較多的CPU。這種奇偶校驗(yàn)方式在后面再講。
參考資料
https://en.wikipedia.org/wiki/RAID
https://en.wikipedia.org/wiki/Standard_RAID_levels