RAID

獨立硬碟冗餘陣列，簡稱磁碟陣列。利用虛擬化儲存技術把多個硬碟組合起來，成為一個或多個硬碟陣列組，目的為提升效能或資料冗餘，或是兩者同時提升。在運作中，取決於 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.RAID 0.RAID 0亦稱為帶區卷。它將兩個以上的磁碟並聯起來，成為一個大容量的磁碟。在存放資料時，分段後分散儲存在這些磁碟中，因為讀寫時都可以並行處理，所以在所有的級別中，RAID 0的速度是最快的。但是RAID 0既沒有冗餘功能，也不具備容錯能力，如果一個磁碟損壞，所有資料都會丟失，危險程度與JBOD相當。RAID 1.兩組以上的N個磁碟相互作映象，在一些多執行緒作業系統中能有很好的讀取速度，理論上讀取速度等於硬碟數量的倍數，與RAID 0相同。另外寫入速度有微小的降低。只要一個磁碟正常即可維持運作，可靠性最高。其原理為在主硬碟上存放資料的同時也在映象硬碟上寫一樣的資料。當主硬碟損壞時，映象硬碟則代替主硬碟的工作。因為有映象硬碟做資料備份，所以RAID 1的資料安全性在所有的RAID級別上來說是最好的。但無論用多少磁碟做RAID 1，僅算一個磁碟的容量，是所有RAID中磁碟利用率最低的一個級別。如果用兩個不同大小的磁碟建RAID 1，可用空間為較小的那個磁碟，較大的磁碟多出來的空間也可以分割成一個區來使用，不會造成浪費。formula_1RAID 1沒有校驗機制。用兩個磁碟組成RAID 1陣列，如果兩個硬碟上的資料出現差異，RAID 1會不知道該相信哪一個硬碟，這種情形稱作。事實上，RAID 1的磁碟數量越多，越有可能其中某個磁碟的資料變得不一致，RAID 1只會從第一個工作的硬盤裡提供資料，沒有辦法檢測到底哪個硬碟的資料不對。RAID 2.這是RAID 0的改良版，以漢明碼，所以資料整體的容量會比原始資料大一些。RAID 2最少要三臺磁碟機方能運作。RAID 3.採用Bit－interleaving技術，它需要透過編碼再將資料位元分割後分別存在硬碟中，而將相同位元檢查後單獨存在一個硬碟中，但由於資料內的位元分散在不同的硬碟上，因此就算要讀取一小段資料資料都可能需要所有的硬碟進行工作，所以這種規格比較適於讀取大量資料時使用。RAID 4.採用塊交織技術。它與RAID 3不同的是它在分割時是以區塊為單位分別存在硬碟中，但每次的資料存取都必須從同位元檢查的那個硬碟中取出對應的同位元資料進行核對，由於過於頻繁的使用，所以對硬碟的損耗可能會提高。RAID 5.RAID 5是一種儲存效能、資料安全和儲存成本兼顧的儲存解決方案。它使用的是Disk Striping技術。RAID 5使用“奇偶校驗位”。與 RAID 4 一樣，有效大小是 N-1 個磁碟的大小。然而，由於奇偶校驗資訊也在 N 個驅動器之間均勻分佈，因此避免了每次寫入都必須更新奇偶校驗磁碟的瓶頸。防止單個磁碟故障，而且訪問速度快。RAID 5不是對儲存的資料進行備份，而是把資料和相對應的奇偶校驗資訊儲存到組成RAID 5的各個磁碟上，並且奇偶校驗資訊和相對應的資料分別儲存於不同的磁碟上。當RAID 5的一個磁碟資料發生損壞後，可以利用剩下的資料和相應的奇偶校驗資訊去恢復被損壞的資料。RAID 5可以理解為是RAID 0和RAID 1的折衷方案。RAID 5可以為系統提供資料安全保障，但保障程度要比映象低而磁碟空間利用率要比映象高。RAID 5具有和RAID 0相近似的資料讀取速度，只是因為多了一個奇偶校驗資訊，寫入資料的速度相對單獨寫入一塊硬碟的速度略慢，若使用「回寫快取」可以讓效能改善不少。同時由於多個數據對應一個奇偶校驗資訊，RAID 5的磁碟空間利用率要比RAID 1高，儲存成本相對較便宜。冗餘磁碟陣列在最可能發生的單個磁碟故障情況下提供保護，在這種情況下，單個磁碟只是停止工作。這消除了構建大型 EIDE 磁碟陣列的主要障礙。RAID-5 並不能完全防止其他型別的磁碟故障。 RAID-5 將在單個磁碟停止工作但導致整個 EIDE 匯流排發生故障但只是暫時停止執行的情況下提供有限的保護。這將暫時禁用整個 RAID-5 陣列。如果更換壞盤解決了問題，即故障沒有永久損壞其他磁碟上的資料，那麼 RAID-5 陣列將正常恢復。相似的如果只是控制器卡損壞，則更換它將使 RAID-5 陣列正常恢復。但是，如果不止一個磁碟損壞，尤其是檔案或目錄結構資訊損壞，整個 RAID-5 陣列就會損壞。剩餘的故障模式是磁碟正在傳送損壞的資料。 RAID-5 沒有對此固有的保護；但是，可以在事件標頭中內建對資料的縱向奇偶校驗，例如校驗和記錄計數 (CRC)，以標記問題。formula_2RAID 6.與RAID 5相比，RAID 6增加第二個獨立的奇偶校驗資訊塊。兩個獨立的奇偶系統使用不同的演算法，資料的可靠性非常高，任意兩塊磁碟同時失效時不會影響資料完整性。RAID 6需要分配給奇偶校驗資訊更大的磁碟空間和額外的校驗計算，相對於RAID 5有更大的IO操作量和計算量，其“寫效能”強烈取決於具體的實現方案，因此RAID 6通常不會透過軟體方式來實現，而更可能透過硬體方式實現。同一陣列中最多容許兩個磁碟損壞。更換新磁碟後，資料將會重新算出並寫入新的磁碟中。依照設計理論，RAID 6必須具備四個以上的磁碟才能生效。可使用的容量為硬碟總數減去2的差，乘以最小容量，公式為：formula_3同理，資料保護區域容量則為最小容量乘以2。RAID 6在硬體磁碟陣列卡的功能中，也是最常見的磁碟陣列等級。實現.Storage Networking Industry Association (SNIA)對於RAID 6的定義是："在任意兩塊磁碟同時失效的情況下，仍然能夠對RAID中的所有虛擬磁碟執行讀寫操作的RAID實現。迄今已經有：(奇偶和裡德-所羅門)雙校驗、正交雙奇偶校驗和對角奇偶校驗等若干方法用於實現RAID 6。"為了達到容忍任意兩塊磁碟失效的目的，需要計算兩種不同的綜合解碼。其中之一是P，可以象RAID 5那樣經過簡單的異或計算獲得，而另一個不同的綜合編碼則比較複雜，需要利用域論來解決。要解決這個問題，需要引入一個formula_4的伽羅瓦域，對於一個合適的k次不可約多項式formula_5，formula_6。一塊資料可以二進位制形式記作formula_7，其中formula_8是 0 或者 1，對應著伽羅瓦域中的元素formula_9。令formula_10對應磁碟條帶中的資料，以這種方式編碼成體中的乘法的話，則 formula_13 和 formula_14的計算可以表示為(formula_15 表示資料磁碟的編號)：formula_16formula_17對於計算機科學知識背景的人士，比較容易理解的方法是把 formula_12 看作是異或運算、把 formula_19 看作對一塊資料進行線性反饋移位暫存器操作的結果。於是上述公式中P的計算就是對每個條帶進行異或。這是因為對於任何二階有限域而言，加法其實就是異或。Q的計算則是對每個條帶進行移位運算之後的結果進行異或。如果一塊資料磁碟失效了，資料可以同 RAID 5 一樣重新計算出來。如果兩塊資料磁碟或者一塊資料磁碟和一塊包含P的磁碟失效了，資料可以透過P 和 Q透過更加複雜的過程重新計算出來，計算的過程需要用到域論，非常複雜。而如果 formula_20 和 formula_21 (formula_22) 兩塊資料盤丟失了，使用 formula_23 的其他資訊可以求出 formula_24 和 formula_25 ，而 formula_26 和 formula_27：formula_28formula_29把 formula_25 的等式的兩端同時乘以 formula_31，並加到前面的等式中就可以得到 formula_32，就可以求出 formula_21， 進一步就可以求出formula_20。與計算 P 相比，對 Q 的計算要更加消耗CPU。所以軟體方式實現的 RAID 6 對於系統性能會有明顯的影響，而硬體方案則相對複雜。混合RAID.JBOD.JBOD在分類上，JBOD並不是RAID的等級。由於並沒有規範，市場上有兩類主流的做法資料的存放機制是由第一顆硬碟開始依序往後存放，即作業系統看到的是一個大硬碟，失去磁碟分割表即失去一切資料，若遭遇磁碟陣列資料或硬碟出錯的狀況，危險程度較RAID 0更劇。它的好處是不會像RAID 0，每次存取都要讀寫全部硬碟。但在部分的JBOD資料恢復實踐中，可以恢復未損毀之硬碟上的資料。同時，因為每次讀寫操作只作用於單一硬碟，JBOD的傳輸速率與I/O表現均與單顆硬碟無異。formula_35RAID 7.RAID 7並非公開的RAID標準，而是Storage Computer Corporation的專利硬體產品名稱，RAID 7是以RAID 3及RAID 4為基礎所發展，但是經過強化以解決原來的一些限制。另外，在實作中使用大量的快取記憶體以及用以實現非同步陣列管理的專用即時處理器，使得RAID 7可以同時處理大量的IO要求，所以效能甚至超越了許多其他RAID標準的實作產品。但也因為如此，在價格方面非常的高昂。RAID 10/01.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 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存取，因此效能較高。不過使用門檻高，而且容量利用率低是較大的問題。應用.RAID2、3、4較少實際應用，因為RAID0、RAID1、RAID5、RAID6和混合RAID已經涵蓋所需的功能，因此RAID2、3、4大多隻在研究領域有實作，而實際應用上則以RAID0、RAID1、RAID5、RAID6和混合RAID為主。RAID4有應用在某些商用機器上，像是NetApp公司設計的NAS系統就是使用RAID4的設計概念。種類.根據實現模式，分為軟體和硬體兩種：主要由CPU處理陣列儲存作業，缺點為耗損較多CPU資源運算RAID，優點則是價格偏低。分類有3種：* 基於主機板的磁碟陣列：只需要主機板支援即可，不需要任何磁碟陣列卡。若主機板損壞，可能難以購買同款主機板重建RAID。* 硬體輔助磁碟陣列：需要一張基於Fake RAID的RAID卡，以及廠商所提供的驅動程式，但此類RAID卡仍然透過CPU進行運算。這款RAID較易遷移到其他電腦。RAID功能靠執行於作業系統的廠商驅動程式和CPU運算提供。* 作業系統的RAID功能：如Linux、FreeBSD、Windows Server等作業系統內建RAID功能。RAID卡上內建處理器，不需要伺服器的CPU運算。優點是讀寫效能最快，不佔用伺服器資源，可用於任何作業系統，也能在系統斷電後，透過備份電池模組包含的剩餘讀寫作業先記錄在記憶體中，等待電力供應復原後，再由NVRAM取回日誌資料，接著再完成讀寫作業，將剩餘讀寫作業安全完成以確保讀寫完整性。備份電池模組通常會配合陣列卡的Write-Back快取模式，藉由此記憶體快取讀寫作業以得到更高的讀寫效能；但是沒有備份電池模組的硬體磁碟陣列卡，切勿使用Write-Back快取模式以免遭遇斷電情形導致讀寫資料流失。此外，因為硬體磁碟陣列卡搭載內建處理器，所以可以與作業系統分離出來，對硬碟進行各種作業，還原作業的速度也比軟體磁碟陣列快。缺點是其售價很高。