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 技術的進一步創新和發展。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章