RAID是「Redundant Array of Independent Disk」的縮寫,中文意思是獨立冗餘磁盤陣列。簡單地解釋,就是將N臺硬盤經過RAID Controller(分Hardware,Software)結合成虛擬單臺大容量的硬盤使用。RAID的採用爲存儲系統(或者服務器的內置存儲)帶來巨大利益,其中提升傳輸速率和提供容錯功能是最大的優勢。前端
簡單的說,RAID是一種把多塊獨立的硬盤(物理硬盤)按不一樣的方式組合起來造成一個硬盤組(邏輯硬盤),從而提供比單個硬盤更高的存儲性能和提供數據備份技術。根據磁盤陳列的不一樣組合方式,能夠將RAID分爲不一樣的級別。數據庫
磁盤陣列中針對不一樣的應用使用的不一樣技術,稱爲RAID level,而每一level都表明着不一樣技術,目前業界公認的標準是RAID 0~RAID 5。這個level並不表明技術的高低,level 5並不高於level 3,level 1也不低過level 4,至於要選擇那一種RAID level的產品,純視用戶的操做環境(operating environment)及應用(application)而定與level的高低沒有必然的關係。安全
在RAID有一基本概念稱爲EDAP(Extended Data Availability and Protection),其強調擴充性及容錯機制,也是各家廠商如:Mylex,IBM,HP,Compaq,Adaptec,Infortrend等訴求的重點,包括在不須停機狀況下可處理如下動做:服務器
RAID 0:無差錯控制的帶區組app
要實現RAID0必需要有兩個以上硬盤驅動器,RAID0實現了帶區組,數據並非保存在一個硬盤上,而是分紅數據塊保存在不一樣驅動器上。由於將數據分佈在不一樣驅動器上,因此數據吞吐率大大提升,驅動器的負載也比較平衡。若是恰好所須要的數據在不一樣的驅動器上效率最好。它不須要計算校驗碼,實現容易。它的缺點是它沒有數據差錯控制,若是一個驅動器中的數據發生錯誤,即便其它盤上的數據正確也無濟於事了。不該該將它用於對數據穩定性要求高的場合。若是用戶進行圖象(包括動畫)編輯和其它要求傳輸比較大的場合使用RAID0比較合適。同時,RAID能夠提升數據傳輸速率,好比所需讀取的文件分佈在兩個硬盤上,這兩個硬盤能夠同時讀取。那麼原來讀取一樣文件的時間被縮短爲1/2。在全部的級別中,RAID 0的速度是最快的。可是RAID 0沒有冗餘功能的,若是一個磁盤(物理)損壞,則全部的數據都沒法使用。分佈式
若是兩塊硬盤:160G+120G=240G性能
RAID 1:鏡象結構優化
對於使用這種RAID1結構的設備來講,RAID控制器必須可以同時對兩個盤進行讀操做和對兩個鏡象盤進行寫操做。經過下面的結構圖您也能夠看到必須有兩個驅動器。由於是鏡象結構在一組盤出現問題時,可使用鏡象,提升系統的容錯能力。它比較容易設計和實現。每讀一次盤只能讀出一塊數據,也就是說數據塊傳送速率與單獨的盤的讀取速率相同。由於RAID1的校驗十分完備,所以對系統的處理能力有很大的影響,一般的RAID功能由軟件實現,而這樣的實現方法在服務器負載比較重的時候會大大影響服務器效率。當您的系統須要極高的可靠性時,如進行數據統計,那麼使用RAID1比較合適。並且RAID1技術支持「熱替換」,即不斷電的狀況下對故障磁盤進行更換,更換完畢只要從鏡像盤上恢復數據便可。當主硬盤損壞時,鏡像硬盤就能夠代替主硬盤工做。鏡像硬盤至關於一個備份盤,可想而知,這種硬盤模式的安全性是很是高的,RAID 1的數據安全性在全部的RAID級別上來講是最好的。可是其磁盤的利用率卻只有50%,是全部RAID級別中最低的。動畫
若是兩塊硬盤:160G+120G=120G編碼
RAID2:帶海明碼校驗
從概念上講,RAID 2 同RAID 3相似,二者都是將數據條塊化分佈於不一樣的硬盤上, 條塊單位爲位或字 節。然而RAID 2 使用必定的編碼技術來提供錯誤檢查及恢復。這種編碼技術須要多個磁盤存放檢查及恢復信息,使得RAID 2技術實施更復雜。所以,在商業環境中不多使用。上圖右邊的各個磁盤上是數據的各個位,由一個數據不一樣的位運算獲得的海明校驗碼能夠保存另外一組磁盤上,具體狀況請見下圖。因爲海明碼的特色,它能夠在數據發生錯誤的狀況下將錯誤校訂,以保證輸出的正確。它的數據傳送速率至關高,若是但願達到比較理想的速度,那最好提升保存校驗碼ECC碼的硬盤,對於控制器的設計來講,它又比RAID3,4或5要簡單。沒有免費的午飯,這裏也同樣,要利用海明碼,必需要付出數據冗餘的代價。輸出數據的速率與驅動器組中速度最慢的相等。
RAID3:帶奇偶校驗碼的並行傳送
RAID3這種校驗碼與RAID2不一樣,只能查錯不能糾錯。它訪問數據時一次處理一個帶區,這樣能夠提升讀取和寫入速度,它像RAID 0同樣以並行的方式來存放數據,但速度沒有RAID 0快。校驗碼在寫入數據時產生並保存在另外一個磁盤上。須要實現時用戶必需要有三個以上的驅動器,寫入速率與讀出速率都很高,由於校驗位比較少,所以計算時間相對而言比較少。用軟件實現RAID控制將是十分困難的,控制器的實現也不是很容易。它主要用於圖形(包括動畫)等要求吞吐率比較高的場合。不一樣於RAID 2,RAID 3使用單塊磁盤存放奇偶校驗信息。若是一塊磁盤失效,奇偶盤及其餘數據盤能夠從新產生數據。若是奇偶盤失效,則不影響數據使用。RAID 3對於大量的連續數據可提供很好的傳輸率,但對於隨機數據,奇偶盤會成爲寫操做的瓶頸。利用單獨的校驗盤來保護數據雖然沒有鏡像的安全性高,可是硬盤利用率獲得了很大的提升,爲(n-1)/n。
RAID4:帶奇偶校驗碼的獨立磁盤結構
RAID4和RAID3很像,不一樣的是,它對數據的訪問是按數據塊進行的,也就是按磁盤進行的,每次是一個盤。在圖上能夠這麼看,RAID3是一次一橫條,而RAID4一次一豎條。它的特色和RAID3也挺像,不過在失敗恢復時,它的難度可要比RAID3大得多了,控制器的設計難度也要大許多,並且訪問數據的效率不怎麼好。
RAID5:分佈式奇偶校驗的獨立磁盤結構
從它的示意圖上能夠看到,它的奇偶校驗碼存在於全部磁盤上,其中的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是數學運算符號異或。
RAID6:兩種存儲的奇偶校驗碼的磁盤結構
名字很長,可是若是看到圖,你們馬上會明白是爲何,請注意p0表明第0帶區的奇偶校驗值,而pA表明數據塊A的奇偶校驗值。它是對RAID5的擴展,主要是用於要求數據絕對不能出錯的場合。固然了,因爲引入了第二種奇偶校驗值,因此須要N+2個磁盤,同時對控制器的設計變得十分複雜,寫入速度也很差,用於計算奇偶校驗值和驗證數據正確性所花費的時間比較多,形成了沒必要須的負載。我想除了軍隊沒有人用得起這種東西。
RAID7:優化的高速數據傳送磁盤結構
RAID7全部的I/O傳送均是同步進行的,能夠分別控制,這樣提升了系統的並行性,提升系統訪問數據的速度;每一個磁盤都帶有高速緩衝存儲器,實時操做系統可使用任何實時操做芯片,達到不一樣實時系統的須要。容許使用SNMP協議進行管理和監視,能夠對校驗區指定獨立的傳送信道以提升效率。能夠鏈接多臺主機,由於加入高速緩衝存儲器,當多用戶訪問系統時,訪問時間幾乎接近於0。因爲採用並行結構,所以數據訪問效率大大提升。須要注意的是它引入了一個高速緩衝存儲器,這有利有弊,由於一旦系統斷電,在高速緩衝存儲器內的數據就會所有丟失,所以須要和UPS一塊兒工做。固然了,這麼快的東西,價格也很是昂貴。
RAID10/01:高可靠性與高效磁盤結構
這種結構無非是一個帶區結構加一個鏡象結構,由於兩種結構各有優缺點,所以能夠相互補充,達到既高效又高速還能夠互爲鏡像的目的。你們能夠結合兩種結構的優勢和缺點來理解這種新結構。這種新結構的價格高,可擴充性很差。主要用於容量不大,但要求速度和差錯控制的數據庫中。
其中可分爲兩種組合:RAID10和RAID01
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 50:被稱爲分佈奇偶位陣列條帶
同RAID 10相仿的,它具備RAID 5和RAID 0的共同特性。它由兩組RAID 5磁盤組成(每組最少3個),每一組都使用了分佈式奇偶位,而兩組硬盤再組建成RAID 0,實驗跨磁盤抽取數據。RAID 50提供可靠的數據存儲和優秀的總體性能,並支持更大的捲尺寸。即便兩個物理磁盤發生故障(每一個陣列中一個),數據也能夠順利恢復過來。
RAID 50最少須要6個驅動器,它最適合須要高可靠性存儲、高讀取速度、高數據傳輸性能的應用。這些應用包括事務處理和有許多用戶存取小文件的辦公應用程序。
RAID 53:稱爲高效數據傳送磁盤結構
結構的實施同Level 0數據條陣列,其中,每一段都是一個RAID 3陣列。它的冗餘與容錯能力同RAID 3。這對須要具備高數據傳輸率的RAID 3配置的系統有益,可是它價格昂貴、效率偏低。
RAID 1.5:一個新生的磁盤陣列方式
它具備RAID 0+1的特性,而不一樣的是,它的實現只須要2個硬盤。從表面上來看,組建RAID 1.5後的磁盤,兩個都具備相同的數據。固然,RAID 1.5也是一種不能徹底利用磁盤空間的磁盤陣列模式,所以,兩個80GB的硬盤在組建RAID 1.5後,和RAID 1是同樣的,即只有80GB的實際使用空間,另外80GB是它的備份數據。若是把兩個硬盤分開,分別把他們運行在原系統,也是暢通無阻的。但經過實際應用,咱們發現若是兩個硬盤在分開運行後,其數據的輕微改變都會引發再次重組後的磁盤陣列,無法實現徹底的數據恢復,而是以數據較少的磁盤爲準。
JBOD
嚴格的說,JBOD並不屬於RAID的範疇,只是將多個磁盤空間合併成一個大的邏輯磁盤,不具備錯誤冗餘機制。資料的存放機制是由第一顆磁盤開始依序日後存放,即操做系統看到的是一個大磁盤(由許多小磁盤組成)。但若是磁盤損毀,則該顆硬盤上的全部資料將沒法救回。若第一顆硬盤損壞,一般沒法做救援(因大部分檔案系統將檔案表存在磁盤前端,即第一顆),失去檔案表即失去一切資料。
若是兩塊硬盤:160G+120G=280G
在實際的應用中,RAID2~4並不存在,由於RAID5已經涵蓋了所需的功能。所以RAID2~4目前只有在研究領域有實做,而在實際應用上則以RAID 0、一、0+一、5或RAID6爲主。可是對於咱們普通用戶來講,用的最多的也就是RAID 0、一、0+1和RAID 5。