什么是RAID陣列?
假設在一臺服務器中接入兩塊1TB的硬盤,這樣具有2TB的可用空間。但是,在服務器環境中,最好將第二塊硬盤作為備份,構建成一個RAID陣列。這可以使用RAID控制器實時完成,該RAID控制器連接到硬盤并管理RAID陣列。還有軟件RAID陣列,但是大多數服務器都將配備專用的RAID控制器。
如果沒有RAID陣列,就不會有冗余。但是這并不是主要問題。而一個良好的備份策略永遠不會真正丟失數據,但是如果硬盤出現故障,則這臺服務器在還原時可能會經歷嚴重的停機問題。這在服務器環境中是不可接受的,并且比暫時的數據丟失要嚴重得多。
RAID陣列可以在仍然可用的情況下重建,當一塊硬盤出現故障時,不必從備份中恢復。這是RAID陣列的主要優勢。服務器被設計為即使在許多意外情況下也不會停機。工作人員可以從網絡服務器上拔出硬盤,盡管性能較低,但它仍會繼續運轉。
在許多方面,配置RAID陣列比配置一塊容量更大的硬盤要好得多。一塊8TB大容量硬盤的彈性不如RAID 5陣列中配置的五塊2TB驅動器。而現在很難找到只安裝一塊硬盤的服務器。
RAID陣列采用容量和品牌相同的硬盤效果最佳。它可以與各種硬盤一起使用,但通常會受到速度最慢和容量最小的限制,使其性能欠佳。
這實際上只適用于用戶自己管理服務器的情況,如家用網絡附屬存儲(NAS)采用了許多硬盤;在這種情況下,選擇的RAID陣列類型非常重要。如果是從AWS公司或者其他云計算供應商那里租用虛擬服務器,RAID陣列通常由托管服務商為用戶配置,因為這個級別的控制是從企業那里抽象出來的。
在開始采用RAID陣列之前需要注意:用于指定不同RAID級別的數字實際上沒有任何意義。RAID 5的性能不是RAID 1的5倍。此外還有其他幾個RAID級別,例如RAID 2、3和4,但它們在實踐中并未使用,因此不用解釋。
JBOD
從技術上講,這不是RAID陣列配置,但是在這里需要進行解釋。從技術上講,JBOD意思是“硬盤的聯合批處理”,但是可以將其理解為“只是一堆硬盤”,因為基本上就是這樣。JBOD只是將硬盤連接在一起成為一個大容量硬盤。這不會帶來任何性能上的改進,也沒有提供任何冗余,而用戶并不關心其中接入了哪些硬盤。
許多RAID控制器將提供JBOD模式。除非擁有許多容量不同的硬盤并將它們連接在一起,否則不應該使用它。
RAID 0陣列
RAID 0陣列中的數據分散在多個硬盤上;例如,如果想從RAID陣列讀取文件,則將并行讀取多個硬盤,這使RAID 0陣列的讀取速度比任何一塊硬盤快得多。
但是,由于沒有鏡像、奇偶校驗或其他冗余機制,因此,如果某塊硬盤發生故障,則會丟失整個陣列上的所有數據。因此,可以在速度至關重要時使用RAID 0陣列,并且不需要冗余。
在某種程度上,RAID 0陣列與根本沒有采用RAID陣列非常相似。它可以將所有硬盤放在一個大容量硬盤中,并獲得更高的訪問速度。但是,單塊硬盤故障可能會對陣列上的數據造成災難性的影響,因此,除非是臨時數據,否則在沒有備份解決方案的情況下切勿運行RAID 0陣列。
RAID 0陣列還可以最大化存儲容量,因為沒有用于冗余的存儲空間。如果有兩個1 TB硬盤,則其陣列的容量為2TB。但是,RAID 0陣列被限制為陣列中容量最小的硬盤,如果嘗試將2TB硬盤與1TB硬盤一起構建成RAID 0陣列,則只有2TB的空間,而另一個1TB硬盤的空間則會完全浪費。
采用SSD硬盤的RAID 0陣列很常見,考慮到SSD硬盤的故障率較低,因此更合理。這是高端服務器系統中的常見設置,因為速度比冗余更重要。
RAID 1陣列
RAID 1陣列是RAID陣列的另一種基本類型。與RAID 0陣列類似,它使用兩塊或多塊硬盤,但不是將數據實現條帶化,而是將數據從第一塊硬盤鏡像到第二塊硬盤(以及陣列中的其他硬盤)。如果有兩塊硬盤,則其中一塊硬盤將完全用作一種實時備份硬盤,從而在此過程中將總存儲容量減半。如果一塊硬盤發生故障,可以繼續從另一塊硬盤讀取數據,并通過更換故障的硬盤來重建陣列。
由于可以使用兩塊硬盤,因此確實具有一些讀取性能上的好處,但是由于它從每塊硬盤中讀取相同的數據,因此通常不如RAID 0陣列好。其寫入性能將受限于讀寫速度最慢的硬盤的速度。
如果擁有兩個硬盤并且無法承受硬盤故障而無法取出數據帶來的損失,則RAID 1陣列則是唯一可行的選擇。不過,這并不是最有效的,因為將存儲容量減少了一半,因此其成本是單塊硬盤的兩倍。
但是,服務器設置中的冗余陣列比單塊硬盤的價格要有價值得多。如果只需要基本的硬盤設置,可以使用簡單的RAID 1陣列。當接入兩塊硬盤時,大多數RAID控制器將默認為RAI??D 1陣列。
RAID 5陣列
RAID 5陣列讓事情開始變得有趣起來。RAID 5陣列不會像RAID 1陣列那樣復制數據,而是使用奇偶校驗這種效率更高的方法。
奇偶校驗是錯誤檢查的一種形式,就像哈希校驗一樣,但是要簡單得多。通常用于確保網絡流量不會混淆。基本上,假設有7位數據要發送給某人,并且想確保它完整無缺地傳輸。如果傳輸過程有些混亂,他們將無從得知。解決方案是對所有正數位進行計數。如果有偶數,則奇偶校驗將為0。如果有奇數,則奇偶校驗將為1。將其添加到要發送的數據中,另一端的人在收到該數據時將會自動計算奇偶校驗。如果發生錯誤,并且發生了位翻轉(甚至是奇偶校驗位本身),對方也會知道并請求重新發送數據。當然,如果單次傳輸中有兩個錯誤,則該系統會中斷,但這并不常見。
RAID 5陣列不需要存儲數據的副本(就像發送兩次消息一樣),而只是存儲奇偶校驗位。可以想象它像具有冗余功能的RAID 0陣列一樣,它至少需要三塊硬盤。除一塊硬盤之外,所有硬盤均像常規RAID 0陣列一樣使用,但最后一塊硬盤用于奇偶校驗。如果其中一塊硬盤出現故障,則可以反向執行奇偶校驗計算以恢復任何硬盤上的所有數據(盡管這是一個漫長而費力的操作)。
實際上,RAID 5陣列不使用專用硬盤進行奇偶校驗,因為在所有硬盤上剝離奇偶校驗位的速度更快,但是在計算RAID 5陣列將提供多少存儲空間時,可以這樣考慮。本質上,除了一塊硬盤之外,將所有硬盤加起來,這就是將擁有的存儲空間。RAID 5陣列可以通過增加硬盤來提高空間效率,采用三塊硬盤的效率為66%,但是10塊硬盤的效率為90%。與RAID 1陣列相比,這顯著降低了成本。
但是,RAID 5陣列并非沒有缺點。由于每次寫入硬盤時都必須計算奇偶校驗,因此會降低寫入性能。考慮到以下事實,其問題就更加嚴重:在一塊硬盤中翻轉一個位需要讀取所有的硬盤,以便重新計算該塊的奇偶校驗。實際上,如果RAID 0陣列可以擴展n塊硬盤的性能,則RAID 5陣列可以為n-1塊硬盤提供寫入操作的性能。但是,如果陣列足夠大,問題并沒有那么嚴重。
另外,無論擁有多少塊硬盤,都只能承受一塊硬盤故障的損失。這似乎不是一個主要問題,因為故障很少見,而且不太可能同時遇到兩個故障,但是陣列重建在硬盤上可能會非常密集,基本上是在每個故障最易受攻擊的時候從每個故障中讀取每一位數據。因此,如果其中一塊硬盤發生故障,則另一塊硬盤也很有可能也會發生故障。
如果有3塊硬盤,則應該選擇RAID 5陣列,因為RAID 1陣列會浪費空間。如果有4塊硬盤,那么它可能仍然是最佳選擇,但是此列表上的其他兩個選項也可以使用。
RAID 6陣列
RAID 6陣列與RAID 5陣列相似,只是對“奇偶校驗磁盤”進行了鏡像。這使其陣列能夠避免發生兩次的硬盤故障。但是,n-2塊硬盤的寫入性能更差,并且擁有更少的空間。
如果有大量的硬盤(6塊、8塊或更多),則可能要考慮RAID 6陣列的額外冗余。僅RAID 6陣列即可實現3-2-1備份策略:至少存儲三個數據副本,兩個備份位于不同的介質上,其中至少一個位于異地。RAID 6陣列可以承受兩個硬盤故障,使其功能與具有三塊磁盤的RAID 1陣列相同(減去重建時間)。
在實踐中,RAID 6陣列幾乎永遠不會經歷整個陣列故障,尤其是如果在公式中添加了更多的奇偶校驗磁盤的話。結合其他數據中心中的備份和副本,這就是AWS Glacier和Backblaze等存檔服務如何實現99.999999999%持久性的原因。
RAID 10(1+0)陣列
RAID 10陣列從技術上講是嵌套RAID陣列的一種形式,這本身就是另一種復雜的事情。如果擁有四塊硬盤,并且不想使用RAID 5陣列或RAID 6陣列,則唯一的其他選擇是RAID 0陣列和RAID 1陣列,這兩個都有問題。相反,如果將這些硬盤分成兩部分,構成兩個RAID 1陣列,然后將這些陣列用于構建一個大的RAID 0陣列。RAID 10陣列至少需要四塊硬盤并且還需要偶數總數的硬盤。
這提供了RAID 1陣列和RAID 0陣列的所有優點,并且沒有很多缺點,其具有快速的讀取和寫入速度,高冗余性和易于重建的功能,同時仍然可以使用所有硬盤總空間的一半。RAID 10陣列實際上比RAID 1陣列更具彈性。在上圖中,硬盤1和硬盤3可能會發生故障,并且陣列仍可以完全重建(盡管如果硬盤0和硬盤1都發生故障,則該陣列將無法恢復)。
RAID 10陣列是服務器非常常見的RAID級別。它的速度非常快,并且可以承受一塊硬盤故障。唯一真正的問題是價格,因為仍然要為保留所有數據的副本付出雙倍的代價,但是對于一般的工作負載來說,RAID 10陣列在速度上超越了所有其他RAID配置,而在吞吐量方面僅輸給RAID 0陣列。
RAID 50/60陣列
RAID 50/60陣列基本上是RAID 0陣列中的兩個RAID 5陣列或RAID 56陣列。這與RAID 10陣列一樣提高了性能,最重要的是提高了寫入性能,因為在計算奇偶校驗時從其他硬盤讀取數據更快。
它至少需要6塊硬盤(在RAID 60的情況下為8塊硬盤),并且由于有單獨的RAID 5陣列,因此需要附加的奇偶校驗硬盤,從而降低了空間效率,但彈性更大。總體而言,RAID 50陣列本質上是RAID 5陣列性能更高的版本。
版權聲明:本文為企業網D1Net編譯,轉載需注明出處為:企業網D1Net,如果不注明出處,企業網D1Net將保留追究其法律責任的權利。