基本RAID級別簡介

獨立磁盤冗余數組(RAID, Redundant Array of Independent Disks)簡稱硬盤陣列,其基本思想就是把多個相對便宜的硬盤組合起來,成為一個硬盤陣列組,使性能達到甚至超過一個價格昂貴、容量巨大的硬盤。根據選擇的版本不同,RAID比單顆硬盤有以下一個或多個方面的好處:增強數據集成度,增強容錯功能,增加處理量或容量。另外,磁盤陣列對于電腦來說, 看起來就像一個單獨的硬盤或邏輯存儲單元。RAID有很多級別,并且他們之間可以根據需要靈活組合。

標準RAID

RAID 0:無差錯控制的帶區組

要實現RAID 0必須要有兩個以上硬盤驅動器,RAID 0實現了帶區組,數據并不是保存在一個硬盤上,而是分成數據塊保存在不同驅動器上。因為將數據分布在不)編輯和其它要求傳輸比較大的場合使用RAID0比較合適。同時,RAID可以提高數據傳輸速率,比如同驅動器上,所以數據吞吐率大大提高,驅動器的負載也比較平衡。如果剛好所需要的數據在不同的驅動器上效率最好。它不需要計算校驗碼,實現容易。它的缺點是它沒有數據差錯控制,如果一個驅動器中的數據發生錯誤,即使其它盤上的數據正確也無濟于事了。不應該將它用于對數據穩定性要求高的場合。如果用戶進行圖象(包括動畫所需讀取的文件分布在兩個硬盤上,這兩個硬盤可以同時讀取。那么原來讀取同樣文件的時間被縮短為1/2。在所有的級別中,RAID 0的速度是最快的。但是RAID 0沒有冗余功能的,如果一個磁盤(物理)損壞,則所有的數據都無法使用。


RAID 1:鏡像結構

對于使用這種RAID 1結構的設備來說,RAID控制器必須能夠同時對兩個盤進行讀操作和對兩個鏡象盤進行寫操作。因為是鏡象結構在一組盤出現問題時,可以使用鏡象,提高系統的容錯能力。它比較容易設計和實現。每讀一次盤只能讀出一塊數據,也就是說數據塊傳送速率與單獨的盤的讀取速率相同。因為RAID 1的校驗十分完備,因此對系統的處理能力有很大的影響,通常的RAID功能由軟件實現,而這樣的實現方法在服務器負載比較重的時候會大大影響服務器效率。當您的系統需要極高的可靠性時,如進行數據統計,那么使用RAID 1比較合適。而且RAID 1技術支持“熱替換”,即不斷電的情況下對故障磁盤進行更換,更換完畢只要從鏡像盤上恢復數據即可。當主硬盤損壞時,鏡像硬盤就可以代替主硬盤工作。鏡像硬盤相當于一個備份盤,可想而知,這種硬盤模式的安全性是非常高的,RAID 1的數據安全性在所有的RAID級別上來說是最好的。但是其磁盤的利用率卻只有50%,是所有RAID級別中最低的。


RAID 1.5:一個新生的磁盤陣列方式

它具有RAID 0+1的特性,而不同的是,它的實現只需要2個硬盤。
從表面上來看,組建RAID 1.5后的磁盤,兩個都具有相同的數據。當然,RAID 1.5也是一種不能完全利用磁盤空間的磁盤陣列模式,因此,兩個80GB的硬盤在組建RAID 1.5后,和RAID 1是一樣的,即只有80GB的實際使用空間,另外80GB是它的備份數據。如果把兩個硬盤分開,分別把他們運行在原系統,也是暢通無阻的。但通過實際應用,我們發現如果兩個硬盤在分開運行后,其數據的輕微改變都會引起再次重組后的磁盤陣列,沒法實現完全的數據恢復,而是以數據較少的磁盤為準。

RAID 2:帶海明碼校驗

這是RAID 0的改良版,以漢明碼(Hamming Code)的方式將數據進行編碼后分區為獨立的比特,并將數據分別寫入硬盤中。因為在數據中加入了錯誤修正碼(ECC,Error Correction Code),所以數據整體的容量會比原始數據大一些,RAID 2最少要三臺磁盤驅動器方能運作。
從概念上講,RAID 2同RAID 3類似, 兩者都是將數據條塊化分布于不同的硬盤上, 條塊單位為位或字節。然而RAID 2 使用一定的編碼技術來提供錯誤檢查及恢復。這種編碼技術需要多個磁盤存放檢查及恢復信息,使得RAID 2技術實施更復雜。因此,在商業環境中很少使用。下圖右邊的各個磁盤上是數據的各個位,由一個數據不同的位運算得到的海明校驗碼可以保存另一組磁盤上,具體情況請見下圖。由于海明碼的特點,它可以在數據發生錯誤的情況下將錯誤校正,以保證輸出的正確。它的數據傳送速率相當高,如果希望達到比較理想的速度,那最好提高保存校驗碼ECC碼的硬盤,對于控制器的設計來說,它又比RAID 3、4或5要簡單。沒有免費的午餐,這里也一樣,要利用海明碼,必須要付出數據冗余的代價。輸出數據的速率與驅動器組中速度最慢的相等。


RAID 3:帶奇偶校驗碼的并行傳送

用Bit-interleaving(數據交錯存儲)技術,它需要通過編碼再將數據比特分割后分別存在硬盤中,而將同比特檢查后單獨存在一個硬盤中,但由于數據內的比特分散在不同的硬盤上,因此就算要讀取一小段數據資料都可能需要所有的硬盤進行工作,所以這種規格比較適于讀取大量數據時使用。
這種校驗碼與RAID 2不同,只能查錯不能糾錯。它訪問數據時一次處理一個帶區,這樣可以提高讀取和寫入速度,它像RAID 0一樣以并行的方式來存放數據,但速度沒有RAID 0快。校驗碼在寫入數據時產生并保存在另一個磁盤上。需要實現時用戶必須要有三個以上的驅動器,寫入速率與讀出速率都很高,因為校驗位比較少,因此計算時間相對而言比較少。用軟件實現RAID控制將是十分困難的,控制器的實現也不是很容易。它主要用于圖形(包括動畫)等要求吞吐率比較高的場合。不同于RAID 2,RAID 3使用單塊磁盤存放奇偶校驗信息。如果一塊磁盤失效,奇偶盤及其他數據盤可以重新產生數據。 如果奇偶盤失效,則不影響數據使用。RAID 3對于大量的連續數據可提供很好的傳輸率,但對于隨機數據,奇偶盤會成為寫操作的瓶頸。 利用單獨的校驗盤來保護數據雖然沒有鏡像的安全性高,但是硬盤利用率得到了很大的提高,為(n-1)/n。


RAID 4:帶奇偶校驗碼的獨立磁盤結構

RAID 4和RAID 3很像,不同的是它在分區時是以區塊為單位分別存在硬盤中,但每次的數據訪問都必須從同比特檢查的那個硬盤中取出對應的同比特數據進行核對,也就是按磁盤進行的,每次是一個盤。由于過于頻繁的使用,所以對硬盤的損耗可能會提高。(塊交織技術,Block interleaving)
在圖上可以這么看,RAID 3是一次一橫條,而RAID 4一次一豎條。它的特點的RAID 3也挺象,不過在失敗恢復時,它的難度可要比RAID 3大得多了,控制器的設計難度也要大許多,而且訪問數據的效率不怎么好。


RAID 5:分布式奇偶校驗的獨立磁盤結構

從它的示意圖上可以看到,它的奇偶校驗碼存在于所有磁盤上,其中的p0代表第0帶區的奇偶校驗值,其它的意思也相同。RAID5的讀出效率很高,寫入效率一般,塊式的集體訪問效率不錯。因為奇偶校驗碼在不同的磁盤上,所以提高了可靠性,允許單個磁盤出錯。RAID 5也是以數據的校驗位來保證數據的安全,但它不是以單獨硬盤來存放數據的校驗位,而是將數據段的校驗位交互存放于各個硬盤上。這樣,任何一個硬盤損壞,都可以根據其它硬盤上的校驗位來重建損壞的數據。硬盤的利用率為n-1。但是它對數據傳輸的并行性解決不好,而且控制器的設計也相當困難。RAID 3與RAID 5相比,重要的區別在于RAID 3每進行一次數據傳輸,需涉及到所有的陣列盤。而對于RAID 5來說,大部分數據傳輸只對一塊磁盤操作,可進行并行操作。在RAID 5中有“寫損失”,即每一次寫操作,將產生四個實際的讀/寫操作,其中兩次讀舊的數據及奇偶信息,兩次寫新的數據及奇偶信息。RAID-5的話,優點是提供了冗余性(支持一塊盤掉線后仍然正常運行),磁盤空間利用率較高(N-1/N),讀寫速度較快(N-1倍)。RAID5最大的好處是在一塊盤掉線的情況下,RAID照常工作,相對于RAID0必須每一塊盤都正常才可以正常工作的狀況容錯性能好多了。因此RAID5是RAID級別中最常見的一個類型。RAID5校驗位即P位是通過其它條帶數據做異或(xor)求得的。計算公式為P=D0xorD1xorD2…xorDn,其中p代表校驗塊,Dn代表相應的數據塊,xor是數學運算符號異或。
RAID 5校驗位算法詳解
P = D1 xor D2 xor D3 … xor Dn (D1,D2,D3 …Dn為數據塊,P為校驗,xor為異或運算)

XOR(Exclusive OR)的校驗原理如下表:

A值 B值 XOR結果
0 0 0
1 0 1
0 1 1
1 1 0

這里的A與B值就代表了兩個位,從中可以發現,A與B一樣時,XOR(非或又稱"非異或")結果為0,A與B不一樣時,XOR結果就是1,如果知道XOR結果,A和B中的任何兩個數值,就可以反推出剩下的一個數值。比如A為1,XOR結果為1,那么B肯定為0,如果XOR結果為0,那么B肯定為1。這就是XOR編碼與校驗的基本原理。


RAID 6: 兩種存儲的奇偶校驗碼的磁盤結構

名字很長,但是如果看到圖,大家立刻會明白是為什么,請注意p0代表第0帶區的奇偶校驗值,而pA代表數據塊A的奇偶校驗值。它是對RAID5的擴展,主要是用于要求數據絕對不能出錯的場合。當然了,由于引入了第二種奇偶校驗值,所以需要N+2個磁盤,同時對控制器的設計變得十分復雜,寫入速度也不好,用于計算奇偶校驗值和驗證數據正確性所花費的時間比較多,造成了不必須的負載。我想除了軍隊沒有人用得起這種東西。

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

RAID 6校驗數據生成公式(P和Q):
P的生成用了異或,Q的生成用了系數和異或

P = D0 XOR D1 XOR D2 XOR D3 XOR D4 XOR D5
Q = A0*D0 XOR A1*D1 XOR A2*D2 XOR A3*D3 XOR A4*D4 XOR A5*D5
其中,D0~D5是條帶化數據, A0~A5是系數

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


混合RAID

RAID 7:優化的高速數據傳送磁盤結構

RAID 7并非公開的RAID標準,而是Storage Computer Corporation的專利硬件產品名稱,RAID 7是以RAID 3及RAID 4為基礎所發展,但是經過強化以解決原來的一些限制。RAID 7所有的I/O傳送均是同步進行的,可以分別控制,這樣提高了系統的并行性,提高系統訪問數據的速度;每個磁盤都帶有高速緩沖存儲器,實時操作系統可以使用任何實時操作芯片,達到不同實時系統的需要。允許使用SNMP協議進行管理和監視,可以對校驗區指定獨立的傳送信道以提高效率。可以連接多臺主機,因為加入高速緩沖存儲器,當多用戶訪問系統時,訪問時間幾乎接近于0。由于采用并行結構,因此數據訪問效率大大提高。需要注意的是它引入了一個高速緩沖存儲器,這有利有弊,因為一旦系統斷電,在高速緩沖存儲器內的數據就會全部丟失,因此需要和UPS一起工作。當然了,這么快的東西,價格也非常昂貴。

RAID 10/01:高可靠性與高效磁盤結構

這種結構無非是一個帶區結構加一個鏡象結構,因為兩種結構各有優缺點,因此可以相互補充,達到既高效又高速還可以互為鏡像的目的。大家可以結合兩種結構的優點和缺點來理解這種新結構。這種新結構的價格高,可擴充性不好。主要用于容量不大,但要求速度和差錯控制的數據庫中。

其中可分為兩種組合:RAID 10和RAID 01
RAID 10是先鏡射再分區數據。是將所有硬盤分為兩組,視為是RAID 0的最低組合,然后將這兩組各自視為RAID 1運作。RAID 10有著不錯的讀取速度,而且擁有比RAID 0更高的數據保護性。
RAID 01則是跟RAID 10的程序相反,是先分區再將數據鏡射到兩組硬盤。它將所有的硬盤分為兩組,變成RAID 1的最低組合,而將兩組硬盤各自視為RAID 0運作。RAID 01比起RAID 10有著更快的讀寫速度,不過也多了一些會讓整個硬盤組停止運轉的機率;因為只要同一組的硬盤全部損毀,RAID 01就會停止運作,而RAID 10則可以在犧牲RAID 0的優勢下正常運作。
RAID 10巧妙的利用了RAID 0的速度以及RAID 1的保護兩種特性,不過它的缺點是需要的硬盤數較多,因為至少必須擁有四個以上的偶數硬盤才能使用。

當RAID 10有一個硬盤受損,其余硬盤會繼續運作。RAID 01只要有一個硬盤受損,同組RAID 0的所有硬盤都會停止運作,只剩下其他組的硬盤運作,可靠性較低。如果以六個硬盤建RAID 01,鏡射再用三個建RAID 0,那么壞一個硬盤便會有三個硬盤離線。因此,RAID 10遠較RAID 01常用,零售主板絕大部分支持RAID 0/1/5/10,但不支持RAID 01。


RAID 50:被稱為分布奇偶位陣列條帶

RAID 5與RAID 0的組合,先作RAID 5,再作RAID 0,也就是對多組RAID 5彼此構成Stripe訪問。由于RAID 50是以RAID 5為基礎,而RAID 5至少需要3顆硬盤,因此要以多組RAID 5構成RAID 50,至少需要6顆硬盤。以RAID 50最小的6顆硬盤配置為例,先把6顆硬盤分為2組,每組3顆構成RAID 5,如此就得到兩組RAID 5,然后再把兩組RAID 5構成RAID 0。
RAID 50在底層的任一組或多組RAID 5中出現1顆硬盤損壞時,仍能維持運作,不過如果任一組RAID 5中出現2顆或2顆以上硬盤損毀,整組RAID 50就會失效。
RAID 50由于在上層把多組RAID 5構成Stripe,性能比起單純的RAID 5高,容量利用率比RAID5要低。比如同樣使用9顆硬盤,由各3顆RAID 5再組成RAID 0的RAID 50,每組RAID 5浪費一顆硬盤,利用率為(1-3/9),RAID 5則為(1-1/9)。


RAID 53:稱為高效數據傳送磁盤結構

它擁有一個鏡射條帶數組,硬盤里其中一個條帶就是一個是由3組以上的RAID 5組成RAID 3硬盤陣列。

RAID 60

RAID 6與RAID 0的組合:先作RAID 6,再作RAID 0。換句話說,就是對兩組以上的RAID 6作Stripe訪問。RAID 6至少需具備4顆硬盤,所以RAID 60的最小需求是8顆硬盤。
由于底層是以RAID 6組成,所以RAID 60可以容許任一組RAID 6中損毀最多2顆硬盤,而系統仍能維持運作;不過只要底層任一組RAID 6中損毀3顆硬盤,整組RAID 60就會失效,當然這種情況的機率相當低。
比起單純的RAID 6,RAID 60的上層通過結合多組RAID 6構成Stripe訪問,因此性能較高。不過使用門檻高,而且容量利用率低是較大的問題。


最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 簡介 RAID是一個我們經常能見到的名詞。但卻因為很少能在實際環境中體驗,所以很難對其原理 能有很清楚的認識和掌握...
    大數據在說話閱讀 1,496評論 0 0
  • 一.RAID定義 RAID(Redundant Array of Independent Disk 獨立冗余磁盤陣...
    小艾QQD閱讀 550評論 0 1
  • RAID全稱為廉價磁盤冗余陣列(Redundant Arrays of Independent Disk),其原理...
    lijincheng閱讀 1,928評論 0 0
  • 前言 前兩天閑來無事,花了四五天的時間從B站(http://bilibili.com)抓取了其 2000萬 全部用...
    Airing閱讀 32,511評論 16 44
  • 很久沒有來簡書了,之前其實很想寫文章的,卻各種理由遲遲不下筆。今天想談一個廣而泛之的話題,十年的男(女)朋...
    Rosanna夕霧鳶尾閱讀 281評論 0 1