RAID技術

定義

  • RAID(Redundant Array of Independent Disks,獨立磁盤冗余陣列),它的基本思想就是把多個相對便宜的硬盤組合起來,成為一個硬盤陣列組,使得性能達到甚至超過一個價格昂貴、容量巨大的硬盤

  • RAID通常被用在服務器上,使用完全相同的硬盤組成一個邏輯扇區,因此操作系統只會把它當做一個硬盤

  • RAID分為不同的等級,各個不同的等級均在數據可靠性讀寫性能上做了不同的權衡。在實際應用中,可以依據自己的實際需求選擇不同的RAID方案

支撐技術

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

RAID 中主要有三個關鍵概念和技術:鏡像( Mirroring )、數據條帶( Data Stripping )和數據校驗( Data parity )。鏡像,將數據復制到多個磁盤,一方面可以提高可靠性,另一方面可并發從兩個或多個副本讀取數據來提高讀性能。顯而易見,鏡像的寫性能要稍低, 確保數據正確地寫到多個磁盤需要更多的時間消耗。數據條帶,數據校驗,利用冗余數據進行數據錯誤檢測和修復,冗余數據通常采用海明碼、異或操作等算法來計算獲得。利用校驗功能,可以很大程度上提高磁盤陣列的可靠性、魯棒性和容錯能力。不過,數據校驗需要從多處讀取數據并進行計算和對比,會影響系統性能。 不同等級的 RAID 采用一個或多個以上的三種技術,來獲得不同的數據可靠性、可用性和 I/O 性能。至于設計何種 RAID (甚至新的等級或類型)或采用何種模式的 RAID ,需要在深入理解系統需求的前提下進行合理選擇,綜合評估可靠性、性能和成本來進行折中的選擇。

數據條帶

數據條帶思想類似于分布式存儲,將一個文件數據存儲于不同磁盤中。譬如:文件大小為100M的A,[0-19M]的內容寫入磁盤1,[20-40M]的內容寫入磁盤2,[40-60M]的內容寫入磁盤3,[60-80M]的內容寫入磁盤4,[80-100M]的內容寫入磁盤5。這種方式可以提升性能,但是它也存在一個問題:數據不安全,因為將數據分不到不同的磁盤上,存在單點故障。

image.png

鏡像

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

數據校驗

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

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

海明校驗碼異或校驗是兩種最為常用的數據校驗算法。海明校驗碼不僅能檢測錯誤,還能給出錯誤位置并自動糾正。海明校驗的基本思想是:將有效信息按照某種規律分成若干組,對每一個組作奇偶測試并安排一個校驗位,從而能提供多位檢錯信息,以定位錯誤點并糾正??梢姾C餍r瀸嵸|上是一種多重奇偶校驗。異或校驗通過異或邏輯運算產生,將一個有效信息與一個給定的初始值進行異或運算,會得到校驗信息。如果有效信息出現錯誤,通過校驗信息與初始值的異或運算能還原正確的有效信息。

RAID等級

標準的RAID等級包含RAID0 、 RAID1 、 RAID2 、 RAID3 、 RAID4 、 RAID5 、 RAID6 七個等級,另外,也可以對單個RAID等級進行組合,形成RAID 01 、RAID 10 、RAID 50等組合等級。


image.png

RAID 0

RAID 0采用的就是數據條帶技術,它的讀寫速率為單個磁盤的N倍(N為組成RAID0的磁盤個數),但是卻沒有數據冗余,單個磁盤的損失會導致數據的不可修復。數據無校驗。RAID0由于存在單點,所以不安全。


image.png

RAID 1

RAID 1采用的就是鏡像技術,它的寫入速度會比較慢,但讀取速度會比較快。讀取速度可以接近所有磁盤吞吐量的總和,寫入速度受限于最慢的磁盤。沒有校驗數據。RAID1由于是數據鏡像,所以浪費了一張磁盤,并且寫性能不好,讀性能提升了。


image.png

RAID 2

RAID2 稱為糾錯海明碼磁盤陣列,其設計思想是利用海明碼實現數據校驗冗余。海明碼自身具備糾錯能力,因此 RAID2 可以在數據發生錯誤的情況下對糾正錯誤,保證數據的安全性。它的數據傳輸性能相當高,設計復雜性要低于后面介紹的 RAID3 、 RAID4 和 RAID5 。

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


image.png

RAID 3

RAID 3采用一個專用的磁盤作為校驗盤,其余磁盤作為數據盤,數據按位可字節的方式交叉存儲到各個數據盤中。RAID3 至少需要三塊磁盤,不同磁盤上同一帶區的數據作 XOR 校驗,校驗值寫入校驗盤中。向 RAID3 寫入數據時,必須計算與所有同條帶的校驗值,并將新校驗值寫入校驗盤中。一次寫操作包含了寫數據塊、讀取同條帶的數據塊、計算校驗值、寫入校驗值等多個操作,系統開銷非常大,性能較低。如果 RAID3 中某一磁盤出現故障,不會影響數據讀取,可以借助校驗數據和其他完好數據來重建數據。而且RAID3 只需要一個校驗盤,陣列的存儲空間利用率高,再加上并行訪問的特征,能夠為高帶寬的大量讀寫提供高性能。

image.png

RAID 4

RAID4 與 RAID3 的原理大致相同,區別在于條帶化的方式不同。RAID4按照塊的方式來組織數據,寫操作只涉及當前數據盤和校驗盤兩個盤,多個 I/O 請求可以同時得到處理,提高了系統性能。

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

image.png

RAID 5

RAID 5 應該是目前最常見的 RAID 等級,它把數據和相對應的奇偶校驗信息存儲到組成RAID 5的各個磁盤上,并且把奇偶校驗信息和相對應的數據分別存儲于不同的磁盤上,其中任意N-1塊磁盤上都存儲完整的數據,也就是說相當于一塊磁盤容量的空間用于存儲奇偶校驗信息。因此當RAID 5的一個磁盤發生損壞后,不會影響數據的完整性,從而保證數據安全。當損壞的磁盤被替換后,RAID還會自動利用剩下奇偶校驗信息去重建磁盤上的數據,來保持RAID 5的高可靠性。

RAID5可以理解為是RAID0和RAID1的折中方案。RAID5可以為系統提供數據安全保障,但保障程度要比鏡像低而磁盤空間率要比鏡像高。RAID5具有和RAID0近似的數據讀取速度,只是因為多了一個奇偶校驗信息,寫入數據的速度相對單獨寫入一塊硬盤的速度略慢,若使用"回寫緩存"可以讓性能改善不少。同時由于多個數據對應一個奇偶校驗信息,RAID5的磁盤空間利用率要比RAID1高,存儲成本相對便宜

image.png

RAID 6

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

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

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

image.png

RAID10 & RAID01

RAID 10和RAID 01非常相似,兩者在讀寫性能上沒有什么差別。但是在安全性上,RAID 10要好于RAID 01。如下圖所示,假設Disk 0損壞,在RAID10中,在剩下的3塊盤中,只有當Disk 1故障,整個RIAD才會失效,但在RIAD 01中,Disk 0損壞后,左邊的條帶將無法讀取,在剩下的3塊盤中,只要Disk2或Disk3兩個磁盤中任何一個損壞都會導致RAID失效。因此,生產上建議使用RAID 10。

image.png
image.png
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容