跳至內容

RAID

本頁使用了標題或全文手工轉換
維基百科,自由的百科全書
RAID」的各地常用名稱
中國大陸獨立硬盤冗餘陣列
臺灣容錯式磁碟陣列
港澳獨立磁碟冗餘陣列

獨立硬盤冗餘陣列RAID, Redundant Array of Independent Disks),舊稱廉價磁盤冗餘陣列Redundant Array of Inexpensive Disks),簡稱磁盤陣列。利用虛擬化儲存技術把多個硬碟組合起來,成為一個或多個硬碟陣列組,目的為提升效能或資料冗餘,或是兩者同時提升。

在運作中,取決於 RAID 層級不同,資料會以多種模式分散於各個硬碟,RAID 層級的命名會以 RAID 開頭並帶數字,例如:RAID 0、RAID 1、RAID 5、RAID 6、RAID 7、RAID 01、RAID 10、RAID 50、RAID 60。每種等級都有其理論上的優缺點,不同的等級在兩個目標間取得平衡,分別是增加資料可靠性以及增加存儲器(群)讀寫效能。

簡單來說,RAID把多個硬碟組合成為一個邏輯硬碟,因此,作業系統只會把它當作一個實體硬碟。RAID常被用在伺服器電腦上,並且常使用完全相同的硬碟作為組合。由於硬碟價格的不斷下降與RAID功能更加有效地與主機板整合,它也成為普通用戶的一個選擇,特別是需要大容量儲存空間的工作,如:視訊與音訊製作。

磁碟陣列比較表

RAID等級 最少硬碟 最大容錯 可用容量 讀取效能 寫入效能 安全性 目的 應用產業
單一硬碟 (參考) 0 1 1 1
JBOD 1 0 n 1 1 無(同RAID 0) 增加容量 個人(暫時)儲存備份
0 2 0 n n n 一個硬碟異常,全部資料都會異常 追求最大容量、速度 影片剪接快取用途
1 2 n-1 1 n 1 高,一個正常即可 追求最大安全性 個人、企業備份
5 3 1 n-1 n-1 n-1 中下至中 追求最大容量、最小預算 個人、小型企業備份
6 4 2 n-2 n-2 n-2 中至中高,僅安全性較RAID 5高 同RAID 5,但較安全 個人、企業備份
10 4 綜合RAID 0/1優點,理論速度較快 大型資料庫、伺服器
50 6 提升資料安全
60 8 提升資料安全

1. n代表硬碟總數
2. JBOD(Just a Bunch Of Disks)指將數個物理硬碟,在操作系統中合併成一個邏輯硬碟,以直接增加容量
3.依不同 RAID 廠商實作演算法對於效能表現會有不同,效能公式僅供參考
4.RAID 10、50、60 依實作 Parity 不同公式也不同

標準RAID

RAID 0

RAID 0
RAID 0

RAID 0亦稱為帶區。它將兩個以上的磁盤並聯起來,成為一個大容量的磁盤。在存放數據時,分段後分散儲存在這些磁盤中,因為讀寫時都可以並行處理,所以在所有的級別中,RAID 0的速度是最快的。但是RAID 0既沒有冗餘功能,也不具備容錯能力,如果一個磁盤(物理)損壞,所有數據都會丟失,危險程度與JBOD相當。

RAID 1

RAID 1
RAID 1

兩組以上的N個磁盤相互作鏡像,在一些多線程操作系統中能有很好的讀取速度,理論上讀取速度等於硬盤數量的倍數,與RAID 0相同。另外寫入速度有微小的降低。只要一個磁盤正常即可維持運作,可靠性最高。其原理為在主硬盤上存放數據的同時也在鏡像硬盤上寫一樣的數據。當主硬盤(物理)損壞時,鏡像硬盤則代替主硬盤的工作。因為有鏡像硬盤做數據備份,所以RAID 1的數據安全性在所有的RAID級別上來說是最好的。但無論用多少磁碟做RAID 1,僅算一個磁碟的容量,是所有RAID中磁盤利用率最低的一個級別。

如果用兩個不同大小的磁碟建RAID 1,可用空間為較小的那個磁碟,較大的磁碟多出來的空間也可以分割成一個區來使用,不會造成浪費。

RAID 1沒有校驗機制。用兩個磁盤組成RAID 1陣列,如果兩個硬盤上的數據出現差異,RAID 1會不知道該相信哪一個硬盤,這種情形稱作大腦分裂英語Split-brain (computing)。事實上,RAID 1的磁盤數量越多,越有可能其中某個磁盤的數據變得不一致(但仍然工作),RAID 1隻會從第一個工作的硬盤裡提供數據,沒有辦法檢測到底哪個硬盤的數據不對。[1]

RAID 2

RAID 2
RAID 2

這是RAID 0的改良版,以漢明碼(Hamming Code)的方式將數據進行編碼後分割為獨立的位元,並將數據分別寫入硬盤中。因為在數據中加入錯誤修正碼(ECC,Error Correction Code),所以數據整體的容量會比原始數據大一些。

RAID 2最少要三台磁碟機方能運作。

RAID 3

RAID 3
RAID 3

採用Bit-interleaving(數據交錯儲存)技術,它需要通過編碼再將數據位元分割後分別存在硬盤中,而將相同位元檢查後單獨存在一個硬盤中,但由於數據內的位元分散在不同的硬盤上,因此就算要讀取一小段數據資料都可能需要所有的硬盤進行工作,所以這種規格比較適於讀取大量數據時使用。

RAID 4

RAID 4
RAID 4

採用塊交織技術(Block interleaving)。它與RAID 3不同的是它在分割時是以區塊為單位分別存在硬盤中,但每次的數據存取都必須從同位元檢查的那個硬盤中取出對應的同位元數據進行核對,由於過於頻繁的使用,所以對硬盤的損耗可能會提高。

RAID 5

RAID 5
RAID 5

RAID 5是一種儲存性能、數據安全和存儲成本兼顧的存儲解決方案。它使用的是Disk Striping(硬盤分割)技術。

RAID 5使用「奇偶校驗位」。與 RAID 4 一樣,有效大小是 N-1 個磁盤的大小。 然而,由於奇偶校驗信息也在 N 個驅動器之間均勻分布,因此避免了每次寫入都必須更新奇偶校驗磁盤的瓶頸。防止單個磁盤故障,而且訪問速度快[2]

RAID 5不是對存儲的數據進行備份,而是把數據和相對應的奇偶校驗信息存儲到組成RAID 5的各個磁盤上,並且奇偶校驗信息和相對應的數據分別存儲於不同的磁盤上。當RAID 5的一個磁盤數據發生損壞後,可以利用剩下的數據和相應的奇偶校驗信息去恢復被損壞的數據。RAID 5可以理解為是RAID 0和RAID 1的折衷方案。RAID 5可以為系統提供數據安全保障,但保障程度要比鏡像低而磁盤空間利用率要比鏡像高。RAID 5具有和RAID 0相近似的數據讀取速度,只是因為多了一個奇偶校驗信息,寫入數據的速度相對單獨寫入一塊硬盤的速度略慢,若使用「回寫快取」可以讓效能改善不少。同時由於多個數據對應一個奇偶校驗信息,RAID 5的磁盤空間利用率要比RAID 1高,存儲成本相對較便宜。

冗餘磁盤陣列在最可能發生的單個磁盤故障情況下提供保護,在這種情況下,單個磁盤只是停止工作。這消除了構建大型 EIDE(增強型IDE) 磁盤陣列的主要障礙。

RAID-5 並不能完全防止其他類型的磁盤故障。 RAID-5 將在單個磁盤停止工作但導致整個 EIDE 總線發生故障(或整個 EIDE 控制器卡發生故障)但只是暫時停止運行的情況下提供有限的保護。這將暫時禁用整個 RAID-5 陣列。如果更換壞盤解決了問題,即故障沒有永久損壞其他磁盤上的數據,那麼 RAID-5 陣列將正常恢復。 相似的如果只是控制器卡損壞,則更換它將使 RAID-5 陣列正常恢復。 但是,如果不止一個磁盤損壞,尤其是文件或目錄結構信息損壞,整個 RAID-5 陣列就會損壞。 剩餘的故障模式是磁盤正在傳送損壞的數據。 RAID-5 沒有對此固有的保護;但是,可以在事件標頭中內置對數據的縱向奇偶校驗,例如校驗和記錄計數 (CRC),以標記問題。

RAID 6

RAID 6
RAID 6

與RAID 5相比,RAID 6增加第二個獨立的奇偶校驗信息塊。兩個獨立的奇偶系統使用不同的算法,數據的可靠性非常高,任意兩塊磁盤同時失效時不會影響數據完整性。RAID 6需要分配給奇偶校驗信息更大的磁盤空間和額外的校驗計算,相對於RAID 5有更大的IO操作量和計算量,其「寫性能」強烈取決於具體的實現方案,因此RAID 6通常不會通過軟件方式來實現,而更可能通過硬件方式實現。

同一陣列中最多容許兩個磁盤損壞。更換新磁盤後,資料將會重新算出並寫入新的磁盤中。

依照設計理論,RAID 6必須具備四個以上的磁盤才能生效。可使用的容量為硬盤總數減去2的差,乘以最小容量,公式為:

同理,數據保護區域容量則為最小容量乘以2。

RAID 6在硬體磁碟陣列卡的功能中,也是最常見的磁碟陣列等級。

實現

Storage Networking Industry Association (SNIA)對於RAID 6的定義是:"在任意兩塊磁盤同時失效的情況下,仍然能夠對RAID中的所有虛擬磁盤執行讀寫操作的RAID實現。迄今已經有:(奇偶里德-所羅門)雙校驗、正交雙奇偶校驗和對角奇偶校驗等若干方法用於實現RAID 6。"[3]

為了達到容忍任意兩塊磁盤失效的目的,需要計算兩種不同的綜合解碼。其中之一是P,可以象RAID 5那樣經過簡單的異或計算獲得,而另一個不同的綜合編碼則比較複雜,需要利用域論來解決。

要解決這個問題,需要引入一個伽羅瓦域,對於一個合適的k次不可約多項式。一塊數據可以二進制形式記作,其中是 0 或者 1,對應着伽羅瓦域中的元素。令對應磁盤條帶中的數據,以這種方式編碼成體中的元素(實際上可能會切分成字節大小的塊)。如果是體的某個生成元,且 表示體中的加法、並列表示體中的乘法的話,則 的計算可以表示為( 表示數據磁盤的編號):

對於計算機科學知識背景的人士,比較容易理解的方法是把 看作是異或運算、把 看作對一塊數據進行線性反饋移位寄存器操作的結果。於是上述公式[4]P的計算就是對每個條帶進行異或。這是因為對於任何二階有限域而言,加法其實就是異或。Q的計算則是對每個條帶進行移位運算之後的結果進行異或。

如果一塊數據磁盤失效了,數據可以同 RAID 5 一樣重新計算出來。如果兩塊數據磁盤或者一塊數據磁盤和一塊包含P的磁盤失效了,數據可以通過PQ(或者僅通過 Q)通過更加複雜的過程重新計算出來,計算的過程需要用到域論,非常複雜。而如果 () 兩塊數據盤丟失了,使用 的其他信息可以求出 ,而

的等式的兩端同時乘以 ,並加到前面的等式中就可以得到 ,就可以求出 , 進一步就可以求出

與計算 P 相比,對 Q 的計算要更加消耗CPU。所以軟件方式實現的 RAID 6 對於系統性能會有明顯的影響,而硬件方案則相對複雜。

混合RAID

JBOD

JBOD
JBOD

JBOD(Just a Bunch Of Disks)在分類上,JBOD並不是RAID的等級。由於並沒有規範,市場上有兩類主流的做法

  1. 使用單獨的連結端口如SATA、USB或1394同時控制多個各別獨立的硬碟,使用這種模式通常是較高階的設備,還具備有RAID的功能,不需要依靠JBOD達到合併邏輯磁區的目的。
  2. 只是將多個硬碟空間合併成一個大的邏輯硬碟,沒有錯誤備援機制。

資料的存放機制是由第一顆硬碟開始依序往後存放,即作業系統看到的是一個大硬碟(由許多小硬碟組成的)。但如果硬碟損毀,則該顆硬碟上的所有數據將無法救回。若第一顆硬碟損壞,通常無法作救援(因為大部分檔案系統將磁碟分割表(partition table)存在磁碟前端,即第一顆),失去磁碟分割表即失去一切數據,若遭遇磁碟陣列資料或硬碟出錯的狀況,危險程度較RAID 0更劇。它的好處是不會像RAID 0,每次存取都要讀寫全部硬碟。但在部分的JBOD數據恢復實踐中,可以恢復未損毀之硬碟上的數據。同時,因為每次讀寫操作只作用於單一硬碟,JBOD的傳輸速率與I/O表現均與單顆硬碟無異。

RAID 7

RAID 7並非公開的RAID標準,而是Storage Computer Corporation的專利硬體產品名稱,RAID 7是以RAID 3及RAID 4為基礎所發展,但是經過強化以解決原來的一些限制。另外,在實作中使用大量的快取記憶體以及用以實現非同步陣列管理的專用即時處理器,使得RAID 7可以同時處理大量的IO要求,所以效能甚至超越了許多其他RAID標準的實作產品。但也因為如此,在價格方面非常的高昂。[5]

RAID 10/01

RAID 1+0
RAID 0+1

RAID 10是先做鏡像卷RAID 1 將所有硬碟分為兩組,再做RAID 0 執行條帶化操作分割數據 ,視為以RAID 1作為最低組合,然後將每組RAID 1視為一個「硬盤」組合為RAID 0運作。

RAID 01則是跟RAID 10的程序相反,是先將數據分割。再做鏡像卷RAID 1 它將所有的硬碟分為兩組,每組各自構成為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 50
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 60
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存取,因此效能較高。不過使用門檻高,而且容量利用率低是較大的問題。

實現方式

根據實現模式,分為軟件和硬件兩種:[6]

軟體磁碟陣列(Software RAID):
主要由CPU處理陣列儲存作業,缺點為耗損較多CPU資源運算RAID,優點則是價格低(若用作業系統的RAID功能,則無需額外花費)。
  • 硬體輔助磁碟陣列(Hardware-Assisted RAID):需要一張基於Fake RAID(偽RAID)的RAID卡,以及廠商所提供的驅動程式,但此類RAID卡仍然藉助CPU進行運算。此類RAID卡的陣列較易遷移到其他電腦,其RAID功能靠執行於作業系統的廠商驅動程式和CPU運算提供。
  • 作業系統的RAID功能:如LinuxFreeBSDWindows Server等作業系統內建RAID功能。
  • Windows10內建的磁碟管理有五種模式:
簡單磁碟區:獨立運作的基本分割區。若PC上只有一個物理磁碟,那麼只能創建簡單磁碟區。
跨距磁碟區(跨區卷):將不同物理磁碟的多個未配置空間合併為一個邏輯磁區。資料的存放機制是由第一顆硬碟開始依序往後存放,作業系統會視為一個硬碟。如果任一個物理硬碟損毀,則該邏輯磁區上的所有資料將無法救回。
等量磁碟區(帶區卷):由兩個或多個物理磁碟的相同容量空間組成。資料分佈在多個物理磁碟中,可以提高效能。
鏡像磁碟區:將兩個或多個物理磁碟中創建完全相同的資料副本,即使其中一個物理硬碟損壞,資料仍然可以從其他冗餘副本中獲取,具有容錯空間。若物理磁碟容量大小不同,實際可用空間將等於最小的物理磁碟。
RAID-5磁碟區:最大可支援9.4ZB的硬碟容量,最多可創建128個分割區。
硬體磁碟陣列(Hardware RAID)
  • 基於主機板的磁碟陣列:只需要主機板支援即可(通常是晶片組內建的RAID功能,如Intel Matrix RAID,後來變為Intel Rapid Storage Technology),不需要任何磁碟陣列卡。若主機板損壞,可能難以購買同款主機板重建RAID。
  • RAID卡:與Fake RAID卡相比,RAID卡基於片上RAID (ROC, RAID-on-chip),具有獨立的CPU資源及獨立BIOS。優點是讀寫效能快,不佔用伺服器資源,可用於任何作業系統,也能在系統斷電後,透過備份電池模組(BBU, Backup Battery Unit)以及非揮發性記憶體(NVRAM)將硬碟讀寫日誌(Journal)包含的剩餘讀寫作業先記錄在記憶體中,等待電力供應復原後,再由NVRAM取回日誌資料,接著再完成讀寫作業,將剩餘讀寫作業安全完成以確保讀寫完整性。備份電池模組通常會配合陣列卡的Write-Back(回寫)快取模式,藉由此記憶體快取讀寫作業以得到更高的讀寫效能;但是沒有備份電池模組的硬體磁碟陣列卡若使用Write-Back快取模式,遭遇斷電情形會導致讀寫資料流失。此外,由於硬體磁碟陣列卡配備內建處理器,因此可以與作業系統分離,獨立對硬碟進行各種操作。相比於軟體磁碟陣列,還原作業的速度更快。然而,其缺點在於售價較高,且性能與價格呈正相關。此外,使用RAID卡還可能因內建的自檢程式而導致電腦啟動時間增加。

應用

RAID2、3、4較少實際應用,因為RAID0、RAID1、RAID5、RAID6和混合RAID已經涵蓋所需的功能,因此RAID2、3、4大多只在研究領域有實作,而實際應用上則以RAID0、RAID1、RAID5、RAID6和混合RAID為主。

RAID4有應用在某些商用機器上,像是NetApp公司設計的NAS系統就是使用RAID4的設計概念。

以下是RAID的一些應用場景:

參考文獻

  1. ^ High availability with the Distributed Replicated Block Device. 2010-08-04 [2022-01-26]. (原始內容存檔於2022-01-26). 
  2. ^ Terabyte IDE RAID-5 Disk Arrays. [2022-03-20]. (原始內容存檔於2022-03-20). 
  3. ^ Dictionary R. SNIA.org. Storage Networking Industry Association. [2007-11-24]. (原始內容存檔於2007-12-02). 
  4. ^ Anvin, H. Peter. The Mathematics of RAID-6 (PDF). Kernel.org. Linux Kernel Organization. May 21, 2009 [November 4, 2009]. (原始內容存檔 (PDF)於2015-05-30). 
  5. ^ RAID Level 7. [2010-07-29]. (原始內容存檔於2010-06-21). 
  6. ^ Hardware RAID vs. Software RAID: Which Implementation is Best for my Application? [軟體磁碟陣列與硬體磁碟陣列:哪種實作更好?] (PDF). Adaptec公司. [2019-03-17]. (原始內容存檔 (PDF)於2019-03-15). 

外部連結