1. 程式人生 > >linux下RAID詳細配置

linux下RAID詳細配置

簡介

RAID是一個我們經常能見到的名詞。但卻因為很少能在實際環境中體驗,所以很難對其原理 能有很清楚的認識和掌握。本文將對RAID技術進行介紹和總結,以期能儘量闡明其概念。

RAID全稱為獨立磁碟冗餘陣列(Redundant Array of Independent Disks),基本思想就是把多個相對便宜的硬碟組合起來,成為一個硬碟陣列組,使效能達到甚至超過一個價格昂貴、 容量巨大的硬碟。RAID通常被用在伺服器電腦上,使用完全相同的硬碟組成一個邏輯扇區,因此作業系統只會把它當做一個硬碟。 RAID分為不同的等級,各個不同的等級均在資料可靠性及讀寫效能上做了不同的權衡。 在實際應用中,可以依據自己的實際需求選擇不同的RAID方案。

一、RAID的原理基礎

在講解RAID的原理基礎之前,我們首先來了解一下傳統磁碟的劣勢。我們知道一臺PC機種都會包含CPU、記憶體、主機板、硬碟、網絡卡等硬體,影響計算機效能的組建包括:CPU、主機板匯流排IO、記憶體IO、硬碟IO、網絡卡IO等。可能我們在一提到影響計算機的效能時,首先想到的就是CPU。但是隨著計算機的發展,特別是對於現代的處理器來說,其運算速度已經是非常快的了,同時我們的記憶體IO速度也已經達到了非常快的地步了(差不多應該有5G每秒),而我們也知道資料都是儲存硬碟上的,所以計算機其實是先將硬碟的資料傳遞給記憶體,然後CPU再從記憶體中載入資料來進行運算的,所以由此看來影響整個計算機效能的因素就是我們的硬碟IO速度了。我們來看看目前流行的硬碟型別及速度(資料可能不準確,不過基本差不多)


我們目前的PC機上基本上都是使用SATA介面的硬碟,讀的速度大概不超過150M/s,寫的速度就更慢了,而生產環境下的服務基本上都是使用SAS(序列SCSI)硬碟,速度最快的是SSD固態硬碟,其速度幾乎是SATA的4-5倍。但是即使是使用SSD固態硬碟,其速度在500M/s左右,也遠遠達不到我們記憶體以及CPU的處理速度。所以,硬碟是絕大多數計算機的效能的瓶頸

所以,現代磁碟的缺陷就是:I/O效能極差,穩定性極差

I/O效能我們剛已經看到了,就算是使用SSD固態硬碟,其還是會大大影響計算機的效能,穩定性差表現在,如果一個硬碟發生了故障或者損壞,那麼這塊硬碟就已經不能再使用了,這如果是在對資料儲存要求特別高的地方來說,其是不可想象的。正因為如此,就誕生了一種新的技術--RAID。

RAID(Redundant Array of Independent Disks)是廉價磁碟冗餘陣列技術的英文縮寫,它的原理就是通過多個磁碟並行執行來提高整個計算機的I/O儲存效能

RAID的評判標準有如下三個:

速度:讀寫速度的提升

磁碟使用率:多磁碟的空間使用率

冗餘性: 能夠支援幾塊磁碟損壞而不丟失資料

所以,基於以上三個評判標準,RAID分為很多種類,稱之為RAID級別,現代RAID一共有7個級別,分別是RAID0~RAID6,但是常用的RAID級別主要是以下四種:

RAID0:提高讀寫效能

RAID1:提高讀寫效能、冗餘性

RAID5:提高讀寫效能、冗餘性(允許1塊硬碟發生故障)

RAID6:提高讀寫效能、冗餘性(執行2塊硬碟發生故障)

下面我們就基於RAID的三個評判標準來看看常用的這四個RAID級別各自的特點

標準RAID

1.21 軟RAID0及特點;

   RAID0稱為條帶化(Striping)儲存,將資料分段儲存於 各個磁碟中,讀寫均可以並行處理。因此其讀寫速率為單個磁碟的N倍(N為組成RAID0的磁碟個數),但是卻沒有數 據冗餘,單個磁碟的損壞會導致資料的不可修復。RAID0 是把兩個或兩個以上容量相同的硬碟或分割槽,通過RAID控制器(硬RAID是通過RAID卡來實現的,軟RAID 是通過軟體來實現的),結合為一個在容量上是RAID0下成員的容量的總和,在寫入時,要向每個硬碟或分割槽同時寫入資料。
    在硬RAID中,RAID0的成員是以整個硬碟為單位的,把兩個硬碟或兩個以上的硬碟通過RAID卡繫結成為一個虛擬的磁碟裝置,而每個硬碟就是RAID0的成員;
    在軟RAID0中,RAID0的成員是整個硬碟或分割槽,容量是加入RAID0的所有成員容量的總和。在RAID0中每個成員的容量都是相同一致的。比如我們把 /dev/sdb 、/dev/sdc、/dev/sdd 三個容量大小為80G的硬碟做成RAID0,這時RAID0裝置的容量就是三個硬碟的總和 80x3=240G。當然我們也可以,在寫入資料時,系統要向每個硬碟同時寫入資料,是以條塊的形式寫入。比如我們存一份資料linuxsir.tar.gz 到RAID0的裝置中,這份資料是分拆成若干份被分散的寫入到RAID0中的每個成員中。只有RAID0中的每個成員正常執行,並且RAID0也正常執行的情況下,這份資料才是完整的。RAID0中任何一個成員(硬碟分割槽)有有問題時,RAID0便不能執行,同時資料也不是完整的;
    RAID0 在讀寫速度上是比較快的,是普通不做RAID的兩倍左右(注:實際速度和機器的硬體配置有關),所以RAID0常被用於對儲存效率要求較高,但對資料安全性要求不高的應用解決方案中;

    安全性:RAID0中有任何一個成員出現故障,整個RAID0就不能被啟用。資料不能保障;


大多數striping的實現允許管理者通過調節兩個關鍵的引數來定義資料分段及寫入磁碟的 方式,這兩個引數對RAID0的效能有很重要的影響。

STRIPE WIDTH

stripe width是指可被並行寫入的 stripe 的個數,即等於磁碟陣列中磁碟的個數。

STRIPE SIZE

也可稱為block size(chunk sizestripe lengthgranularity),指寫入每個磁 盤的資料塊大小。以塊分段的RAID通常可允許選擇的塊大小從 2KB 到 512KB不等,也有更 高的,但一定要是2的指數倍。以位元組分段的(比如RAID3)一般的stripe size為1位元組或者 512位元組,並且使用者不能調整。 stripe size對效能的影響是很難簡單估量的,最好在實際應用中依自己需求多多調整並 觀察其影響。通常來說,減少stripe size,檔案會被分成更小的塊,傳輸資料會更快,但 是卻需要更多的磁碟來儲存,增加positioning performance,反之則相反。應該說,沒有 一個理論上的最優的值。很多時候,也要考慮磁碟控制器的策略,比如有的磁碟控制器會等 等到一定資料量才開始往磁碟寫入。

RAID0至少需要兩塊硬碟,當使用RAID0時,我們在讀寫資料的時候是將資料分開讀寫到多塊硬碟上,所以其讀寫速度是最快的,但是因為多塊硬碟上儲存了資料的一部分,所以當一塊硬碟發生損壞時,其整個RAID的資料也就損壞了。

①空間利用率:所有硬碟空間之和

②效能:所有硬碟讀寫速度之和

③冗餘能力:無

 1.22 軟RAID1及特點;
    RAID1就是把若干相同容量的硬碟或分割槽,成員與成員之間是映象關係。在容量上,RAID1裝置是單個成員的容量。比如兩個80G的硬碟做成RAID1,這個RAID1的裝置容量仍是80G。比如我們寫入一個份資料linuxsir.tar.bz2 到RAID1裝置時,其實是向RAID的每個成員都寫了一份。比如RAID1裝置下有兩個成員/dev/sdb和/dev/sdc ,我們寫入linuxsir.tar.bz2 到RAID1時,/dev/sdb和/dev/sdc都有一份完整的linuxsir.tar.bz2。 所以RAID1是冗餘的陣列,一般被用於安全性要求比較高的應用中。

因為RAID1在由於映象冗餘,所以磁碟利用效率並不高,或者說是“浪費”。這種方案相對來說價效比並不高,一般很少應用。資料讀寫效率要比RAID0慢。
    安全性:RAID1 中只要有一個成員是健康的,RAID1完全可以啟用,而且資料絕對是完整安全的。如果所有的成員有故障,RAID1也就報廢了。


RAID1也是至少需要2塊硬碟,在寫資料的時候就不同於RAID0了,RAID1在寫資料時會將資料複製到多塊硬碟上,即每塊硬碟都會儲存該資料的一個備份,在讀資料時,以提高冗餘性。讀的時候同時從多塊硬碟上讀取資料,以提高讀的效能。

①空間利用率:所有磁碟中最小的那塊(其實在使用RAID時,最好每塊硬碟的大小及型號都一樣)

②效能:讀效能是所有硬碟之和,寫效能有所減弱

③冗餘能力:只要有一塊硬碟正常,資料就正常

1.23 軟RAID5及特點;
    軟RAID5也是冗餘安全的,RAID5是把至少三個硬碟或分割槽通過軟體虛擬成為一個大的儲存裝置。在容量上是(n-1)x單個硬碟(分割槽)容量 ,比如我們用三塊80G硬碟做成RAID5,容量就是兩塊容量的和160G。在寫入上,資料被分拆成若干份,分別向RAID5的每個成員下寫入。比如把linuxsir.tar.bz2寫入RAID5時, 要先把linuxsir.tar.bz2分拆成若干份,分別寫入RAID5成員中。因為涉及到冗餘,所以資料在讀入速度上並不是很快,沒辦法和RAID0相比,但RAID5的寫入資料速度沒有RAID1和RAID0快,也沒有不做RAID的磁碟寫入速度要快;
    因為RAID5在容量損失比較小,有冗餘安全保障,另外寫入速度比較快,從整體上來看,價效比比較高,所以被大範圍內採用;
    安全性:當RAID5中的成員中有一個發生故障時,RAID5一樣能啟動和正常執行,只要n-1(注n>3)塊硬碟或分割槽的不出故障,RAID5上的資料就是安全,對於一個檔案存到RAID5裝置中,只有成員是n-1(注n>3)無故障時,這份檔案才是完整的。 比如RAID5有四個硬碟(或分割槽)做的,當一個硬碟或分割槽掛掉了,並不影響整個RAID5上資料的完整性和安全性。


RAID5至少需要3塊硬碟,RAID5與RAID0類似,讀寫資料的時候會將資料分佈的讀寫到所有硬碟上。但是在寫資料的時候RAID5會對資料進行奇偶校驗運算,並將校驗資訊也儲存在了硬碟上,所以即使我們其中一塊硬碟發生了損壞,RAID5也能通過其他硬碟以及校驗資訊對資料進行恢復使用。但是如果2塊或者2塊以上的硬碟發生了損壞,整個資料也就損壞了。

①空間利用率:1 - 1/n

②效能:讀效能接近RAID0,寫效能相比RAID0要弱一些

③冗餘能力:可以接受1塊硬碟的損壞

1.24軟Raid6及特點


RAID6至少需要4塊硬碟,RAID6與RAID5相類似,讀寫資料的時候會將資料分佈的讀寫到所有硬碟上。在寫資料的時候RAID5會對資料進行奇偶校驗運算,並將校驗資訊也儲存在了硬碟上,但是RAID6會比RAID5多儲存一份校驗資訊,所以RAID6的冗餘性比RAID5就有所提升,可以允許2塊硬碟發生損壞。

①空間利用率:1 - 2/n

②效能:讀效能接近RAID5,寫效能相比RAID5還要弱一些

③冗餘能力:可以接受2塊硬碟的損壞

以上四種RAID級別是我們最常用的四種級別,對於個人PC機來說,可能我們最需要提高的是硬碟儲存效能,所以基本上使用的是RAID0,其讀寫效能得到了最大的提高,但是其冗餘性為0,當硬碟發生損壞時,資料也就損壞了。而在生產環境下的伺服器使用的最多是RAID5或者RAID6,其即提供了讀寫效能,也提供了冗餘性。RAID1通常會對於那些對資料準確性要求及其嚴格的場合才會使用。

我們來總結一下這4個常用的RAID級別各自的優缺點:


原文地址:http://www.cnblogs.com/xiaoluo501395377/archive/2013/05/25/3099464.html

              http://blog.csdn.net/czp11210/article/details/9018111

              http://blog.jobbole.com/83808/