天天看點

【大資料】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

  海明碼自身具備糾錯能力,是以 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介紹

圖 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 技術在成本、性能、資料安全性等諸多方面都将優于其他存儲技術,例如錄音帶庫、CD光牒庫等,大多數企業資料中心首選 RAID 作為存儲系統。目前存儲行業的知名存儲廠商均提供全線的磁盤陣列産品,包括面向個人和中小企業的入門級的低端 RAID 産品,面向大中型企業的中高端 RAID 産品。這些存儲企業包括了國内外的主流存儲廠商,如 EMC 、 IBM 、 HP 、 SUN 、 NetApp 、 NEC 、 HDS 、 ​​H3C​​ 、 Infortrend 、華賽等。另外,這些廠商在提供存儲硬體系統的同時,還往往提供非常全面的軟體系統,這也是使用者采購産品的一個主要參考因素。

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

七、總結與展望