1. 程式人生 > >圖文並茂 RAID 技術全解 – RAID0、RAID1、RAID5、RAID100……

圖文並茂 RAID 技術全解 – RAID0、RAID1、RAID5、RAID100……

RAID 技術相信大家都有接觸過,尤其是伺服器運維人員,RAID 概念很多,有時候會概念混淆。這篇文章為網路轉載,寫得相當不錯,它對 RAID 技術的概念特徵、基本原理、關鍵技術、各種等級和發展現狀進行了全面的闡述,併為使用者如何進行應用選擇提供了基本原則,對於初學者應該有很大的幫助。

一、RAID 概述

  1988 年美國加州大學伯克利分校的 D. A. Patterson 教授等首次在論文 “A Case of Redundant Array of Inexpensive Disks” 中提出了 RAID 概念 [1] ,即廉價冗餘磁碟陣列( Redundant Array of Inexpensive Disks )。由於當時大容量磁碟比較昂貴, RAID 的基本思想是將多個容量較小、相對廉價的磁碟進行有機組合,從而以較低的成本獲得與昂貴大容量磁碟相當的容量、效能、可靠性。隨著磁碟成本和價格的不斷降低, RAID 可以使用大部分的磁碟, “廉價” 已經毫無意義。因此, RAID 諮詢委員會( RAID Advisory Board, RAB )決定用 “ 獨立 ” 替代 “ 廉價 ” ,於時 RAID 變成了獨立磁碟冗餘陣列( Redundant Array of Independent Disks )。但這僅僅是名稱的變化,實質內容沒有改變。

  RAID 這種設計思想很快被業界接納, RAID 技術作為高效能、高可靠的儲存技術,已經得到了非常廣泛的應用。 RAID 主要利用資料條帶、映象和資料校驗技術來獲取高效能、可靠性、容錯能力和擴充套件性,根據運用或組合運用這三種技術的策略和架構,可以把 RAID 分為不同的等級,以滿足不同資料應用的需求。 D. A. Patterson 等的論文中定義了 RAID1 ~ RAID5 原始 RAID 等級, 1988 年以來又擴充套件了 RAID0 和 RAID6 。近年來,儲存廠商不斷推出諸如 RAID7 、 RAID10/01 、 RAID50 、 RAID53 、 RAID100 等 RAID 等級,但這些並無統一的標準。目前業界公認的標準是 RAID0 ~ RAID5 ,除 RAID2 外的四個等級被定為工業標準,而在實際應用領域中使用最多的 RAID 等級是 RAID0 、 RAID1 、 RAID3 、 RAID5 、 RAID6 和 RAID10。

  從實現角度看, RAID 主要分為軟 RAID、硬 RAID 以及軟硬混合 RAID 三種。軟 RAID 所有功能均有作業系統和 CPU 來完成,沒有獨立的 RAID 控制 / 處理晶片和 I/O 處理晶片,效率自然最低。硬 RAID 配備了專門的 RAID 控制 / 處理晶片和 I/O 處理晶片以及陣列緩衝,不佔用 CPU 資源,但成本很高。軟硬混合 RAID 具備 RAID 控制 / 處理晶片,但缺乏 I/O 處理晶片,需要 CPU 和驅動程式來完成,效能和成本 在軟 RAID 和硬 RAID 之間。

  RAID 每一個等級代表一種實現方法和技術,等級之間並無高低之分。在實際應用中,應當根據使用者的資料應用特點,綜合考慮可用性、效能和成本來選擇合適的 RAID 等級,以及具體的實現方式。

二、基本原理

  RAID ( Redundant Array of Independent Disks )即獨立磁碟冗餘陣列,通常簡稱為磁碟陣列。簡單地說, RAID 是由多個獨立的高效能磁碟驅動器組成的磁碟子系統,從而提供比單個磁碟更高的儲存效能和資料冗餘的技術。 RAID 是一類多磁碟管理技術,其向主機環境提供了成本適中、資料可靠性高的高效能儲存。 SNIA 對 RAID 的定義是 [2] :一種磁碟陣列,部分物理儲存空間用來記錄儲存在剩餘空間上的使用者資料的冗餘資訊。當其中某一個磁碟或訪問路徑發生故障時,冗餘資訊可用來重建使用者資料。磁碟條帶化雖然與 RAID 定義不符,通常還是稱為 RAID (即 RAID0 )。

  RAID 的初衷是為大型伺服器提供高階的儲存功能和冗餘的資料安全。在整個系統中, RAID 被看作是由兩個或更多磁碟組成的儲存空間,通過併發地在多個磁碟上讀寫資料來提高儲存系統的 I/O 效能。大多數 RAID 等級具有完備的資料校驗、糾正措施,從而提高系統的容錯性,甚至映象方式,大大增強系統的可靠性, Redundant 也由此而來。

  這裡要提一下 JBOD ( Just a Bunch of Disks )。最初 JBOD 用來表示一個沒有控制軟體提供協調控制的磁碟集合,這是 RAID 區別與 JBOD 的主要因素。目前 JBOD 常指磁碟櫃,而不論其是否提供 RAID 功能。

  RAID 的兩個關鍵目標是提高資料可靠性和 I/O 效能。磁碟陣列中,資料分散在多個磁碟中,然而對於計算機系統來說,就像一個單獨的磁碟。通過把相同資料同時寫入到多塊磁碟(典型地如映象),或者將計算的校驗資料寫入陣列中來獲得冗餘能力,當單塊磁碟出現故障時可以保證不會導致資料丟失。有些 RAID 等級允許更多地 磁碟同時發生故障,比如 RAID6 ,可以是兩塊磁碟同時損壞。在這樣的冗餘機制下,可以用新磁碟替換故障磁碟, RAID 會自動根據剩餘磁碟中的資料和校驗資料重建丟失的資料,保證資料一致性和完整性。資料分散儲存在 RAID 中的多個不同磁碟上,併發資料讀寫要大大優於單個磁碟,因此可以獲得更高的聚合 I/O 頻寬。當然,磁碟陣列會減少全體磁碟的總可用儲存空間,犧牲空間換取更高的可靠性和效能。比如, RAID1 儲存空間利用率僅有 50% , RAID5 會損失其中一個磁碟的儲存容量,空間利用率為 (n-1)/n 。

  磁碟陣列可以在部分磁碟(單塊或多塊,根據實現而論)損壞的情況下,仍能保證系統不中斷地連續執行。在重建故障磁碟資料至新磁碟的過程中,系統可以繼續正常執行,但是效能方面會有一定程度上的降低。一些磁碟陣列在新增或刪除磁碟時必須停機,而有些則支援熱交換 ( Hot Swapping ),允許不停機下替換磁碟驅動器。這種高階磁碟陣列主要用於要求高可能性的應用系統,系統不能停機或儘可能少的停機時間。一般來說, RAID 不可作為資料備份的替代方案,它對非磁碟故障等造成的資料丟失無能為力,比如病毒、人為破壞、意外刪除等情形。此時的資料丟失是相對作業系統、檔案系統、卷管理器或者應用系統來說的,對於 RAID 系統來身,資料都是完好的,沒有發生丟失。所以,資料備份、災 備等資料保護措施是非常必要的,與 RAID 相輔相成,保護資料在不同層次的安全性,防止發生資料丟失。

  RAID 中主要有三個關鍵概念和技術:映象( Mirroring )、資料條帶( Data Stripping )和資料校驗( Data parity ) [3][4][5] 。映象,將資料複製到多個磁碟,一方面可以提高可靠性,另一方面可併發從兩個或多個副本讀取資料來提高讀效能。顯而易見,映象的寫效能要稍低, 確保資料正確地寫到多個磁碟需要更多的時間消耗。資料條帶,將資料分片儲存在多個不同的磁碟,多個數據分片共同組成一個完整資料副本,這與映象的多個副本是不同的,它通常用於效能考慮。資料條帶具有更高的併發粒度,當訪問資料時,可以同時對位於不同磁碟上資料進行讀寫操作, 從而獲得非常可觀的 I/O 效能提升 。資料校驗,利用冗餘資料進行資料錯誤檢測和修復,冗餘資料通常採用海明碼、異或操作等演算法來計算獲得。利用校驗功能,可以很大程度上提高磁碟陣列的可靠性、魯棒性和容錯能力。不過,資料校驗需要從多處讀取資料並進行計算和對比,會影響系統性能。 不同等級的 RAID 採用一個或多個以上的三種技術,來獲得不同的資料可靠性、可用性和 I/O 效能。至於設計何種 RAID (甚至新的等級或型別)或採用何種模式的 RAID ,需要在深入理解系統需求的前提下進行合理選擇,綜合評估可靠性、效能和成本來進行折中的選擇。

  RAID 思想從提出後就廣泛被業界所接納,儲存工業界投入了大量的時間和財力來研究和開發相關產品。而且,隨著處理器、記憶體、計算機介面等技術的不斷髮展, RAID 不斷地發展和革新,在計算機儲存領域得到了廣泛的應用,從高端系統逐漸延伸到普通的中低端系統。 RAID 技術如此流行,源於其具有顯著的特徵和優勢,基本可以滿足大部分的資料儲存需求。總體說來, RAID 主要優勢有如下幾點:

(1) 大容量

  這是 RAID 的一個顯然優勢,它擴大了磁碟的容量,由多個磁碟組成的 RAID 系統具有海量的儲存空間。現在單個磁碟的容量就可以到 1TB 以上,這樣 RAID 的儲存容量就可以達到 PB 級,大多數的儲存需求都可以滿足。一般來說, RAID 可用容量要小於所有成員磁碟的總容量。不同等級的 RAID 演算法需要一定的冗餘開銷,具體容量開銷與採用演算法相關。如果已知 RAID 演算法和容量,可以計算出 RAID 的可用容量。通常, RAID 容量利用率在 50% ~ 90% 之間。

(2) 高效能

   RAID 的高效能受益於資料條帶化技術。單個磁碟的 I/O 效能受到介面、頻寬等計算機技術的限制,效能往往很有 限,容易成為系統性能的瓶頸。通過資料條帶化, RAID 將資料 I/O 分散到各個成員磁碟上,從而獲得比單個磁碟成倍增長的聚合 I/O 效能。

(3) 可靠性

  可用性和可靠性是 RAID 的另一個重要特徵。從理論上講,由多個磁碟組成的 RAID 系統在可靠性方面應該比單個磁碟要差。這裡有個隱含假定:單個磁碟故障將導致整個 RAID 不可用。 RAID 採用映象和資料校驗等資料冗餘技術,打破了這個假定。 映象是最為原始的冗餘技術,把某組磁碟驅動器上的資料完全複製到另一組磁碟驅動器上,保證總有資料副本可用。 比起映象 50% 的冗餘開銷 ,資料校驗要小很多,它利用校驗冗餘資訊對資料進行校驗和糾錯。 RAID 冗餘技術大幅提升資料可用性和可靠性,保證了若干磁碟出錯時,不 會導致資料的丟失,不影響系統的連續執行。

(4) 可管理性

  實際上, RAID 是一種虛擬化技術,它對多個物理磁碟驅動器虛擬成一個大容量的邏輯驅動器。對於外部主機系統來說, RAID 是一個單一的、快速可靠的大容量磁碟驅動器。這樣,使用者就可以在這個虛擬驅動器上來組織和儲存應用系統資料。 從使用者應用角度看,可使儲存系統簡單易用,管理也很便利。 由於 RAID 內部完成了大量的儲存管理工作,管理員只需要管理單個虛擬驅動器,可以節省大量的管理工作。 RAID 可以動態增減磁碟驅動器,可自動進行資料校驗和資料重建,這些都可以 大大簡化管理工作。

三、關鍵技術

3.1 映象

  映象是一種冗餘技術,為磁碟提供保護功能,防止磁碟發生故障而造成資料丟失。對於 RAID 而言,採用映象技術 典型地 將會同時在陣列中產生兩個完全相同的資料副本,分佈在兩個不同的磁碟驅動器組上。映象提供了完全的資料冗餘能力,當一個數據副本失效不可用時,外部系統仍可正常訪問另一副本,不會對應用系統執行和效能產生影響。而且,映象不需要額外的計算和校驗,故障修復非常快,直接複製即可。映象技術可以從多個副本進行併發讀取資料,提供更高的讀 I/O 效能,但不能並行寫資料,寫多個副本會會導致一定的 I/O 效能降低。

  映象技術提供了非常高的資料安全性,其代價也是非常昂貴的,需要至少雙倍的儲存空間。高成本限制了映象的廣泛應用,主要應用於至關重要的資料保護,這種場合下資料丟失會造成巨大的損失。另外,映象通過“ 拆分 ”能獲得特定時間點的上資料快照,從而可以實現一種備份視窗幾乎為零的資料備份技術。

3.2 資料條帶

  磁碟儲存的效能瓶頸在於磁頭尋道定位,它是一種慢速機械運動,無法與高速的 CPU 匹配。再者,單個磁碟驅動器效能存在物理極限, I/O 效能非常有限。 RAID 由多塊磁碟組成,資料條帶技術將資料以塊的方式分佈儲存在多個磁碟中,從而可以對資料進行併發處理。這樣寫入和讀取資料就可以在多個磁碟上同時進行,併發產生非常高的聚合 I/O ,有效提高了整體 I/O 效能,而且具有良好的線性擴充套件性。這對大容量資料尤其顯著,如果不分塊,資料只能按順序儲存在磁碟陣列的磁碟上,需要時再按順序讀取。而通過條帶技術,可獲得數倍與順序訪問的效能提升。

  資料條帶技術的分塊大小選擇非常關鍵。條帶粒度可以是一個位元組至幾 KB 大小,分塊越小,並行處理能力就越強,資料存取速度就越高,但同時就會增加塊存取的隨機性和塊定址時間。實際應用中,要根據資料特徵和需求來選擇合適的分塊大小,在資料存取隨機性和併發處理能力之間進行平衡,以爭取儘可能高的整體效能。
資料條帶是基於提高 I/O 效能而提出的,也就是說它只關注效能, 而對資料可靠性、可用性沒有任何改善。實際上,其中任何一個數據條帶損壞都會導致整個資料不可用,採用資料條帶技術反而增加了資料發生丟失的概念率。

3.3 資料校驗

  映象具有高安全性、高讀效能,但冗餘開銷太昂貴。資料條帶通過併發性來大幅提高效能,然而對資料安全性、可靠性未作考慮。資料校驗是一種冗餘技術,它用校驗資料來提供資料的安全,可以檢測資料錯誤,並在能力允許的前提下進行資料重構。相對映象,資料校驗大幅縮減了冗餘開銷,用較小的代價換取了極佳的資料完整性和可靠性。資料條帶技術提供高效能,資料校驗提供資料安全性, RAID 不同等級往往同時結合使用這兩種技術。

  採用資料校驗時, RAID 要在寫入資料同時進行校驗計算,並將得到的校驗資料儲存在 RAID 成員磁碟中。校驗資料可以集中儲存在某個磁碟或分散儲存在多個不同磁碟中,甚至校驗資料也可以分塊,不同 RAID 等級實現各不相同。當其中一部分資料出錯時,就可以對剩餘資料和校驗資料進行反校驗計算重建丟失的資料。校驗技術相對於映象技術的優勢在於節省大量開銷,但由於每次資料讀寫都要進行大量的校驗運算,對計算機的運算速度要求很高,必須使用硬體 RAID 控制器。在資料重建恢復方面,檢驗技術比映象技術複雜得多且慢得多。

  海明校驗碼和 異或校驗是兩種最為常用的 資料校驗演算法。海明校驗碼是由理查德.海明提出的,不僅能檢測錯誤,還能給出錯誤位置並自動糾正。海明校驗的基本思想是:將有效資訊按照某種規律分成若干組,對每一個組作奇偶測試並安排一個校驗位,從而能提供多位檢錯資訊,以定位錯誤點並糾正。可見海明校驗實質上是一種多重奇偶校驗。異或校驗通過異或邏輯運算產生,將一個有效資訊與一個給定的初始值進行異或運算,會得到校驗資訊。如果有效資訊出現錯誤,通過校驗資訊與初始值的異或運算能還原正確的有效資訊。

四、RAID 等級

4.1 JBOD

  JBOD ( Just a Bunch Of Disks )不是標準的 RAID 等級,它通常用來表示一個沒有控制軟體提供協調控制的磁碟集合。 JBOD 將多個物理磁碟串聯起來,提供一個巨大的邏輯磁碟。 JBOD (如圖 1 )的資料存放機制是由第一塊磁碟開始按順序往後儲存,當前磁碟儲存空間用完後,再依次往後面的磁碟儲存資料。 JBOD 儲存效能完全等同於單塊磁碟,而且也不提供資料安全保護。它只是簡單提供一種擴充套件儲存空間的機制, JBOD 可用儲存容量等於所有成員磁碟的儲存空間之和。目前 JBOD 常指磁碟櫃,而不論其是否提供 RAID 功能。

RAID
圖1 JBOD

4.2 標準 RAID 等級

  SNIA 、 Berkeley 等組織機構把 RAID0 、 RAID1 、 RAID2 、 RAID3 、 RAID4 、 RAID5 、 RAID6 七個等級定為標準的 RAID 等級,這也被業界和學術界所公認。標準等級是最基本的 RAID 配置集合,單獨或綜合利用資料條帶、映象和資料校驗技術。標準 RAID 可以組合,即 RAID 組合等級,滿足 對效能、安全性、可靠性要求更高的儲存應用需求。 [6][7][8][9][10][11]

1.RAID0

  RAID0 是一種簡單的、無資料校驗的資料條帶化技術。實際上不是一種真正的 RAID ,因為它並不提供任何形式的冗餘策略。 RAID0 將所在磁碟條帶化後組成大容量的儲存空間(如圖 2 所示),將資料分散儲存在所有磁碟中,以獨立訪問方式實現多塊磁碟的並讀訪問。由於可以併發執行 I/O 操作,匯流排頻寬得到充分利用。再加上不需要進行資料校驗,RAID0 的效能在所有 RAID 等級中是最高的。理論上講,一個由 n 塊磁碟組成的 RAID0 ,它的讀寫效能是單個磁碟效能的 n 倍,但由於匯流排頻寬等多種因素的限制,實際的效能提升低於理論值。

  RAID0 具有低成本、高讀寫效能、 100% 的高儲存空間利用率等優點,但是它不提供資料冗餘保護,一旦資料損壞,將無法恢復。 因此, RAID0 一般適用於對效能要求嚴格但對資料安全性和可靠性不高的應用,如視訊、音訊儲存、臨時資料快取空間等。

RAID
圖2 RAID0 :無冗錯的資料條帶

2.RAID1

  RAID1 稱為映象,它將資料完全一致地分別寫到工作磁碟和映象 磁碟,它的磁碟空間利用率為 50% 。 RAID1 在資料寫入時,響應時間會有所影響,但是讀資料的時候沒有影響。 RAID1 提供了最佳的資料保護,一旦工作磁碟發生故障,系統自動從映象磁碟讀取資料,不會影響使用者工作。工作原理如圖 3 所示。

  RAID1 與 RAID0 剛好相反,是為了增強資料安全性使兩塊 磁碟資料呈現完全映象,從而達到安全性好、技術簡單、管理方便。 RAID1 擁有完全容錯的能力,但實現成本高。 RAID1 應用於對順序讀寫效能要求高以及對資料保護極為重視的應用,如對郵件系統的資料保護。

RAID
圖3 RAID1 :無校驗的相互映象

3.RAID2

  RAID2 稱為糾錯海明碼磁碟陣列,其設計思想是利用海明碼實現資料校驗冗餘。海明碼是一種在原始資料中加入若干校驗碼來進行錯誤檢測和糾正的編碼技術,其中第 2n 位( 1, 2, 4, 8, … )是校驗碼,其他位置是資料碼。因此在 RAID2 中,資料按位儲存,每塊磁碟儲存一位資料編碼,磁碟數量取決於所設定的資料儲存寬度,可由使用者設定。圖 4 所示的為資料寬度為 4 的 RAID2 ,它需要 4 塊資料磁碟和 3 塊校驗磁碟。如果是 64 位資料寬度,則需要 64 塊 資料磁碟和 7 塊校驗磁碟。可見, RAID2 的資料寬度越大,儲存空間利用率越高,但同時需要的磁碟數量也越多。

  海明碼自身具備糾錯能力,因此 RAID2 可以在資料發生錯誤的情況下對糾正錯誤,保證資料的安全性。它的資料傳輸效能相當高,設計複雜性要低於後面介紹的 RAID3 、 RAID4 和 RAID5 。

  但是,海明碼的資料冗餘開銷太大,而且 RAID2 的資料輸出效能受陣列中最慢磁碟驅動器的限制。再者,海明碼是按位運算, RAID2 資料重建非常耗時。由於這些顯著的缺陷,再加上大部分磁碟驅動器本身都具備了糾錯功能,因此 RAID2 在實際中很少應用,沒有形成商業產品,目前主流儲存磁碟陣列均不提供 RAID2 支援。

RAID
圖 4 RAID2 :海明碼校驗

4.RAID3

  RAID3 (圖 5 )是使用專用校驗盤的並行訪問陣列,它採用一個專用的磁碟作為校驗盤,其餘磁碟作為資料盤,資料按位可位元組的方式交叉儲存到各個資料盤中。RAID3 至少需要三塊磁碟,不同磁碟上同一帶區的資料作 XOR 校驗,校驗值寫入校驗盤中。 RAID3 完好時讀效能與 RAID0 完全一致,並行從多個磁碟條帶讀取資料,效能非常高,同時還提供了資料容錯能力。向 RAID3 寫入資料時,必須計算與所有同條帶的校驗值,並將新校驗值寫入校驗盤中。一次寫操作包含了寫資料塊、讀取同條帶的資料塊、計算校驗值、寫入校驗值等多個操作,系統開銷非常大,效能較低。

  如果 RAID3 中某一磁碟出現故障,不會影響資料讀取,可以藉助校驗資料和其他完好資料來重建資料。假如所要讀取的資料塊正好位於失效磁碟,則系統需要讀取所有同一條帶的資料塊,並根據校驗值重建丟失的資料,系統性能將受到影響。當故障磁碟被更換後,系統按相同的方式重建故障盤中的資料至新磁碟。

  RAID3 只需要一個校驗盤,陣列的儲存空間利用率高,再加上並行訪問的特徵,能夠為高頻寬的大量讀寫提供高效能,適用大容量資料的順序訪問應用,如影像處理、流媒體服務等。目前, RAID5 演算法不斷改進,在大資料量讀取時能夠模擬 RAID3 ,而且 RAID3 在出現壞盤時效能會大幅下降,因此常使用 RAID5 替代 RAID3 來執行具有持續性、高頻寬、大量讀寫特徵的應用。

RAID
圖5 RAID3 :帶有專用位校驗的資料條帶

5.RAID4

  RAID4 與 RAID3 的原理大致相同,區別在於條帶化的方式不同。 RAID4 (圖 6 )按照 塊的方式來組織資料,寫操作只涉及當前資料盤和校驗盤兩個盤,多個 I/O 請求可以同時得到處理,提高了系統性能。 RAID4 按塊儲存可以保證單塊的完整性,可以避免受到其他磁碟上同條帶產生的不利影響。

  RAID4 在不同磁碟上的同級資料塊同樣使用 XOR 校驗,結果儲存在校驗盤中。寫入資料時, RAID4 按這種方式把各磁碟上的同級資料的校驗值寫入校驗 盤,讀取時進行即時校驗。因此,當某塊磁碟的資料塊損壞, RAID4 可以通過校驗值以及其他磁碟上的同級資料塊進行資料重建。

  RAID4 提供了 非常好的讀效能,但單一的校驗盤往往成為系統性能的瓶頸。對於寫操作, RAID4 只能一個磁碟一個磁碟地寫,並且還要寫入校驗資料,因此寫效能比較差。而且隨著成員磁碟數量的增加,校驗盤的系統瓶頸將更加突出。正是如上這些限制和不足, RAID4 在實際應用中很少見,主流儲存產品也很少使用 RAID4 保護。

RAID
圖6 RAID4 :帶有專用塊級校驗的資料條帶

6.RAID5

   RAID5 應該是目前最常見的 RAID 等級,它的原理與 RAID4 相似,區別在於校驗資料分佈在陣列中的所有磁碟上,而沒有采用專門的校驗磁碟。對於資料和校驗資料,它們的寫操作可以同時發生在完全不同的磁碟上。因此, RAID5 不存在 RAID4 中的併發寫操作時的校驗盤效能瓶頸問題。另外, RAID5 還具備很好的擴充套件性。當陣列磁碟 數量增加時,並行操作量的能力也隨之增長,可比 RAID4 支援更多的磁碟,從而擁有更高的容量以及更高的效能。

  RAID5 (圖 7)的磁碟上同時儲存資料和校驗資料,資料塊和對應的校驗資訊存儲存在不同的磁碟上,當一個數據盤損壞時,系統可以根據同一條帶的其他資料塊和對應的校驗資料來重建損壞的資料。與其他 RAID 等級一樣,重建資料時, RAID5 的效能會受到較大的影響。

  RAID5 兼顧儲存效能、資料安全和儲存成本等各方面因素,它可以理解為 RAID0 和 RAID1 的折中方案,是目前綜合性能最佳的資料保護解決方案。 RAID5 基本上可以滿足大部分的儲存應用需求,資料中心大多采用它作為應用資料的保護方案。

RAID
圖7 RAID5 :帶分散校驗的資料條帶

7.RAID6

  前面所述的各個 RAID 等級都只能保護因單個磁碟失效而造成的資料丟失。如果兩個磁碟同時發生故障,資料將無法恢復。 RAID6 (如圖 8 )引入雙重校驗的概念,它可以保護陣列中同時出現兩個磁碟失效時,陣列仍能夠繼續工作,不會發生資料丟失。 RAID6 等級是在 RAID5 的基礎上為了進一步增強資料保護而設計的一種 RAID 方式,它可以看作是一種擴充套件的 RAID5 等級。

  RAID6 不僅要支援資料的恢復,還要支援校驗資料的恢復,因此實現代價很高,控制器的設計也比其他等級更復雜、更昂貴。 RAID6 思想最常見的實現方式是採用兩個獨立的校驗演算法,假設稱為 P 和 Q ,校驗資料可以分別儲存在兩個不同的校驗盤上,或者分散儲存在所有成員磁碟中。當兩個磁碟同時失效時,即可通過求解兩元方程來重建兩個磁碟上的資料。

  RAID6 具有快速的讀取效能、更高的容錯能力。但是,它的成本要高於 RAID5 許多,寫效能也較差,並有設計和實施非常複雜。因此, RAID6 很少得到實際應用,主要用於對資料安全等級要求非常高的場合。它一般是替代 RAID10 方案的經濟性選擇。

RAID
圖8 RAID6 :帶雙重分散校驗的資料條帶

4.3 RAID 組合等級

  標準 RAID 等級各有優勢和不足。自然地,我們想到把多個 RAID 等級組合起來,實現優勢互補,彌補相互的不足,從而達到在效能、資料安全性等指標上更高的 RAID 系統。目前在業界和學術研究中提到的 RAID 組合等級主要有 RAID00 、 RAID01 、 RAID10 、 RAID100 、 RAID30 、 RAID50 、 RAID53 、 RAID60 ,但實際得到較為廣泛應用的只有 RAID01 和 RAID10 兩個等級。當然,組合等級的實現成本一般都非常昂貴,只是在 少數特定場合應用。 [12]

1.RAID00

  簡單地說, RAID00 是由多個成員 RAID0 組成的高階 RAID0 。它與 RAID0 的區別在於, RAID0 陣列替換了原先的成員磁碟。可以把 RAID00 理解為兩層條帶化結構的磁碟陣列,即對條帶再進行條帶化。這種陣列可以提供更大的儲存容量、更高的 I/O 效能和更好的 I/O 負均衡。

2. RAID01 和 RAID10

  一些文獻把這兩種 RAID 等級看作是等同的,本文認為是不同的。 RAID01 是先做條帶化再作映象,本質是對物理磁碟實現映象;而 RAID10 是先做映象再作條帶化,是對虛擬磁碟實現映象。相同的配置下,通常 RAID01 比 RAID10 具有更好的容錯能力,原理如圖 9 所示。

  RAID01 兼備了 RAID0 和 RAID1 的優點,它先用兩塊磁碟建立映象,然後再在映象內部做條帶化。 RAID01 的資料將同時寫入到兩個磁碟陣列中,如果其中一個陣列損壞,仍可繼續工作,保證資料安全性的同時又提高了效能。 RAID01 和 RAID10 內部都含有 RAID1 模式,因此整體磁碟利用率均僅為 50% 。

RAID
RAID
圖 9 典型的 RAID01 (上)和 RAID10 (下)模型

3.RAID100

  通常看作 RAID 1+0+0 ,有時也稱為 RAID 10+0 ,即條帶化的 RAID10 。原理如圖 10 所示。 RAID100 的缺陷與 RAID10 相同,任意一個 RAID1 損壞一個磁碟不會發生資料丟失,但是剩下的磁碟存在單點故障的危險。最頂層的 RAID0 ,即條帶化任務,通常由軟體層來完成。

  RAID100 突破了單個 RAID 控制器對物理磁碟數量的限制,可以獲得更高的 I/O 負載均衡, I/O 壓力分散到更多的磁碟上,進一步提高隨機讀效能,並有效降低熱點盤故障風險。因此, RAID100 通常是大資料庫的最佳選擇。

RAID
圖10 典型的 RAID100 模型

4.RAID30 ( RAID53 )、 RAID50 和 RAID60

  這三種 RAID 等級與 RAID00 原理基本相同,區別在於成員 “ 磁碟 ” 換成了 RAID3 、 RAID5 和 RAID6 ,分別如圖 11 、 12 、 13 所示。其中, RAID30 通常又被稱為 RAID53[13] 。其實,可把這些等級 RAID 統稱為 RAID X0 等級, X 可為標準 RAID 等級,甚至組合等級(如 RAID100 )。利用多層 RAID 配置,充分利用 RAID X 與 RAID0 的優點,從而獲得在儲存容量、資料安全性和 I/O 負載均衡等方面的大幅效能提升。

RAID
圖11 典型的 RAID50 模型

RAID
圖12 典型的 RAID50 模型

RAID
圖13 典型的 RAID60 模型

4.4 非標準 RAID 等級

  雖然標準 RAID 和組合 RAID 在具體實現上存在一定程度的不同,但與標準規範是保持一致或相容的。然而除此之外,一些儲存廠商還實現了非標準的 RAID 等級,往往都是公司私有的產品。這裡簡單介紹幾個非標準 RAID 等級。 [14]

1.RAID7

  RAID7 的全稱是最優化的非同步高 I/O 速率和高資料傳輸率,它與其他 RAID 等級有著明顯區別。它不僅僅是一種技術,它還是一個獨立儲存計算機,自身帶的作業系統和管理工具,完全可以獨立執行。

  RAID7 的儲存計算機作業系統是一套實時事件驅動作業系統,其主要用來進行系統初始化和安排 RAID7 磁碟陣列的所有資料傳輸,並把它們轉換到相應的物理儲存驅動器上。 RAID7 通過自身系統中的專用控制板來控制讀寫速度,儲存計算機作業系統可使主機 I/O 傳遞效能達到最佳。如果一個磁碟出現故障, RAID7 還能夠自動執行恢復操作,並可管理備份磁碟的重建過程。

  RAID7 突破了以往 RAID 標準的技術架構,採用了非同步訪問,極大地減輕了資料寫瓶頸,提高了 I/O 速度。 RAID7 系統內建實時作業系統還可自動對主機發送過來的讀寫指令進行優化處理,以智慧化方式將可能被讀取的資料預先讀入快速快取中,從而大大減少了磁頭的轉動次數,提高儲存系統的 I/O 速度。

  RAID7 可幫助使用者有效地管理日益龐大的資料儲存系統,並使系統的執行效率大大提高,滿足不同使用者的儲存需求。但是, RAID7 的成本比其他 RAID 等級要高許多。另外, RAID7 已被某公司註冊為商標,目前僅有一家公司提供 RAID7 的產品,使用者沒有更多的選擇。技術封閉,缺乏主流專業儲存廠商的參與和研發嚴重製約了 RAID7 的發展。

2.RAID-DP

  按照 SNIA 最新的 RAID6 定義 [15] ,雙重資料校驗的磁碟陣列都可歸為 RAID6 等級。 NetApp 公司按照 RAID6 的定義實現了 RAID-DP ,使用雙重的資料校驗來保護資料,可以保證兩塊磁碟同時損壞的情況下不發生資料丟失。與該公司的 RAID4 實現對比,傳統的 RAID6 實現會致使系統性能損失 30% 左右,而 RAID-DP 的效能下降低於 2% 。上層檔案系統的請求首先寫入後端的 NVRAM 中,確保即使在 掉電的情況下也不會有任何資料丟失。因此,資料塊不會立即更新,當執行新來的寫操作,會對寫操作進行聚集,然後儲存控制器嘗試一次性寫入包括校驗資料在內的整個資料條帶。 RAID-DP 提供了比 RAID10 更好的資料保護,效能卻不低於 RAID10 。對於相同大小的 RAID 組,在大多數情況下, RAID-DP 沒有受到傳統 RAID6 即時更新資料塊的挑戰,並提供更多的磁碟進行讀寫。它甚至允許磁碟韌體實時更新而不發生任何中斷。

3.RAID1.5

  這是 HighPoint 公司的 RAID 產品,有時也被錯誤地稱為 RAID15 。 RAID1.5 僅使用兩個磁碟驅動器同時進行資料條帶化和映象,資料可以同時從兩塊磁碟進行讀取。這其中的大部分工作都由硬體來完成,而非驅動程式。 Linux 、 Solaris 等作業系統實現的 RAID1 也可以實現同時從兩塊磁碟進行讀取資料,因此 RAID1.5 並不優於傳統的 RAID1。

4. RAID5E 、 RAID5EE 和 RAID6E

  這種概念首次在 IBM ServerRAID 中被提出, E 是 Enhanced 的首字母。它們分別是對 RAID5 和 RAID6 的增強,增加了熱冗餘磁碟驅動器,冗餘磁碟與其他磁碟一塊進行資料塊編排。這種設計使得 I/O 可以分散到包括熱冗餘在內的所在磁碟,從而減小單塊磁碟的 I/O 頻寬, 提供更高的效能。然而,熱冗餘磁碟不能夠被多個陣列共享。

  在實現中,實際上不存在專用的熱冗餘磁碟,就像 RAID5 和 RAID6 中沒有專用的校驗磁碟一樣,所有的冗餘資料塊分佈在所的成員磁碟中。例如,一個 10 塊磁碟的 RAID5E ,包括 80% 資料塊、 10% 的冗餘資料塊和 10% 的校驗資料。對於 RAID5E 和 RAID6E ,冗餘資料塊位於陣列尾部,而 RAID5EE 則分佈在整個 RAID 中。如果 RAID5E/5EE 中發生一塊磁碟損壞,則系統會自動降級並重建至標準的 RAID5 。這一過程中, I/O 操作非常密集,並且需要花費大量時間,從幾個小時至甚至幾天,根據陣列的具體配置而異。當損壞磁碟被替換後,系統則又會自動升級並重建至原先的 RAID5E/5EE ,同時非常耗時。在上面的重建過程中,資料沒有冗餘保護。由於系統升級和降級時, I/O 活動密集且所需時間過長,因此實際應用中成員磁碟資料限制在 4~8 塊。一旦超過 8 塊磁碟,由於損壞磁碟的重建耗時和重建中發生第二塊磁碟損壞造成的資料丟失, RAID5E/5EE 所獲得的效能提升和其他獲益都將嚴重降低。

5.RAID S (Parity RAID)

   RAID S 是 EMC 公司的 Symmetrix 儲存系統所使用的條帶化校驗 RAID 。該系統中,每個卷位於單獨的物理磁碟上,多個卷組合進行資料校驗。 EMC 最早引入了 RAID S 概念,後來改名為 Parity RAID 並應用於 Symmetrix DMX 平臺。 EMC 現在也為 Symmetrix DMX 提供標準的 RAID5 , RAID S 已經不再 EMC 產品中使用。

6.Intel Matrix RAID

   Matrix RAID 是 Intel ICH6R 和後繼的南橋晶片的一個重要特徵,可以通過 RAID BIOS 進行訪問。它使用兩塊磁碟或者控制器能支援的最多磁碟,它的顯著特徵是允許 RAID0 、 1 、 5 、 10 多種資料卷混合共存,每塊磁碟的指定部分分配給相應的 RAID 卷。 Matrix RAID 主要用於改善效能和資料完整性,實際應用中可以將作業系統應用於小的 RAID0 ,而大的 RAID1 儲存關鍵資料以及使用者資料。海量的流媒體資料容易發生資料丟失,可以考慮使用這種 RAID 。 linux 的 MD RAID 也可以實現類似的功能。

7.Linux MD RAID 10

  RAID 10 是 Linux 核心所支援的軟 RAID 等級之一,它還支援 RAID0、1、3、4、5、6 等級別。軟 RAID 驅動程式通常通過構造典型的 RAID1+0 陣開來實現 RAID10 , 2.6.9 以後的核心也可作為單獨的級別來實現。

  MD RAID10 支援重複資料塊的近佈局和遠佈局兩種模式。近佈局與標準 RAID10 相同,映象資料塊相鄰儲存。對於 n 重映象的 k 路條帶,不要求 k 為 n 的 整倍數。兩重映象的2、3、4路條帶的 MD RAID10 分佈相當於 RAID1 、 RAID-1E 和 RAID10 。遠佈局模式下,所有磁碟被劃分為 f ( f= 映象數)個數據儲存區,重複資料塊相對於原始資料塊具有一個磁碟和若干依偏移的距離,即儲存在下一個磁碟對應儲存區的偏移位置。這種設計能夠提高映象陣列的條帶效能,有效提高順序和隨機讀效能,但對寫效能沒有顯著提升。許多應該通常具有讀密集而寫稀疏的特點, RAID10 適合此類資料應用。需要指出的是,近佈局和遠佈局兩種模式可以同時使用,這種情況下將有 n * f 個數據副本。

8. IBM ServerRAID 1E

   IBM 公司的 ServerRAID 陣列卡系列支援任意數量驅動器上的兩路映象,多個磁碟對資料塊進行輪轉映象。這種配置能夠對不相鄰磁碟驅動器發生的損壞進行容錯,其他的儲存系統也支援這種模式,比如 SUN 公司的 StorEdge T3 。

9.RAID-K

   Kaleidescape 公司實現了一種稱為 RAID-K[16] 的 RAID 型別。 RAID-K 與 RAID4 相似,但不對檔案資料進行塊級的條帶化處理,它企圖將整個電影或音樂集合完整地儲存在單個磁碟上。另外,它的冗餘校驗資訊可儲存在多個磁碟上,從而適應由多個容量不同的磁碟所組成的邏輯磁碟。而且,冗餘資料包含比校驗資訊更多的資料,用於獲取更高的容錯性。這些特徵可以為影像、音樂提供更好的效能,增加資料儲存的安全性。 RAID-K 還可以允許使用者以增量方式擴充儲存容量,能夠增加容量更大的磁碟,甚至它還可以增加包含資料(僅限影像和音樂)的磁碟。 RAID-K 會自動把這些磁碟組建成 RAID-K 陣列和 Kaleidescape 檔案系統。

10. RAID-Z

   RAID-Z 是整合在 SUN 公司 ZFS 檔案系統中的一種與 RAID5 相似的 RAID 模式。利用寫時複製策略, RAID-Z 避免了 RAID5 的寫操作困境(即更新資料同時需要更新校驗資料),它不用新資料覆蓋舊資料,而是把新資料寫到新位置並自動更新資料指標。對於小的寫操作,僅僅執行完全的寫條帶操作,有效避免 “ 讀取-更改-寫回 ” 的操作需求。另外,還可以直接對小寫操作使用映象替換校驗進行保護,因為檔案系統瞭解下層儲存結構,可以在必要時分配 額外儲存空間。 ZFS 還實現了 RAID-Z2 ,提供類似與 RAID6 的雙重校驗保護能力,可以保證不塊磁碟發生損壞而不發生資料丟失。根據 2009 年 6 月的更新, ZFS 加入了三重校驗 RAID 支援,或許稱為 RAID-Z3 。

五、實現方式

  通常計算機功能既可以由硬體來實現,也可以由軟體來實現。對於 RAID 系統而言,自然也不例外,它可以採用軟體方式實現,也可以採用硬體方式實現,或者採用軟硬結合的方式實現。 [3][8]

5.1 軟 RAID

  軟 RAID 沒有專用的控制晶片和 I/O 晶片,完全由作業系統和 CPU 來實現所的 RAID 的功能。現代作業系統基本上都提供軟 RAID 支援,通過在磁碟裝置驅動程式上新增一個軟體層,提供一個物理驅動器與邏輯驅動器之間的抽象層。目前,作業系統支援的最常見的 RAID 等級有 RAID0 、 RAID1 、 RAID10 、 RAID01 和 RAID5 等。比如, Windows Server 支援 RAID0 、 RAID1 和 RAID5 三種等級, Linux 支援 RAID0 、 RAID1 、 RAID4 、 RAID5 、 RAID6 等, Mac OS X Server 、 FreeBSD 、 NetBSD 、 OpenBSD 、 Solaris 等作業系統也都支援相應的 RAID 等級。

  軟 RAID 的配置管理和資料恢復都比較簡單,但是 RAID 所有任務的處理完全由 CPU 來完成,如計算校驗值,所以執行效率比較低下,這種方式需要消耗大量的運算資源,支援 RAID 模式 較少,很難廣泛應用。

  軟 RAID 由作業系統來實現,因此係統所在分割槽不能作為 RAID 的邏輯成員磁碟,軟 RAID 不能保護系統盤 D 。對於部分作業系統而言, RAID 的配置資訊儲存在系統資訊中,而不是單獨以檔案形式儲存在磁碟上。這樣當系統意外崩潰而需要重新安裝時, RAID 資訊就會丟失。另外,磁碟的容錯技術並不等於完全支援線上更換、熱插拔或熱交換,能否支援錯誤磁碟的熱交換與作業系統實現相關,有的作業系統熱交換。

5.2 硬 RAID

  硬 RAID 擁有自己的 RAID 控制處理與 I/O 處理晶片,甚至還有陣列緩衝,對 CPU 的佔用率和整體效能是三類實現中最優的,但實現成本也最高的。硬 RAID 通常都支援熱交換技術,在系統執行下更換故障磁碟。
  
  硬 RAID 包含 RAID 卡和主機板上整合的 RAID 晶片, 伺服器平臺多采用 RAID 卡。 RAID 卡由 RAID 核心處理晶片( RAID 卡上的 CPU )、埠、快取和電池 4 部分組成。其中,埠是指 RAID 卡支援的磁碟介面型別,如 IDE/ATA 、 SCSI 、 SATA 、 SAS 、 FC 等介面。

5.3 軟硬混合 RAID

  軟 RAID 效能欠佳,而且不能保護系統分割槽,因此很難應用於桌面系統。而硬 RAID 成本非常昂貴,不同 RAID 相互獨立,不具互操作性。因此,人們採取軟體與硬體結合的方式來實現 RAID ,從而獲得在效能和成本上的一個折中,即較高的價效比。

  這種 RAID 雖然採用了處理控制晶片,但是為了節省成本,晶片往往比較廉價且處理能力較弱, RAID 的任務處理大部分還是通過韌體驅動程式由 CPU 來完成。

六、RAID 應用選擇

  RAID 等級的選擇主要有三個因素,即資料可用性、 I/O 效能和成本。 目前,在實際應用中常見的主流 RAID 等級是 RAID0 , RAID1 , RAID3 , RAID5 , RAID6 和 RAID10 ,它們之間的技術對比情況如表 1 所示。如果不要求可用性,選擇 RAID0 以獲得高效能。如果可用性和效能是重要的,而成本不是一個主要因素,則根據磁碟數量選擇 RAID1 。如果可用性,成本和效能都同樣重要,則根據一般的資料傳輸和磁碟數量選擇 RAID3 或 RAID5 。在實際應用中,應當根據使用者的資料應用特點和具體情況,綜合考慮可用性、效能和成本來選擇合適的 RAID 等級。 [10]

表1 主流 RAID 等級技術對比

RAID 等級 RAID0 RAID1 RAID3 RAID5 RAID6 RAID10
別名 條帶 映象 專用奇偶校驗條帶 分佈奇偶校驗條帶 雙重奇偶校驗條帶 映象加條帶
容錯性
冗餘型別
熱備份選擇
讀效能
隨機寫效能 一般 一般
連續寫效能 一般
需要磁碟數 n≥1 2n (n≥1) n≥3 n≥3 n≥4 2n(n≥2)≥4
可用容量  全部 50% (n-1)/n (n-1)/n (n-2)/n 50%

  近年來,企業的資訊化水平不斷髮展,資料已經取代計算成為了資訊計算的中心,資訊資料的安全性就顯得尤為至關重要。隨著儲存技術的持續發展, RAID 技術在成本、效能、資料安全性等諸多方面都將優於其他儲存技術,例如磁帶庫、光碟庫等,大多數企業資料中心首選 RAID 作為儲存系統。當前儲存行業的知名儲存廠商均提供全線的磁碟陣列產品,包括面向個人和中小企業的入門級的低端 RAID 產品,面向大中型企業的中高階 RAID 產品。這些儲存企業包括了國內外的主流儲存廠商,如 EMC 、 IBM 、 HP 、 SUN 、 NetApp 、 NEC 、 HDS 、 H3C 、 Infortrend 、華賽等。另外,這些廠商在提供儲存硬體系統的同時,還往往提供非常全面的軟體系統,這也是使用者採購產品的一個主要參考因素。

  不同的儲存廠商的產品在技術、成本、效能、管理、服務等方面各有優勢和不足。使用者選擇 RAID 的原則是:在成本預算內,滿足資料儲存需求的前提下,選擇最優的儲存廠商解決方案。因此,首先使用者需要對儲存需求作深入的調研和分析,並給出成本預算,然後對眾多儲存廠商的解決方案進行分析和對比,最後選擇出一個綜合最優的儲存方案。其中,儲存產品的擴充套件性和儲存廠家的售後服務需要重點考察,儲存需求(如容量、效能)可能會不斷升級,儲存產品發生故障後的維修和支援保障,這些都要未雨先繆。

七、總結與展望

  回顧 RAID 發展歷史,從首次提出概念至今已有二十多年。在此期間,整個社會資訊化水平不斷提高,資料呈現爆炸式增長趨勢,資料取代計算成為資訊計算的中心。這促使人們對資料愈加重視,不斷追求海量儲存容量、高效能、高 安全性、高可用性、可擴充套件性、可管理性等等。 RAID 技術在這樣強大的儲存需求推動下不斷髮展進步,時至今日技術已經非常成熟,在各種資料儲存系統中得到了十分廣泛的應用。
  
  正是由於技術發展的成熟, RAID 技術的未來發展已經不被廣泛看好,甚至預言在不久的將來會停止發展,稱之為 “ 殭屍技術 ” ,即雖然宣佈死亡,但在很長一段時間內仍會繼續發揮巨大的價值。
  
  然而,當前的 RAID 技術仍然存在諸多不足,各種 RAID 模式都存在自身的缺陷,主要集中在讀寫效能、實現成本、恢復時間視窗、多磁碟損壞等方面。因此, RAID 技術顯然還存在很大的提升空間,具有很大的發展潛力。近年來新出現的 RAID 模式以及學術研究顯示了其未來的發展趨勢,包括分散式校驗、多重校驗、混合 RAID 模式、水平和垂直條帶、基於固態記憶體 RAID 、網路校驗等等。特別指出的是,多核 CPU 和 GPU 是當前的熱點技術,它們大幅提升了主機的可用計算資源,這可以解決 RAID 對計算資源的消耗問題,軟 RAID 很可能將重新成為熱點。另外,儲存硬體效能的提升、儲存虛擬化技術、重複資料刪除技術以及其他儲存技術都會極大地推動 RAID 技術的進一步創新和發展。