天天看點

關于raid的介紹

<b>.什麼是Raid;</b>

RAID(Redundant Array of Inexpensive Disks)稱為廉價磁盤備援陣列。RAID 的基本想法是把多個便宜的小磁盤組合到一起,成為一個磁盤組,使性能達到或超過一個容量巨大、價格昂貴的磁盤。

目前 RAID技術大緻分為兩種:基于硬體的RAID技術和基于軟體的RAID技術。其中在Linux下通過自帶的軟體就能實作RAID功能,這樣便可省去購買昂貴的硬體 RAID 控制器和附件就能極大地增強磁盤的 IO 性能和可靠性。由于是用軟體去實作的RAID功能,是以它配置靈活、管理友善。同時使用軟體RAID,還可以實作将幾個實體磁盤合并成一個更大的虛拟裝置,進而達到性能改進和資料備援的目的。當然基于硬體的RAID解決方案比基于軟體RAID技術在使用性能和服務性能上稍勝一籌,具體表現在檢測和修複多位錯誤的能力、錯誤磁盤自動檢測和陣列重建等方面。

<b></b>

2.RAID級别介紹;

一般常用的RAID階層,分别是RAID 0、RAID1、RAID 3、RAID 4以及RAID 5,再加上二合一型 RAID 0+1﹝或稱RAID 10﹞。我們先把這些RAID級别的優、缺點做個比較:

RAID級别 相對優點 相對缺點

RAID 0 存取速度最快 沒有容錯

RAID 1 完全容錯 成本高

RAID 3 寫入性能最好 沒有多任務功能

RAID 4 具備多任務及容錯功能 Parity 磁盤驅動器造成性能瓶頸

RAID 5 具備多任務及容錯功能 寫入時有overhead

RAID 0+1/RAID 10 速度快、完全容錯 成本高

2.1 RAID0的特點與應用;

也稱為條帶模式(striped),即把連續的資料分散到多個磁盤上存取,如圖所示。當系統有資料請求就可以被多個磁盤并行的執行,每個磁盤執行屬于它自己的那部分資料請求。這種資料上的并行操作可以充分利用總線的帶寬,顯著提高磁盤整體存取性能。因為讀取和寫入是在裝置上并行完成的,讀取和寫入性能将會增加,這通常是運作 RAID 0 的主要原因。但RAID 0沒有資料備援,如果驅動器出現故障,那麼将無法恢複任何資料。

2.2 RAID 1 的特點與應用;

RAID 1又稱為鏡像(Mirroring),一個具有全備援的模式,如圖所示。RAID 1可以用于兩個或2xN個磁盤,并使用0塊或更多的備用磁盤,每次寫資料時會同時寫入鏡像盤。這種陣列可靠性很高,但其有效容量減小到總容量的一半,同時這些磁盤的大小應該相等,否則總容量隻具有最小磁盤的大小。

2.3 RAID 3特點與應用;

RAID 3 是将資料先做XOR 運算,産生Parity Data後,在将資料和Parity Data 以并行存取模式寫入成員磁盤驅動器中,是以具備并行存取模式的優點和缺點。進一步來說,RAID 3每一筆資料傳輸,都更新整個Stripe﹝即每一個成員磁盤驅動器相對位置的資料都一起更新﹞,是以不會發生需要把部分磁盤驅動器現有的資料讀出來,與新資料作XOR運算,再寫入的情況發生﹝這個情況在 RAID 4和RAID 5會發生,一般稱之為Read、Modify、Write Process,我們姑且譯為為讀、改、寫過程﹞。是以,在所有 RAID級别中,RAID 3的寫入性能是最好的。

RAID 3的 Parity Data 一般都是存放在一個專屬的Parity Disk,但是由于每筆資料都更新整個Stripe,是以,RAID 3的 Parity Disk 并不會如RAID 4的 Parity Disk,會造成存取的瓶頸。

RAID 3的并行存取模式,需要RAID 控制器特别功能的支援,才能達到磁盤驅動器同步控制,而且上述寫入性能的優點,以目前的Caching 技術,都可以将之取代,是以一般認為RAID 3的應用,将逐漸淡出市場。

RAID 3 以其優越的寫入性能,特别适合用在大型、連續性檔案寫入為主的應用,例如繪圖、影像、視訊編輯、多媒體、資料倉儲、高速資料撷取等等。

2.4 RAID 4特點與應用;

建立RAID 4需要三塊或更多的磁盤,它在一個驅動器上儲存校驗資訊,并以RAID 0方式将資料寫入其它磁盤,如圖所示。因為一塊磁盤是為校驗資訊保留的,是以陣列的大小是(N-l)*S,其中S是陣列中最小驅動器的大小。就像在 RAID 1中那樣,磁盤的大小應該相等。

如果一個驅動器出現故障,那麼可以使用校驗資訊來重建所有資料。如果兩個驅動器出現故障,那麼所有資料都将丢失。不經常使用這個級别的原因是校驗資訊存儲在一個驅動器上。每次寫入其它磁盤時,都必須更新這些資訊。是以,在大量寫入資料時很容易造成校驗磁盤的瓶頸,是以目前這個級别的RAID很少使用了。

RAID 4 是采取獨立存取模式,同時以單一專屬的Parity Disk 來存放Parity Data。RAID 4的每一筆傳輸﹝Strip﹞資料較長,而且可以執行Overlapped I/O,是以其讀取的性能很好。

但是由于使用單一專屬的Parity Disk 來存放Parity Data,是以在寫入時,就會造成很大的瓶頸。是以,RAID 4并沒有被廣泛地應用。

2.5 RAID 5特點與應用;

在希望結合大量實體磁盤并且仍然保留一些備援時,RAID 5 可能是最有用的 RAID 模式。RAID 5可以用在三塊或更多的磁盤上,并使用0塊或更多的備用磁盤。就像 RAID 4一樣,得到的 RAID5 裝置的大小是(N-1)*S。

RAID5 與 RAID4 之間最大的差別就是校驗資訊均勻分布在各個驅動器上,如圖4所示,這樣就避免了RAID 4中出現的瓶頸問題。如果其中一塊磁盤出現故障,那麼由于有校驗資訊,是以所有資料仍然可以保持不變。如果可以使用備用磁盤,那麼在裝置出現故障之後,将立即開始同步資料。如果兩塊磁盤同時出現故障,那麼所有資料都會丢失。RAID5 可以經受一塊磁盤故障,但不能經受兩塊或多塊磁盤故障。

RAID 5也是采取獨立存取模式,但是其Parity Data 則是分散寫入到各個成員磁盤驅動器,是以,除了具備Overlapped I/O 多任務性能之外,同時也脫離如RAID 4單一專屬Parity Disk的寫入瓶頸。但是,RAI?D 5在座資料寫入時,仍然稍微受到"讀、改、寫過程"的拖累。

由于RAID 5 可以執行Overlapped I/O 多任務,是以當RAID 5的成員磁盤驅動器數目越多,其性能也就越高,因為一個磁盤驅動器再一個時間隻能執行一個 Thread,是以磁盤驅動器越多,可以Overlapped 的Thread 就越多,當然性能就越高。但是反過來說,磁盤驅動器越多,數組中可能有磁盤驅動器故障的機率就越高,整個數組的可靠度,或MTDL (Mean Time to Data Loss) 就會降低。

由于RAID 5将Parity Data 分散存在各個磁盤驅動器,是以很符合XOR技術的特性。例如,當同時有好幾個寫入要求發生時,這些要寫入的資料以及Parity Data 可能都分散在不同的成員磁盤驅動器,是以RAID 控制器可以充分利用Overlapped I/O,同時讓好幾個磁盤驅動器分别作存取工作,如此,數組的整體性能就會提高很多。

基本上來說,多人多任務的環境,存取頻繁,資料量不是很大的應用,都适合選用RAID 5 架構,例如企業檔案伺服器、WEB 伺服器、線上交易系統、電子商務等應用,都是資料量小,存取頻繁的應用。

2.6 RAID 0+1﹝RAID 10﹞的特點與應用;

RAID 0+1/RAID 10,綜合了RAID 0 和 RAID 1的優點,适合用在速度需求高,又要完全容錯,當然經費也很多的應用。 RAID 0和RAID 1的原理很簡單,合起來之後還是很簡單,我們不打算詳細介紹,倒是要談談,RAID 0+1到底應該是 RAID 0 over RAID 1,還是RAID 1 over RAID 0,也就是說,是把多個RAID 1 做成RAID 0,還是把多個 RAID 0 做成RAID 1?

RAID 0 over RAID 1

假設我們有四台磁盤驅動器,每兩台磁盤驅動器先做成RAID 1,再把兩個RAID 1做成RAID 0,這就是RAID 0 over RAID 1:

(RAID 1) A = Drive A1 + Drive A2 (Mirrored)

(RAID 1) B = Drive B1 + Drive B2 (Mirrored)

RAID 0 = (RAID 1) A + (RAID 1) B (Striped)

RAID 1 over RAID 0

假設我們有四台磁盤驅動器,每兩台磁盤驅動器先做成RAID 0,再把兩個RAID 0做成RAID 1,這就是RAID 1 over RAID 0:

(RAID 0) A = Drive A1 + Drive A2 (Striped)

(RAID 0) B = Drive B1 + Drive B2 (Striped)

RAID 1 = (RAID 1) A + (RAID 1) B (Mirrored)

在這種架構之下,如果 (RAID 0) A有一台磁盤驅動器故障,(RAID 0) A就算毀了,當然RAID 1仍然可以正常工作;如果這時 (RAID 0) B也有一台磁盤驅動器故障,(RAID 0) B也就算毀了,此時RAID 1的兩磁盤驅動器都算故障,整個RAID 1資料就毀了。

是以,RAID 0 OVER RAID 1應該比RAID 1 OVER RAID 0具備比較高的可靠度。是以我們建議,當采用RAID 0+1/RAID 10架構時,要先作RAID 1,再把數個RAID 1做成RAID 0。

3. 怎樣選擇Raid級别;

RAID 012345 到底哪一種适合你,不隻是成本問題,容錯功能和傳輸性能的考慮以及未來之可擴充性都應該符合應用的需求。

RAID 在市場上的的應用,已經不是新鮮的事兒了,很多人都大略了解RAID的基本觀念,以及各個不同RAID LEVEL 的區分。但是在實際應用 面,我們發現,有很多使用者對于選擇一個合适的RAID LEVEL,仍然無法很确切的掌握,尤其是對于RAID 0+1 (10),RAID 3, RAID 5之間的選擇取舍,更是舉棋不定。

3.1 RAID條切“striped”的存取模式;

在使用資料條切﹝Data Stripping﹞ 的RAID 系統之中,對成員磁盤驅動器的存取方式,可分為兩種:

并行存取﹝Paralleled Access﹞

獨立存取﹝Independent Access﹞

RAID 2和RAID 3 是采取并行存取模式。

RAID 0、RAID 4、RAID 5及RAID 6則是采用獨立存取模式。

3.2 平行存取模式;

并行存取模式支援裡,是把所有磁盤驅動器的主軸馬達作精密的控制,使每個磁盤的位置都彼此同步,然後對每一個磁盤驅動器作一個很短的I/O資料傳送,如此一來,從主機來的每一個I/O 指令,都平均分布到每一個磁盤驅動器。

為了達到并行存取的功能,RAID 中的每一個磁盤驅動器,都必須具備幾乎完全相同的規格:轉速必須一樣;磁頭搜尋速度﹝Access Time﹞必須相同;Buffer 或Cache的容量和存取速度要一緻;CPU處理指令的速度要相同;I/O Channel 的速度也要一樣。總而言之,要利用并行存取模式,RAID 中所有的成員磁盤驅動器,應該使用同一廠牌,相同型号的磁盤驅動器。

3.2.1 并行存取的基本工作原理;

假設RAID中共有四部相同規格的磁盤驅動器,分别為磁盤驅動器A、B、C和D,我們在把時間軸略分為T0、T1、T2、T3和T4:

T0: RAID控制器将第一筆資料傳送到A的Buffer,磁盤驅動器B、C和D的Buffer都是空的,在等待中

T1: RAID控制器将第二筆資料傳送到B的Buffer,A開始把Buffer中的資料寫入扇區,磁盤驅動器C和D的Buffer都是空的,在等待中

T2: RAID控制器将第三筆資料傳送到C的Buffer,B開始把Buffer中的資料寫入扇區,A已經完成寫入動作,磁盤驅動器D和A的Buffer都是空的,在等待中

T3: RAID控制器将第四筆資料傳送到D的Buffer,C開始把Buffer中的資料寫入扇區,B已經完成寫入動作,磁盤驅動器A和B的Buffer都是空的,在等待中

T4: RAID控制器将第五筆資料傳送到A的Buffer,D開始把Buffer中的資料寫入扇區,C已經完成寫入動作,磁盤驅動器B和C的Buffer都是空的,在等待中

如此一直循環,一直到把從主機來的這個I/O 指令處理完畢,RAID控制器才會受處理下一個I/O 指令。重點是在任何一個磁盤驅動器準備好把資料寫入扇區時,該目的扇區必須剛剛好轉到磁頭下。同時RAID控制器每依次傳給一個磁盤驅動器的資料長度,也必須剛剛好,配合磁盤驅動器的轉速,否則一旦發生 miss,RAID 性能就大打折扣。

3.2.2 并行存取RAID的最佳應用;

并行存取RAID之架構,以其精細的馬達控制和分布之資料傳輸,将數組中每一個磁盤驅動器的性能發揮到最大,同時充分利用Storage Bus的頻寬,是以特别适合應用在大型、資料連續的檔案存取應用,例如:

影像、視訊檔案伺服器

資料倉儲系統

多媒體資料庫

電子圖書館

印前或底片輸出檔案伺服器

其它大型且連續性檔案伺服器

由于并行存取RAID架構之特性,RAID 控制器一次隻能處理一個I/O要求,無法執行Overlapping 的多任務,是以非常不适合應用在 I/O次數頻繁、資料随機存取、每筆資料傳輸量小的環境。同時,因為并行存取無法執行Overlapping 的多任務,是以沒有辦法"隐藏"磁盤驅動器搜尋﹝seek﹞的時間,而且在每一個I/O的第一筆資料傳輸,都要等待第一個磁盤驅動器旋轉延遲﹝rotational latency﹞,平均為旋轉半圈的時間,如果使用一萬轉的磁盤驅動器,平均就需要等待50 usec。是以機械延遲時間,是并行存取架構的最大問題。

3.3 獨立存取模式;

相對于并行存取模式,獨立存取模式并不對成員磁盤驅動器作同步轉動控制,其對每個磁盤驅動器的存取,都是獨立且沒有順序和時間間格的限制,同時每筆傳輸的資料量都比較大。是以,獨立存取模式可以盡量地利用overlapping 多任務、Tagged Command Queuing等等高階功能,來" 隐藏"上述磁盤驅動器的機械時間延遲﹝Seek 和Rotational Latency﹞。

由于獨立存取模式可以做overlapping 多任務,而且可以同時處理來自多個主機不同的I/O Requests,在多主機環境﹝如Clustering﹞,更可發揮最大的性能。

3.3.1 獨立存取RAID的最佳應用;

由于獨立存取模式可以同時接受多個I/O Requests,是以特别适合應用在資料存取頻繁、每筆資料量較小的系統。例如:

線上交易系統或電子商務應用

多使用者資料庫

ERM及MRP 系統

本文轉自q狼的誘惑 51CTO部落格,原文連結:http://blog.51cto.com/liangrui/369649,如需轉載請自行聯系原作者

繼續閱讀