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 控制器。在數據重建恢復方面,檢驗技術比鏡像技術複雜得多且慢得多。

海明校驗碼和 異或校驗是兩種最爲經常使用的數據校驗算法。海明校驗碼不只能檢測錯誤,還能給出錯誤位置並自動糾正。海明校驗的基本思想是:將有效信息按照某種規律分紅若干組,對每個組做奇偶測試並安排一個校驗位,從而能提供多位檢錯信息,以定位錯誤點並糾正。可見海明校驗實質上是一種多重奇偶校驗。異或校驗經過異或邏輯運算產生,將一個有效信息與一個給定的初始值進行異或運算,會獲得校驗信息。若是有效信息出現錯誤,經過校驗信息與初始值的異或運算能還原正確的有效信息。

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
 
 
image

歡迎關注微信公衆號:木可大大,全部文章都將同步在公衆號上。

相關文章
相關標籤/搜索