Raid英文名是這個Redundant Array of Independent Disks,獨立硬盤冗余陣列,簡稱磁盤陣列。其基本思想就是把多個相對便宜的硬盤組合起來,成為一個硬盤陣列組,使性能達到甚至超過一個價格昂貴、容量巨大的硬盤。先說一下Raid的好處,多個硬盤同時工作讀寫一定會有提升,當然這不是像固態硬盤那樣速度提升而是另外一種方法。其次就是高可用,可以做熱備即使有一塊硬盤壞了,也不用擔心數據的問題。而且根據選擇的版本不同,RAID比單顆硬盤有以下一個或多個方面的好處:增強數據集成度,增強容錯功能,增加處理量或容量。另外,磁盤陣列對于電腦來說,看起來就像一個單獨的硬盤或邏輯存儲單元。
一、基本原理
簡單地說, RAID 是由多個獨立的高性能磁盤驅動器組成的磁盤子系統,從而提供比單個磁盤更高的
存儲性能和數據冗余的技術。 RAID 是一類多磁盤管理技術,其向主機環境提供了成本適中、數據可靠性高的高性能存儲。 SNIA 對 RAID 的定義是 :一種磁盤陣列,部分物理存儲空間用來記錄保存在剩余空間上的用戶數據的冗余信息。當其中某一個磁盤或訪問路徑發生故障時,冗余信息可用來重建用戶數據。磁盤條帶化雖然與 RAID 定義不符,通常還是稱為 RAID (即 RAID0 )。RAID 的初衷是為大型
服務器提供高端的存儲功能和冗余的數據安全。在整個系統中, RAID 被看作是由兩個或更多磁盤組成的存儲空間,通過并發地在多個磁盤上讀寫數據來提高存儲系統的 I/O 性能。大多數 RAID 等級具有完備的數據校驗、糾正措施,從而提高系統的容錯性,甚至鏡像方式,大大增強系統的可靠性, Redundant 也由此而來。
二、關鍵目標
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 )。
1、鏡像
將數據復制到多個磁盤,一方面可以提高可靠性,另一方面可并發從兩個或多個副本讀取數據來提高讀性能。顯而易見,鏡像的寫性能要稍低, 確保數據正確地寫到多個磁盤需要更多的時間消耗。
鏡像是一種冗余技術,為磁盤提供保護功能,防止磁盤發生故障而造成數據丟失。對于 RAID 而言,采用鏡像技術 典型地 將會同時在陣列中產生兩個完全相同的數據副本,分布在兩個不同的磁盤驅動器組上。鏡像提供了完全的數據冗余能力,當一個數據副本失效不可用時,外部系統仍可正常訪問另一副本,不會對應用系統運行和性能產生影響。而且,鏡像不需要額外的計算和校驗,故障修復非常快,直接復制即可。鏡像技術可以從多個副本進行并發讀取數據,提供更高的讀 I/O 性能,但不能并行寫數據,寫多個副本會會導致一定的 I/O 性能降低。
鏡像技術提供了非常高的數據安全性,其代價也是非常昂貴的,需要至少雙倍的存儲空間。高成本限制了鏡像的廣泛應用,主要應用于至關重要的數據保護,這種場合下數據丟失會造成巨大的損失。另外,鏡像通過 “ 拆分 ” 能獲得特定時間點的上數據快照,從而可以實現一種備份窗口幾乎為零的數據備份技術。
2、數據條帶
將數據分片保存在多個不同的磁盤,多個數據分片共同組成一個完整數據副本,這與鏡像的多個副本是不同的,它通常用于性能考慮。數據條帶具有更高的并發粒度,當訪問數據時,可以同時對位于不同磁盤上數據進行讀寫操作, 從而獲得非常可觀的 I/O 性能提升 。
磁盤存儲的性能瓶頸在于磁頭尋道定位,它是一種慢速機械運動,無法與高速的 CPU 匹配。再者,單個磁盤驅動器性能存在物理極限, I/O 性能非常有限。 RAID 由多塊磁盤組成,數據條帶技術將數據以塊的方式分布存儲在多個磁盤中,從而可以對數據進行并發處理。這樣寫入和讀取數據就可以在多個磁盤上同時進行,并發產生非常高的聚合 I/O ,有效提高了整體 I/O 性能,而且具有良好的線性擴展性。這對大容量數據尤其顯著,如果不分塊,數據只能按順序存儲在磁盤陣列的磁盤上,需要時再按順序讀取。而通過條帶技術,可獲得數倍與順序訪問的性能提升。
數據條帶技術的分塊大小選擇非常關鍵。條帶粒度可以是一個字節至幾 KB 大小,分塊越小,并行處理能力就越強,數據存取速度就越高,但同時就會增加塊存取的隨機性和塊尋址時間。實際應用中,要根據數據特征和需求來選擇合適的分塊大小,在數據存取隨機性和并發處理能力之間進行平衡,以爭取盡可能高的整體性能。
數據條帶是基于提高 I/O 性能而提出的,也就是說它只關注性能, 而對數據可靠性、可用性沒有任何改善。實際上,其中任何一個數據條帶損壞都會導致整個數據不可用,采用數據條帶技術反而增加了數據發生丟失的概念率。
3、數據校驗
利用冗余數據進行數據錯誤檢測和修復,冗余數據通常采用海明碼、異或操作等算法來計算獲得。利用校驗功能,可以很大程度上提高磁盤陣列的可靠性、魯棒性和容錯能力。不過,數據校驗需要從多處讀取數據并進行計算和對比,會影響系統性能。 不同等級的 RAID 采用一個或多個以上的三種技術,來獲得不同的數據可靠性、可用性和 I/O 性能。至于設計何種 RAID (甚至新的等級或類型)或采用何種模式的 RAID ,需要在深入理解系統需求的前提下進行合理選擇,綜合評估可靠性、性能和成本來進行折中的選擇。
鏡像具有高安全性、高讀性能,但冗余開銷太昂貴。數據條帶通過并發性來大幅提高性能,然而對數據安全性、可靠性未作考慮。數據校驗是一種冗余技術,它用校驗數據來提供數據的安全,可以檢測數據錯誤,并在能力允許的前提下進行數據重構。相對鏡像,數據校驗大幅縮減了冗余開銷,用較小的代價換取了極佳的數據完整性和可靠性。數據條帶技術提供高性能,數據校驗提供數據安全性, RAID 不同等級往往同時結合使用這兩種技術。
采用數據校驗時, RAID 要在寫入數據同時進行校驗計算,并將得到的校驗數據存儲在 RAID 成員磁盤中。校驗數據可以集中保存在某個磁盤或分散存儲在多個不同磁盤中,甚至校驗數據也可以分塊,不同 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 可以動態增減磁盤驅動器,可自動進行數據校驗和數據重建,這些都可以 大大簡化管理工作。
五、Raid的級別
RAID-0 0 條帶卷
RAID0的原理就是在數據讀寫的時候將一個數據拆分成多個部分,分散到多個磁盤上的。注意這里是沒有備份的,存是分開存,讀也是分開讀然后由控制器拼接到一起的。這里的數據拆分單位叫做chunk,這種級別的RAID0特點就是讀寫性能提升,磁盤容量為容量最小硬盤*硬盤個數。這種設計沒有容錯能力,所以一旦硬盤出現問題,后果不堪設想!
RAID-1 1 鏡像卷
RAID1看名字意思就是給磁盤做了一個鏡像,所以叫做鏡像卷把。它的工作原理就是為單個硬盤配備一塊鏡像硬盤,數據存儲時性能是會下降的,但是讀取數據時可以并行從兩塊硬盤同時讀取,但是做好不重復讀才是難點!同時它也具備冗余能力,當一塊硬盤壞掉之后另一塊的數據與之相同能夠立即投入使用,具備容錯能力。磁盤容量為最小單個硬盤容量。
RAID-4
RAID4的工作機制是在數據存儲時由平級的三塊硬盤組成,將數據分割成chunk1和chunk2 ,硬盤就是由hdd1,hdd2,hdd3組成的,hdd1存儲chunk1的數據,hdd2存儲chunk2的數據,hdd3存儲chunk1和chunk2的校驗碼,通常使用chunk1與chunk2對位做亦或運算得出校驗碼,可以理解成為1+2=3的形式,意味著得到任意其中兩塊硬盤就能夠計算出第三塊硬盤的數據。Raid4的特點就是通過校驗碼具備一定容錯能力,chunk1和chunk2可以并行讀寫,性能是有所提升的。但是通過校驗碼計算出另一塊硬盤數據只能做應急使用,因為此時會增加其他兩塊hdd的負載同時Raid4也有一個固有的缺陷就是存放校驗碼的hdd壓力會過高,也是性能瓶頸的短板!
RAID-5
Raid5對Raid4的工作機制進行了改進,采用了三塊硬盤輪流作存放校驗碼的硬盤,因為存放校驗碼的盤壓力是高過其他兩塊的,于是這也就實現了一定意義的上負載均衡。第一次讀寫時hdd1作存放校驗碼的盤,第二次讀寫時hdd2作存放校驗碼的盤,第三次讀寫時hdd3作存放校驗碼的盤,這樣就能夠讓三塊盤同時分擔數據還原的壓力。它的特性是具備一塊磁盤損壞的容錯能力,讀寫性能有提升,磁盤空間為最小容量磁盤*硬盤數量-1。
RAID-6
Riad6又對Raid又對raid5的基礎上做了改進,為了增加磁盤穩定性它使用了兩塊磁盤做校驗盤,于是校驗碼存儲為兩次,為了增加穩定性采用兩塊數據盤兩塊校驗盤的方式,但是感覺上有點奇怪。企業中實際應用不會太多,見仁見智把。
RAID-10
Raid10需要10塊硬盤,兩兩一組,每組做一個鏡像卷,這樣有5組鏡像卷,在此之上做RAID0,就是將數據每次分成五個chunk,存取并行讀寫的方式存儲在這五個鏡像卷上的。這種模式有一定容錯能力,也有異步IO能力,但是磁盤利用率只有50%。犧牲了一半的磁盤容量。數據進來時,先進鏡像卷,然后進條帶卷。
RAID-01
Raid01和Raid10十分相似,這次是先做條帶卷,每個數據分成5分chunk, 存入由5塊磁盤組成的條帶卷,在此基礎上做該條帶卷的鏡像。