RAID簡介
RAID:早期稱廉價磁盤冗余陣列( Redundant Array of Inexpensive Disks),因其構建成本並不廉價,現在稱為獨立硬盤冗余陣列( Redundant Array of Independent Disks),即獨立磁盤構成的具有冗余能力的陣列。磁盤陣列是由很多價格較便宜的磁盤,組合成一個容量巨大的磁盤組,利用個別磁盤提供數據所產生加成效果提升整個磁盤系統效能。利用這項技術,將數據切割成許多區段,分別存放在各個硬盤上。磁盤陣列還能利用同位檢查(Parity Check)的觀念,在數組中任意一個硬盤故障時,仍可讀出數據,在數據重構時,將數據經計算后重新置入新硬盤中。
RAID把相同的數據存儲在多個硬盤的不同的地方(因此,冗余地)的方法。通過把數據放在多個硬盤上,輸入輸出操作能以平衡的方式交疊,改良性能。因為多個硬盤增加了平均故障間隔時間(MTBF),儲存冗余數據也增加了容錯。
磁盤陣列其樣式有三種,一是外接式磁盤陣列、二是內接式磁盤陣列,三是software RAID。
RAID級別
RAID的級別有RAID 0,RAID 1,RAID 2,RAID 3,RAID 4,RAID 5,RAID 6,RAID 7,RAID 10,RAID 01,RAID 50;但常用的級別有RAID 0,RAID 1,RAID 5,RAID 10,RAID 50,JBOD。
RAID 0
RAID 0(無差錯控制的帶區組)連續以位或字節為單位分割數據,並行讀/寫於多個磁盤上,因此具有很高的數據傳輸率,但它沒有數據冗余,因此並不能算是真正的RAID結構。RAID 0只是單純地提高性能,並沒有為數據的可靠性提供保證,而且其中的一個磁盤失效將影響到所有數據。其可用空間為 N*min(S1,S2...SN);最少磁盤上為2個及以上。
RAID 1
RAID 1(鏡象結構)是通過磁盤數據鏡像實現數據冗余,在成對的獨立磁盤上產生互為備份的數據。當原始數據繁忙時,可直接從鏡像拷貝中讀取數據,因此RAID 1可以提高讀取性能,但是寫性能略有下降。RAID 1是磁盤陣列中單位成本最高的,但提供了很高的數據安全性和可用性。當一個磁盤失效時,系統可以自動切換到鏡像磁盤上讀寫,而不需要重組失效的數據。其可用空間為 1*min(S1,S2...SN) ,如果用兩個不同大小的磁盤建RAID 1,可用空間為較小的那個磁盤,較大的磁盤多出來的空間也可以分區成一個區來使用,不會造成浪費。 最少磁盤數為2個及以上。
RAID 2
RAID2(帶漢明碼校驗)從概念上講,RAID 2 同RAID 3類似, 兩者都是將數據條塊化分布於不同的硬盤上, 條塊單位為位或字節。然而RAID 2 使用一定的編碼技術來提供錯誤檢查及恢復。這種編碼技術需要多個磁盤存放檢查及恢復信息,使得RAID 2技術實施更復雜。因此,在商業環境中很少使用。下圖左邊的各個磁盤上是數據的各個位,由一個數據不同的位運算得到的漢明校驗碼可以保存另一組磁盤上,具體情況請見下圖。由於漢明碼的特點,它可以在數據發生錯誤的情況下將錯誤校正,以保證輸出的正確。它的數據傳送速率相當高,如果希望達到比較理想的速度,那最好提高保存校驗碼ECC碼的硬盤,對於控制器的設計來說,它又比RAID3,4或5要簡單。沒有免費的午餐,這里也一樣,要利用漢明碼,必須要付出數據冗余的代價。輸出數據的速率與驅動器組中速度最慢的相等。
RAID 3
RAID 3(帶奇偶校驗碼的並行傳送)這種校驗碼與RAID2不同,只能查錯不能糾錯。它訪問數據時一次處理一個帶區,這樣可以提高讀取和寫入速度,它象RAID 0一樣以並行的方式來存放數,但速度沒有RAID 0快。校驗碼在寫入數據時產生並保存在另一個磁盤上。需要實現時用戶必須要有三個以上的驅動器,寫入速率與讀出速率都很高,因為校驗位比較少,因此計算時間相對而言比較少。用軟件實現RAID控制將是十分困難的,控制器的實現也不是很容易。它主要用於圖形(包括動畫)等要求吞吐率比較高的場合。不同於RAID 2,RAID 3使用單塊磁盤存放奇偶校驗信息。如果一塊磁盤失效,奇偶盤及其他數據盤可以重新產生數據。 如果奇偶盤失效,則不影響數據使用。RAID 3對於大量的連續數據可提供很好的傳輸率,但對於隨機數據,奇偶盤會成為寫操作的瓶頸。 利用單獨的校驗盤來保護數據雖然沒有鏡像的安全性高,但是硬盤利用率得到了很大的提高,為n-1。
RAID 4
RAID 4(帶奇偶校驗碼的獨立磁盤結構)RAID4和RAID3很象,不同的是,它對數據的訪問是按數據塊進行的,也就是按磁盤進行的,每次是一個盤。在圖上可以這么看,RAID3是一次一橫條,而RAID4一次一豎條。它的特點的RAID3也挺象,不過在失敗恢復時,它的難度可要比RAID3大得多了,控制器的設計難度也要大許多,而且訪問數據的效率不怎么好。
RAID 5
RAID 5(分布式奇偶校驗的獨立磁盤結構)使用的是Disk Striping(硬盤分區)技術。RAID 5至少需要三顆硬盤,RAID 5不是對存儲的數據進行備份,而是把數據和相對應的奇偶校驗信息存儲到組成RAID5的各個磁盤上,並且奇偶校驗信息和相對應的數據分別存儲於不同的磁盤上。當RAID5的一個磁盤數據發生損壞后,可以利用剩下的數據和相應的奇偶校驗信息去恢復被損壞的數據。RAID 5具有和RAID 0相近似的數據讀取速度,只是因為多了一個奇偶校驗信息,寫入數據的速度相對單獨寫入一塊硬盤的速度略慢。其可用空間(N-1)*min(S1,S2...SN)。
RAID 6
RAID 6(帶有兩種分布存儲的奇偶校驗碼的獨立磁盤結構)是對RAID5的擴展,主要是用於要求數據絕對不能出錯的場合。當然了,由於引入了第二種奇偶校驗值,所以需要4個磁盤,同時對控制器的設計變得十分復雜,寫入速度也不好,用於計算奇偶校驗值和驗證數據正確性所花費的時間比較多,造成了不必須的負載。其可用空間為(N-2)*min(S1,S2...SN) 。
RAID 7
RAID 7(優化的高速數據傳送磁盤結構)所有的I/O傳送均是同步進行的,可以分別控制,這樣提高了系統的並行性,提高系統訪問數據的速度;每個磁盤都帶有高速緩沖存儲器,實時操作系統可以使用任何實時操作芯片,達到不同實時系統的需要。允許使用SNMP協議進行管理和監視,可以對校驗區指定獨立的傳送信道以提高效率。可以連接多台主機,因為加入高速緩沖存儲器,當多用戶訪問系統時,訪問時間幾乎接近於0。由於采用並行結構,因此數據訪問效率大大提高。需要注意的是它引入了一個高速緩沖存儲器,這有利有弊,因為一旦系統斷電,在高速緩沖存儲器內的數據就會全部丟失,因此需要和UPS一起工作。
RAID 10
RAID 10(鏡象陣列條帶)無非是一個帶區結構加一個鏡象結構,因為兩種結構各有優缺點,因此可以相互補充,達到既高效又高速還可以的目的。先進行鏡像(RAID1),再進行條帶存放(RAID0)。主要用於容量不大,但要求速度和差錯控制的數據庫中。最少需要4+2*N塊磁盤,且每組鏡像最多只能損壞一塊,其可用空間為 N*min(S1,S2...SN)/2。
RAID 01
把RAID0和RAID1技術結合起來,即RAID0+1。數據除分布在多個盤上外,每個盤都有其物理鏡像盤,提供全冗余能力,允許一個以下磁盤故障,而不影響數據可用性,並具有快速讀/寫能力。要求至少4個硬盤才能作成RAID0+1。
RAID 50
RAID 50是RAID5與RAID0的結合。此配置在RAID5的子磁盤組的每個磁盤上進行包括奇偶信息在內的數據的剝離。每個RAID5子磁盤組要求至少三個硬盤。RAID50具備更高的容錯能力,因為它允許某個組內有一個磁盤出現故障,而不會造成數據丟失。而且因為奇偶位分部於RAID5子磁盤組上,故重建速度有很大提高。優勢:更高的容錯能力,具備更快數據讀取速率的潛力。需要注意的是:磁盤故障會影響吞吐量。故障后重建信息的時間比鏡像配置情況下要長。
RAID 53
越到后面的結構就是對前面結構的一種重復和再利用,這種結構就是RAID3和帶區結構的統一,因此它速度比較快,也有容錯功能。但價格十分高,不易於實現。這是因為所有的數據必須經過帶區和按位存儲兩種方法,在考慮到效率的情況下,要求這些磁盤同步真是不容易。
JBOD模式
JBOD(Just a Bunch of Disk)通常又稱為Span。它是在邏輯上將幾個物理磁盤一個接一個連起來, 組成一個大的邏輯磁盤。JBOD不提供容錯,該陣列的容量等於組成Span的所有磁盤的容量的總和。JBOD嚴格意義上說,不屬於RAID的范圍。不過現在很多IDE RAID控制芯片都帶着種模式,JBOD就是簡單的硬盤容量疊加,但系統處理時並沒有采用並行的方式,寫入數據的時候就是先寫的一塊硬盤,寫滿了再寫第二塊硬盤 ,以此類推。
raid總結