歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Unix知識 >> 關於Unix

磁盤陣列RAID詳解

一、功能 1 對磁盤高速存取(提速): RAID將普通硬盤組成一個磁盤陣列,在主機寫入數據,RAID控制器把主機要寫入的數據分解為多個數據塊,然後並行寫入磁盤陣列;主機讀取數據時,RAID控制器並行讀取分散在磁盤陣列中各個硬盤上的數據,把它們重新組合後提供給

一、功能
1 對磁盤高速存取(提速): RAID將普通硬盤組成一個磁盤陣列,在主機寫入數據,RAID控制器把主機要寫入的數據分解為多個數據塊,然後並行寫入磁盤陣列;主機讀取數據時,RAID控制器並行讀取分散在磁盤陣列中各個硬盤上的數據,把它們重新組合後提供給主機。由於采用並行讀寫操作,從而提高了存儲系統的存取系統的存取速度。

2 擴容

3 數據冗余

二、分類

RAID可分為級別0到級別6,通常稱為:RAID0,RAID1,RAID2,RAID3,RAID4,RAID5,RAID6。

RAID0:RAID0並不是真正的RAID結構,沒有數據冗余,RAID0連續地分割數據並並行地讀/寫於多個磁盤上。因此具有很高的數據傳輸率,但RAID0在提高性能的同時,並沒有提供數據可靠性,如果一個磁盤失效,將影響整個數據。因此RAID0不可應用於需要數據高可用性的關鍵應用。

RAID1:RAID1通過數據鏡像實現數據冗余,在兩對分離的磁盤上產生互為備份的數據。RAID1可以提高讀的性能,當原始數據繁忙時,可直接從鏡像中讀取數據。RAID1是磁盤陣列中費用最高的,但提供了最高的數據可用率。當一個磁盤失效,系統可以自動地交換到鏡像磁盤上,而不需要重組失效的數據。

RAID2:從概念上講,RAID2同RAID3類似,兩者都是將數據條塊化分布於不同的硬盤上,條塊單位為位或字節。然而RAID2使用稱為“加重平均糾錯碼”的編碼技術來提供錯誤檢查及恢復。這種編碼技術需要多個磁盤存放檢查及恢復信息,使得RAID2技術實施更復雜。因此,在商業環境中很少使用。

RAID3:不同於RAID2,RAID3使用單塊磁盤存放奇偶校驗信息。如果一塊磁盤失效,奇偶盤及其他數據盤可以重新產生數據。如果奇偶盤失效,則不影響數據使用。RAID3對於大量的連續數據可提供很好的傳輸率,但對於隨機數據,奇偶盤會成為寫操作的瓶頸。

RAID4:同RAID2和RAID3一樣,RAID4和RAID5也同樣將數據條塊化並分布於不同的磁盤上,但條塊單位為塊或記錄。RAID4使用一塊磁盤作為奇偶校驗盤,每次寫操作都需要訪問奇偶盤,成為寫操作的瓶頸。在商業應用中很少使用。

RAID5:RAID5沒有單獨指定的奇偶盤,而是交叉地存取數據及奇偶校驗信息於所有磁盤上。在RAID5上,讀/寫指針可同時對陣列設備進行操作,提供了更高的數據流量。RAID5更適合於小數據塊,隨機讀寫的數據。RAID3與RAID5相比,重要的區別在於RAID3每進行一次數據傳輸,需涉及到所有的陣列盤。而對於RAID5來說,大部分數據傳輸只對一塊磁盤操作,可進行並行操作。在RAID5中有“寫損失”,即每一次寫操作,將產生四個實際的讀/寫操作,其中兩次讀舊的數據及奇偶信息,兩次寫新的數據及奇偶信息。

RAID6:RAID6與RAID5相比,增加了第二個獨立的奇偶校驗信息塊。兩個獨立的奇偶系統使用不同的算法,數據的可靠性非常高。即使兩塊磁盤同時失效,也不會影響數據的使用。但需要分配給奇偶校驗信息更大的磁盤空間,相對於RAID5有更大的“寫損失”。RAID6的寫性能非常差,較差的性能和復雜的實施使得RAID6很少使用。

三、詳細介紹

RAID0是具有提速和擴容的目的

在RAID0模式中,數據被分割為一定數量的數據塊(Chunk)交叉寫在多個硬盤上,一般的來說在RAID0系統中數據被分割的數量同RAID陣列所使用的硬盤的數量是有關的,比如RAID0中采用了3塊硬盤,那麼數據將會被分為三份依次的寫入三個硬盤,通俗的說這種模式其實就是利用RAID技術讓系統認為三塊硬盤組成一個容量更大的硬盤,因為這個過程沒有數據校驗所以這種RAID模式是讀寫速度最快的一種。

RAID0並沒有從安全性角度考慮,實際上,如果RAID0當中的一塊硬盤壞了,所有數據都會損壞,並且沒有辦法恢復。這使得RAID0的安全性能非常差,所以很多用戶出於安全考慮沒有使用RAID0模式。雖然如此,RAID0畢竟是所有RAID方式當中速度最快的一種模式,如果RAID0模式當中有兩塊硬盤的話,那麼RAID0的存儲讀取數據的速度會是單個硬盤雙倍。,如果使用6塊硬盤的話,那麼理論速率就是單個硬盤的6倍。如果在RAID0模式當中使用不同的硬盤會造成兩方面的問題,首先,RAID0的有效硬盤容量會是最小的硬盤的容量乘上硬盤的個數,這是因為如果容量的最小的硬盤存滿了之後,RAID0依然會將文件平均分配到各個硬盤當中,此時便不能完成存儲任務了;其次,如果RAID0當中的硬盤速度不同,那麼整體的速度會是速度最慢的硬盤的速度乘上硬盤的個數,這是因為RAID0模式是需要將上一部的存儲任務完成之後才能進行下一步的進程,這樣,其它的速度快的硬盤會停下來等待速度慢的硬盤完成存儲或者讀取任務,使得整體性能有所下降。所以,在這裡建議使用RAID0模式的用戶最好選擇容量和速度相同的硬盤,最好是同一品牌的同種產品。

因此RAID0在嚴格意義上說不是“冗余獨立磁盤陣列”。RAID0模式一般用於需要快速處理數據但是對於數據的安全性要求不高的場合。這種RAID模式的特點是簡單,而且並不需要復雜和昂貴的控制器。采用RAID0模式至少需要2塊硬盤,最終得到的存儲容量也是這兩塊硬盤的和。

RAID0的隨機讀取性能:很好
RAID0的隨機寫入性能:很好
RAID0的持續讀取性能:很好
RAID0的持續寫入性能:很好

RAID0的優點:最快的讀寫性能,如果每塊硬盤擁有獨立的控制器性能將會更好。

RAID0的缺點:任何一塊硬盤出現故障所有的數據都會丟失,大部分的控制器都是通過軟件實現的,所以效能並不好。

RAID1

RAID1模式是讓組成RAID1模式的硬盤互為鏡像,當你向硬盤中寫入數據的時候,兩個硬盤同時存儲相同的數據,這樣即使其中一個硬盤出現了故障,系統利用另外一個硬盤一樣可以正常運行。RAID1相對於單塊硬盤來說它的數據讀取性能會更好一些,因為當一塊硬盤處於忙的狀態時,RAID控制器可以去讀取另一塊硬盤中同樣的數據,但是寫入數據性能不但沒有增長而且可能會有輕微下降。當其中一塊硬盤出現故障之後,新的數據可以寫入仍然能夠正常工作的硬盤,當使用新的硬盤替換掉原來的硬盤之後,RAID控制器會自動的把數據復制到新的硬盤上。RAID1模式的最大特點就是冗余性高,但是由於大部分的功能是利用軟件來實現的,所以它會增加處理器的負擔。這種RAID模式非常適合對數據的安全性有極高要求的人。

在RAID1模式當中,所使用的硬盤最好是相同的,否則會出現浪費硬盤空間的情況。由於RAID1模式是將相同的信息寫入到不同的硬盤當中,所以RAID1模式的有效硬盤容量是陣列當中容量最小的硬盤的容量。舉例來說,如果RAID1模式中有一塊容量為20GB的硬盤和一塊容量為30GB的硬盤,那麼總體的RAID1的有效容量是20GB,從此那塊30GB硬盤上剩下的10GB容量就會被浪費。同時,如果兩塊硬盤的速度不同的話,那麼速度較快的那塊硬盤依然會停下來等待速度較慢的那塊硬盤完成任務之後再進行下一步行動。

RAID1的隨機讀取性能:好
RAID1的隨機寫入性能:好
RAID1的持續讀取性能:一般
RAID1的持續寫入性能:好

RAID1的優點:數據高可靠性,易於實現,設計簡單。

RAID1的缺點:比RAID0相比速度較慢,特別是寫入速度,另外就是我們僅僅能使用一半的硬盤容量。

RAID0+1

這種RAID模式其實是RAID0和RAID1模式的組合,至少需要4塊硬盤。其中任何兩塊組成一個RAID0磁盤陣列,然後兩個RAID0磁盤陣列可以看成兩個容量更大、速度更快的硬盤,它們再組成一個RAID1磁盤陣列。這樣的系統保證了較高的磁盤性能和較高的數據安全性。當然缺點也是顯而易見的就是成本較高,構造比較復雜。RAID0+1在容錯性能方面僅次於RAID5,一般用於文件服務器等方面。

RAID0+1的隨機讀取性能:很好
RAID0+1的隨機寫入性能:好
RAID0+1的持續讀取性能:很好
RAID0+1的持續寫入性能:好

RAID0+1的優點:相對於單塊硬盤具有更高的讀寫性能,而且大大提高了數據的安全性。

RAID0+1的缺點:成本較高,至少需要4塊硬盤。

RAID2

RAID2模式也相當的復雜,用於存儲數據的硬盤以RAID0的模式來組合,加上專門存放海明ECC校驗碼的硬盤,當然為了提高校驗碼數據的安全,校驗碼硬盤至少是兩個組成RAID1模式。這樣即使存儲數據的其中一個硬盤損壞,RAID控制器可以通過海明碼來恢復數據到新的硬盤上。RAID2一般針對大數據量操作和超級計算機應用等方面,但是並不適於普通用戶。因為要在數據存儲的過程中生成校驗碼,所以這種磁盤陣列的性能並不高。由於各種原因這種磁盤陣列模式並沒有投入到實際的商業應用中去。因為價格不菲,當然也不會為普通用戶所接受了。

RAID2的隨機讀取性能:一般
RAID2的隨機寫入性能:差,主要因為所有的操作都要經過ECC運算
RAID2的持續讀取性能:很好
RAID2的持續寫入性能:一般

RAID2的優點:數據安全性高,只要存放校驗碼的硬盤沒有故障就能恢復數據。

RAID2的缺點:昂貴、需要專門的硬盤存放校驗碼、效率不高、沒有商業應用的支持。

RAID3

同RAID2模式一樣,RAID3的數據也是被分成數據塊依次存儲到多個硬盤上的。只是RAID3把數據以bit為單位來分割並且存儲到各個硬盤上。它的優點就是具有高速的讀寫能力,當然寫入性能因為在寫入過程中需要生成奇偶校驗碼所以速度會受到一定的影響——它也需要一個專用的硬盤來存儲奇偶校驗碼。當其中一個存儲數據的硬盤出現故障之後,系統依然能夠正常運行,但是性能會受到影響,如果在更換壞硬盤之前又有一塊硬盤出現故障,那麼這個磁盤陣列的數據將會全部丟失,無法恢復。在這種磁盤陣列模式下,要求所有硬盤的轉速要同步,這個要求在實際應用中難度不小。RAID3至少需要3塊硬盤,其中一塊用於存放奇偶校驗碼——奇偶校驗碼是通過異或運算得到的。

這種RAID模式如果使用軟件控制器來實現將會明顯的影響性能,因為這種組合比較復雜,不過同RAID0+1模式相比它最少只要3個硬盤就可以實現——所以成本有所下降,總的來說這種磁盤陣列比較適合視頻處理和編輯等方面的應用。

RAID3的隨機讀取性能:好
RAID3的隨機寫入性能:很差
RAID3的持續讀取性能:很好
RAID3的持續寫入性能:一般

RAID3的優點:比較適合視頻編輯等需要大數據量調用的場合。

RAID3的缺點:實現各個驅動器的轉速同步非常困難(目前大部分的硬盤都不支持這個功能),需要復雜的控制器。

RAID4

RAID4模式同RAID3幾乎是一樣的,數據都是分成小的數據塊依次存儲在多個硬盤之上,奇偶校驗碼存放在獨立的奇偶校驗盤上。唯一不同的是,在數據分割上RAID3是以bit為單位而RAID4是以Byte為單位。這樣可以使得RAID4同RAID3具有一樣的讀取速度,當然寫入性能因為需要在寫入過程中產生校驗碼並且存儲到校驗盤而受到了影響。

這種模式的最大好處就是不需要各個硬盤之間在轉速上保持同步,這就使得控制器不需要那麼復雜。它的寫入性能是所有RAID模式中最差的。同RAID3模式一樣,當其中一塊硬盤損壞,數據並不會丟失,如果在故障盤被替換之前,第二塊硬盤也發盤故障將會導致所有的數據都丟失。相對其它的RAID模式,恢復故障硬盤中的數據的效率相當低。

這種磁盤陣列模式也是至少需要3塊硬盤才能搭建而成。奇偶校驗碼是通過異或運算來得到的。它適於一般的應用程序,包括視頻處理等應用。它的造價也不算高,因為只要一塊硬盤作為校驗碼磁盤就可以了。

RAID4的隨機讀取性能:很好
RAID4的隨機寫入性能:一般,主要因為要向奇偶校驗磁盤寫入校驗碼
RAID4的持續讀取性能:好
RAID4的持續寫入性能:一般

RAID4的優點:除了RAID3的優點之外,它並不需要同步驅動器轉速。

RAID4的缺點:寫入性能很差,控制器的要求較高。

RAID5

RAID5使用至少三塊硬盤來實現陣列,它既能實現RAID0的加速功能也能實現RAID1的備份數據功能,在陣列當中有三塊硬盤的時候,它將會把所需要的存儲的數據按照用戶定義的分割大小分割成文件碎片存儲到兩塊硬盤當中,此時,陣列當中的第三塊硬盤不接收文件碎片,它接收到的是用來校驗存儲在另外兩塊硬盤當中數據的一部分數據,這部分校驗數據是通過一定的算法產生的,可以通過這部分數據來恢復存儲在另外兩個硬盤上的數據。另外,這三塊硬盤的任務並不是一成不變的,也就是說在這次存儲當中可能是1號硬盤和2號硬盤用來存儲分割後的文件碎片,那麼在下次存儲的時候可能就是2號硬盤和3號硬盤來完成這個任務了。可以說,在每次存儲操作當中,每塊硬盤的任務是隨機分配的,不過,肯定是兩塊硬盤用來存儲分割後的文件碎片另一塊硬盤用來存儲校驗信息。

這個校驗信息一般是通過RAID控制器運算得出的,通常這些信息是需要一個RAID控制器上有一個單獨的芯片來運算並決定將此信息發送到哪塊硬盤存儲。RAID5同時會實現RAID0的高速存儲讀取並且也會實現RAID1的數據恢復功能,也就是說在上面所說的情況下,RAID5能夠利用三塊硬盤同時實現RAID0的速度加倍功能也會實現RAID1的數據備份功能,並且當RAID5當中的一塊硬盤損壞之後,加入一塊新的硬盤同樣可以實現數據的還原。

RAID5是截止到目前我們所介紹的幾款RAID模式中控制器設計最復雜的一種。RAID5可以應用在大部分的領域中,比如多用戶和多任務環境中。目前的很多Web服務器和其它的Internet服務器都是采用這種形式的磁盤陣列,比如最近推出的Quantum Snap服務器就采用了外置式的RAID5磁盤陣列的設計。奇偶校驗一般會占據大約33%的磁盤空間的容量,所以對於一個總容量為120GB的RAID5磁盤陣列而言,可用的空間將是80GB左右。不過這種磁盤陣列模式在一般的主板進程的RAID控制器中都不提供支持,比如Abit KR7A-RAID主板僅僅支持RAID0、RAID1、RAID0+1。當然只要采用校驗碼的方式,就會一定程度上影響寫入性能,因此很多磁盤陣列廠商都在磁盤陣列中加入了寫緩存來提高寫入性能。

RAID5模式並不是一切都好,如果陣列當中某塊硬盤上的信息發生了改變的話,那麼就需要重新計算文件分割碎片,並且,校驗信息也需要重新計算,這時,三個硬盤都需要重新調用。同樣,如果要做RAID5陣列的話,最好使用相同容量相同速度的硬盤,RAID5模式的有效容量是陣列中容量最小的硬盤容量乘上陣列中硬盤的數目減去一後的數,這裡硬盤數目要減去一是因為其中有一塊硬盤用來存放校驗信息。

RAID5的隨機讀取性能:非常好(當使用大數據塊時)
RAID5的隨機寫入性能:一般,但是優於RAID3或都RAID4
RAID5的持續讀取性能:好(當使用小數據塊時)
RAID5的持續寫入性能:一般

RAID5的優點:不需要專門的校驗碼磁盤,讀取速度快,而且解決了寫入速度相對較慢的問題。

RAID5的缺點:寫入性能依然不盡如人意。

RAID6

RAID6是RAID家族中的新技術,是在RAID5基礎上擴展而來的。所以同RAID5一樣,數據和校驗碼都是被分成數據塊然後分別存儲到磁盤陣列的各個硬盤上。RAID6加入了一個獨立的校驗磁盤,它把分布在各個磁盤上的校驗碼都備份在一起,這樣RAID6磁盤陣列就允許多個磁盤同時出現故障,這對於數據安全要求很高的應用場合是非常必要的。這樣搭建一個RAID6磁盤陣列最少需要4塊硬盤。但是RAID6並沒有改善RAID5寫入性能不佳的情況,寫入緩存的應用僅僅能對於這個缺點進行一定程度的彌補但是並不能從根本上解決問題。因為RAID5和RAID6都可以根據應用程序來更改數據塊的大小,所以它的實際性能還會受到這個因素的影響。

在實際應用中RAID6的應用范圍並沒有其它的RAID模式那麼廣泛。如果實現這個功能一般需要設計更加復雜、造價更昂貴的RAID控制器,所以它一般也不會集成在主板上。

RAID6的隨機讀取性能:很好(當使用大數據塊時)
RAID6的隨機寫入性能:差,因為不但要在每硬盤上寫入校驗數據而且要在專門的校驗硬盤上寫入數據
RAID6的持續讀取性能:好(當使用小數據塊時)
RAID6的持續寫入性能:一般

RAID6的優點:快速的讀取性能,更高的容錯能力。

RAID6的缺點:很慢的寫入速度,RAID控制器在設計上更加復雜,成本更高。

熱交換和熱冗余

在RAID系統中一般都具有熱交換和熱冗余能力。熱交換允許在不關閉系統或電源的前提下更換故障硬盤,當然更換上的新硬盤也可以被系統動態的識別出來並且正確的配置和添加,而這些都不需要重新啟動計算機。這樣做的好處是勿庸置疑的,對於維護人員來說非常的簡單,而對於很多應用場合,比如Web服務器等,用戶並不希望服務器停機,這樣造成的損失將是不可估量的。很多HP/DELL服務器產品和RAID磁盤陣列都具有熱交換的能力。

熱冗余一般用於不適於熱交換的場合。這種設計一般是在故障出現之前就在計算機中配置了額外的硬盤,當有硬盤出現故障的時候,這塊冗余的就可以自動替代故障的硬盤的位置,對於這樣的系統在系統關閉之前是不能把損壞的硬盤拔下來的。熱冗余雖然不如熱交換方便,但是總比沒有好一些。

小結

其實磁盤陣列的種類非常多,我們今天介紹的是部分基本的應用模式,在實際應用為了達到足夠的性能和穩定,可以把各種RAID模式搭配使用,當然這樣對於RAID控制器的要求會更高,磁盤陣列系統的成本也就更高。

服務器所采用的RAID一般是基於SCSI的,所以這樣RAID系統的成本將會更加高昂。其實這個功能對於我們個人的應用還具有一定的距離,即使你擁有了一張整合了RAID控制器的主板,也需要至少2塊硬盤(一般的要求這兩塊硬盤在容量、品牌、轉速上都是一樣的),對於個人用戶來說這是一筆不小的開支。當然如果你有特殊的需要,比如需要假設一個工作站或者Web服務器,但是又不想花費太多的資金,那麼IDE RAID還是一個不錯的選擇。這裡需要提醒大家的是,一般的板載IDE RAID的處理器占用率較高,並且IDE RAID在部分應用中還不如SCSI硬盤。


 

Copyright © Linux教程網 All Rights Reserved