RAID詳解

RAID的由來

    磁盤陣列簡稱RAID(Redundant Arrays of Inexpensive Disks,RAID),有“價格便宜且多餘的磁盤陣列”之意。其原理是利用數組方式來作磁盤組,配合數據分散排列的設計,提升數據的安全性。磁盤陣列主要針對硬盤,在容量及速度上,無法跟上CPU及內存的發展,提出改善方法。磁盤陣列是由很多便宜、容量較小、穩定性較高、速度較慢磁盤,組合成一個大型的磁盤組,利用個別磁盤提供數據所產生的加成效果來提升整個磁盤系統的效能。同時,在儲存數據時,利用這項技術,將數據切割成許多區段,分別存放在各個硬盤上。

    磁盤陣列還能利用同位檢查(Parity Check)的觀念,在數組中任一顆硬盤故障時,仍可讀出數據,在數據重構時,將故障硬盤內的數據,經計算後重新置入新硬盤中。

    磁盤陣列的由來:由美國柏克萊大學(University of California-Berkeley)在1987年,發表的文章:“A Case for Redundant Arrays of Inexpensive Disks”。文章中,談到了RAID這個字彙,而且定義了RAID的5層級。柏克萊大學研究其研究目的爲,反應當時CPU快速的性能。CPU效能每年大約成長30~50%,而硬磁機只能成長約7%。研究小組希望能找出一種新的技術,在短期內,立即提升效能來平衡計算機的運算能力。在當時,柏克萊研究小組的主要研究目的是效能與成本。另外,研究小組也設計出容錯(fault-tolerance),邏輯數據備份(logical data redundancy),而產生了RAID理論。研究初期,便宜(Inexpensive)的磁盤也是主要的重點,但後來發現,大量便宜磁盤組合並不能適用於現實的生產環境,後來Inexpensive被改爲independence



RAID的實現形式

磁盤陣列(RAID)其樣式有三種,一是外接式磁盤陣列櫃、二是內接式磁盤陣列卡,三是利用軟件來仿真

外接式磁盤陣列櫃

    磁盤陣列櫃就是裝配了衆多硬盤的外置的RAID,它有一塊名爲RAID的卡來組織並管理各個磁盤設備。

    RAID卡是用來實現RAID功能的板卡,通常是由I/O處理器SCSI控制器SCSI連接器緩存等一系列零組件構成的。不同的RAID卡支持的 RAID功能不同。支持RADI0、RAID1、RAID3、RAID4、RAID5、RAID10不等。RAID卡可以讓很多磁盤驅動器同時傳輸數據,而這些磁盤驅動器在邏輯上又是一個磁盤驅動器,所以使用RAID可以達到單個的磁盤驅動器幾倍、幾十倍甚至上百倍的速率。這也是RAID卡最初想要解決的問題。可以提供容錯功能,這是RAID卡的第二個重要功能。

下圖爲HP的一款RAID卡

wKiom1fY8JiRZZ1OAAXvEuTfDXU421.gif


磁盤陣列櫃有小的跟個人PC主機箱一樣大的,有大的如小型集裝箱。下圖爲HP的小型磁盤陣列櫃。

wKioL1fY6PqTiu-qAACmLUUN-nY447.jpg


內接式磁盤陣列卡

內接式磁盤陣列卡,通常指內嵌入主板上的RAID芯片

RAID控制芯片的出現

    1993年,HighPoint公司推出了第一款IDE-RAID控制芯片,能夠利用相對廉價的IDE硬盤來組建RAID系統,從而大大降低了RAID的“門檻”。從此,個人用戶也開始關注這項技術,因爲硬盤是現代個人計算機中發展最爲“緩慢”和最缺少安全性的設備,而用戶存儲在其中的數據卻常常遠超計算機的本身價格。在花費相對較少的情況下,RAID技術可以使個人用戶也享受到成倍的磁盤速度提升和更高的數據安全性,現在個人電腦市場上的IDE-RAID控制芯片主要出自HighPoint和Promise公司,此外還有一部分來自AMI公司。   

    面向個人用戶的IDE-RAID芯片一般只提供了RAID 0、RAID 1和RAID 0+1(RAID 10)等RAID規範的支持,雖然它們在技術上無法與商用系統相提並論,但是對普通用戶來說其提供的速度提升和安全保證已經足夠了。隨着硬盤接口傳輸率的不斷提高,IDE-RAID芯片也不斷地更新換代,芯片市場上的主流芯片已經全部支持ATA 100標準,而HighPoint公司新推出的HPT 372芯片和Promise最新的PDC20276芯片,甚至已經可以支持ATA 133標準的IDE硬盤。在主板廠商競爭加劇、個人電腦用戶要求逐漸提高的今天,在主板上板載RAID芯片的廠商已經不在少數,用戶完全可以不用購置RAID卡,直接組建自己的磁盤陣列,感受磁盤狂飆的速度。

    Raid控制芯片則是指控制執行Raid功能的輔助芯片,常見爲Intel ICH5RVIA VT8237SIS 964nVidia nForce3

RAID控制芯片是內嵌在主板上的,在BIOS中可以啓用或關閉RAID功能。

下圖爲內嵌在主板上的RAID控制芯片。

wKiom1fY88nDZzzJAADYqzXflsY455.gif

下圖爲BIOS中的配置RAID的過程

以nForce爲例

    nForce系列芯片組的BIOS裏有關SATA和RAID的設置選項有兩處,都在Integrated Peripherals(整合周邊)菜單內。

    SATA的設置項:Serial-ATA,設定值有[Enabled], [Disabled]。這項的用途是開啓或關閉板載Serial-ATA控制器。使用SATA硬盤必須把此項設置爲[Enabled]。如果不使用SATA硬盤可以將此項設置爲[Disabled],可以減少佔用的中斷資源。

    RAID的設置項在Integrated Peripherals/Onboard Device(板載設備)菜單內,光標移到Onboard Device,按<Enter>進入如子菜單:

wKioL1fY90mD3IyCAACqCP7QMlY209.gif

    其中RAID Config就是RAID配置選項,光標移到RAID Config,按<Enter>就進入如RAID配置菜單:

wKiom1fY-B2zgZAjAACEwPKKo_k345.gif

    菜單的第一項IDE RAID是確定是否設置RAID,設定值有[Enabled], [Disabled]。如果不做RAID,就保持缺省值[Disabled],此時下面的選項是不可設置的灰色。如果做RAID就選擇[Enabled],這時下面的選項才變成可以設置的黃色。IDE RAID下面是4個IDE(PATA)通道,再下面是SATA通道。nForce2芯片組是2個SATA通道,nForce3/4芯片組是4個SATA通道。可以根據你自己的意圖設置,準備用哪個通道的硬盤做RAID,就把那個通道設置爲[Enabled]


    設置完成就可退出保存BIOS設置,重新啓動。這裏要說明的是,當你設置RAID後,該通道就由RAID控制器管理,BIOS的Standard CMOS Features裏看不到做RAID的硬盤了


    BIOS設置後,僅僅是指定那些通道的硬盤作RAID,並沒有完成RAID的組建,前面說過做RAID的磁盤由RAID控制器管理,因此要由RAID控制器的RAID BIOS檢測硬盤,以及設置RAID模式。BIOS啓動自檢後,RAID BIOS啓動檢測做RAID的硬盤,檢測過程在顯示器上顯示,檢測到硬盤後留給用戶幾秒鐘時間,以便用戶按F10 進入RAID BIOS Setup

    這個過程就參考各個廠商的RAID BIOS Setup的設置文檔了。這個過程很簡單,因爲也是跟BIOS相同的圖形界面,因此設置過程按相關提示即可順利完成RAID設置。


軟RAID

    軟件RAID很多情況下已經包含在系統之中,併成爲其中一個功能,如Windows、Netware及Linux。軟件RAID中的所有操作皆由中央處理器負責,所以系統資源的利用率會很高,從而使系統性能降低。軟件RAID是不需要另外添加任何硬件設備,因爲它是靠你的系統——主要是中央處理器的功能——提供所有現成的資源

    軟RAID一般不做實際生產使用,通常用於熟悉RAID的功能。

下面展示Windows中軟RAID的實現

wKiom1fY-zPweYJ9AADl3MbWlvg894.gif

  在Windows中的磁盤管理中可以實現軟RAID功能,它支持RAID 0 、RAID 1、RAID 5三種。

其具體實現方法可以自行查看,這裏不再過多介紹。

  Linux中通過命令mdadm實現。




RAID級別


    簡單來說,RAID是一種把多塊獨立的硬盤(物理硬盤)按不同的方式組合起來形成一個硬盤組(邏輯硬盤),從而提供比單個硬盤更高的存儲性能和提供數據備份技術。根據磁盤陳列的不同組合方式,可以將RAID分爲不同的級別。

    磁盤陣列中針對不同的應用使用的不同技術,稱爲RAID level,而每一level都代表着不同技術,目前業界公認的標準是RAID 0-RAID 6。這個level並不代表技術的高低,level 5並不高於level 1,至於要選擇那一種RAID level的產品,純視用戶的操作環境(operating environment)及應用(application)而定與level的高低沒有必然的關係。



RAID 0又稱爲Stripe或Striping,它代表了所有RAID級別中最高的存儲性能。RAID 0提高存儲性能的原理是把連續的數據分散到多個磁盤上存取,這樣,系統有數據請求就可以被多個磁盤並行的執行,每個磁盤執行屬於它自己的那部分數據請求。這種數據上的並行操作可以充分利用總線的帶寬,顯著提高磁盤整體存取性能

wKioL1fZAe-SL1BfAAAUqqDnYbc374.gif

wKioL1fZAfDCAjkFAABvDMWA0WQ475.gif

RAID 0的侷限性

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


RAID 1又稱爲Mirror或Mirroring,它的宗旨是最大限度的保證用戶數據的可用性可修復性。 RAID 1的操作方式是把用戶寫入硬盤的數據百分之百地自動複製到另外一個硬盤上。由於對存儲的數據進行百分之百的備份,在所有RAID級別中,RAID 1提供最高的數據安全保障。同樣,由於數據的百分之百備份,備份數據佔了總存儲空間的一半,因而,Mirror的磁盤空間利用率低,存儲成本高

wKiom1fZAgiCWo74AAAN11qFMdI127.gif

wKiom1fZAgiiaPqVAAB18Io9w3I391.gif

Mirror雖不能提高存儲性能,但由於其具有的高數據安全性,使其尤其適用於存放重要數據,如服務器和數據庫存儲等領域。


RAID 5 是一種存儲性能、數據安全和存儲成本兼顧的存儲解決方案。RAID 5不對存儲的數據進行備份,而是把數據和相對應的奇偶校驗信息存儲到組成RAID5的各個磁盤上,並且奇偶校驗信息和相對應的數據分別存儲於不同的磁盤上。當RAID5的一個磁盤數據發生損壞後,利用剩下的數據和相應的奇偶校驗信息去恢復被損壞的數據。

wKioL1fZAmSRGrccAAAa5xThue4414.gif

wKioL1fZAmWDRCxdAACsrtR8yRU334.gif

RAID 5可以理解爲是RAID 0和RAID 1的折衷方案。RAID 5可以爲系統提供數據安全保障,但保障程度要比Mirror低而磁盤空間利用率要比Mirror高。RAID 5具有和RAID 0相近似的數據讀取速度,只是多了一個奇偶校驗信息,寫入數據的速度比對單個磁盤進行寫入操作稍慢。同時由於多個數據對應一個奇偶校驗信息,RAID 5的磁盤空間利用率要比RAID 1高,存儲成本相對較低。


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


RAID 7:簡單來說,RAID 7並不僅僅是一種技術,而是一種存儲計算機(Storage Computer )。RAID 7通過使用存儲計算機操作系統(Storage Computer Operating System )來初始化和安排磁盤陣列的所有數據傳輸。它實際上是一套實時事件驅動操作系統,可以把數據轉換成磁盤陣列需要的模式,傳輸到相應的物理存儲驅動器上。


RAID0+1:正如其名字一樣RAID 0+1是RAID 0和RAID 1的組合形式,也稱爲RAID 10。


RAID 0+1是存儲性能和數據安全兼顧的方案。它在提供與RAID 1一樣的數據安全保障的同時,也提供了與RAID 0近似的存儲性能。

由於RAID 0+1也通過數據的100%備份提供數據安全保障,因此RAID 0+1的磁盤空間利用率與RAID 1相同,存儲成本高。

RAID 0+1的特點使其特別適用於既有大量數據需要存取,同時又對數據安全性要求嚴格的領域,如銀行、金融、商業超市、倉儲庫房、各種檔案管理等。



RAID 0+1與RAID 1+0的對比

    大家都知道RAID 0+1是先條帶化,再鏡像,RAID 1+0是先鏡像再條帶化。下面爲大家詳細介紹一下它們的優劣

這兩種RAID配置哪種更好呢?

我們舉個例子,總共6塊硬盤。

RAID 0+1的配置圖如下:

wKioL1fZDaixpEZYAADY-xs2mC4835.jpg

RAID 1+0的配置圖如下:

wKioL1fZDb6RW_VCAADT8sobpTI968.jpg


    針對RAID 0+1,一個Set中的硬盤損壞都會導致該Set損壞。這樣的話,如果A,B兩個Set中都各壞一個硬盤的話,則整個RAID都將損壞。

    而RAID 1+0,只有一個Set中的硬盤都損壞時,纔會導致整個RAID損壞。也就是說當1中的兩塊硬盤都壞掉時,整個RAID都會損壞。只要不是同一個Set中的兩塊硬盤損壞,則整個RAID就不會損壞。

    按概率的角度來講,RAID 0+1損壞第二塊盤導致整個RAID損壞的機率爲(n/2)/(n-1)RAID 1+0 損壞第二塊盤導致整個RAID損壞的機率爲1/(n-1).

    顯然RAID 0+1的穩定性不如RAID 1+0.

    在有硬盤損壞但整個RAID沒有損壞的情況下,RAID 0+1其實就變成了RAID 0,只有一 個Set工作(4塊盤),這樣讀的速度顯然變慢了。

    而RAID 1+0還有7塊盤工作,性能影響較小。

    另外,RAID 0+1在以好盤替代壞盤時,recover的性能將比RAID 1+0慢很多。

    所以在做raid的時候最好做RAID1+0而不做RAID 0+1


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章