磁盤陣列RAID組建知識(shí)全解析
什么是RAID?硬盤組建RAID有什么用?本文就來詳細(xì)說說磁盤陣列RAID相關(guān)知識(shí)和組建方法。
RAID是“Redundant Array of Independent Disk”的縮寫,中文意思是獨(dú)立冗余磁盤陣列。冗余磁盤陣列技術(shù)誕生于1987年,由美國加州大學(xué)伯克利分校提出。
RAID最初的研制目的是為了組合小的廉價(jià)磁盤來代替大的昂貴磁盤,以降低大批量數(shù)據(jù)存儲(chǔ)的費(fèi)用,同時(shí)也希望采用冗余信息的方式,使得磁盤失效時(shí)不會(huì)使對數(shù)據(jù)的訪問受損失,從而開發(fā)出一定水平的數(shù)據(jù)保護(hù)技術(shù),并且能適當(dāng)?shù)奶嵘龜?shù)據(jù)傳輸速度。
早期的RAID方案主要針對SCSI硬盤系統(tǒng),系統(tǒng)成本比較昂貴。1993年,HighPoint公司推出了第一款I(lǐng)DE-RAID控制芯片,能夠利用相對廉價(jià)的IDE 硬盤來組建RAID系統(tǒng),從而大大降低了RAID的“門檻”。從此,個(gè)人用戶也開始關(guān)注這項(xiàng)技術(shù),因?yàn)橛脖P是現(xiàn)代個(gè)人計(jì)算機(jī)中發(fā)展最為“緩慢”和最缺少安全性的設(shè)備,而用戶存儲(chǔ)在其中的數(shù)據(jù)卻常常遠(yuǎn)超計(jì)算機(jī)的本身價(jià)格。在花費(fèi)相對較少的情況下,RAID技術(shù)可以使個(gè)人用戶也享受到成倍的磁盤速度提升和更高的數(shù)據(jù)安全性。目前,IDE/SATA接口標(biāo)準(zhǔn)的硬盤都可以支持RAID技術(shù),不過一般主板芯片組支持的主板只能支持SATA硬盤組建RAID。
早期一般都是SCSI卡提供SCSI RAID的支持
那么為何叫做冗余磁盤陣列呢?冗余的漢語意思即多余,重復(fù)。而磁盤陣列說明不僅僅是一個(gè)磁盤,而是一組磁盤。這時(shí)你應(yīng)該明白了,它是利用重復(fù)的磁盤來處理數(shù)據(jù),使得數(shù)據(jù)的穩(wěn)定性得到提高。
磁盤陣列RAID實(shí)現(xiàn)原理
RAID如何實(shí)現(xiàn)數(shù)據(jù)存儲(chǔ)的高穩(wěn)定性呢?我們不妨來看一下它的工作原理。RAID按照實(shí)現(xiàn)原理的不同分為不同的級別,不同的級別之間工作模式是有區(qū)別的。整個(gè)的RAID結(jié)構(gòu)是一些磁盤結(jié)構(gòu),通過對磁盤進(jìn)行組合達(dá)到提高效率,減少錯(cuò)誤的目的,不要因?yàn)檫@么多名詞而被嚇壞了,它們的原理實(shí)際上十分簡單。問了便于說明,下面示意圖中的每個(gè)圓餅代表一個(gè)磁盤,豎的叫塊或磁盤陣列,橫稱之為帶區(qū)。
簡單點(diǎn)說,RAID的功能就是把多個(gè)硬盤組合成為一個(gè)邏輯磁區(qū),因此,操作系統(tǒng)只會(huì)把它當(dāng)作一個(gè)硬盤。RAID系統(tǒng)的類型有多種方式,如RAID-0,RAID-1,RAID-2,RAID-3,RAID-4,RAID-5,RAID-6,RAID-10,RAID-53等。下面我們分別來看看這些RAID類型的區(qū)別以及用途:
RAID 0
將多個(gè)磁盤合并成一個(gè)大的磁盤,不具有冗余,并行I/O,速度最快。RAID 0亦稱為帶區(qū)集。它是將多個(gè)磁盤并列起來,成為一個(gè)大磁盤。在存放數(shù)據(jù)時(shí),其將數(shù)據(jù)按磁盤的個(gè)數(shù)來進(jìn)行分段,然后同時(shí)將這些數(shù)據(jù)寫進(jìn)這些盤中。 所以,在所有的級別中,RAID 0的速度是最快的。但是RAID 0沒有冗余功能,如果一個(gè)磁盤(物理)損壞,則所有的數(shù)據(jù)都會(huì)丟失。
RAID 1
兩組以上的N個(gè)磁盤相互作鏡像,速度沒有提高,但是允許N-1個(gè)磁盤損壞,可靠性最高。RAID 1就是鏡像。其原理為在主硬盤上存放數(shù)據(jù)的同時(shí)也在鏡像硬盤上寫一樣的數(shù)據(jù)。當(dāng)主硬盤(物理)損壞時(shí),鏡像硬盤則代替主硬盤的工作。因?yàn)橛戌R像硬盤做數(shù)據(jù)備份,所以RAID 1的數(shù)據(jù)安全性在所有的RAID級別上來說是最好的。但無論用多少磁盤做RAID 1,僅算其中一半磁盤的容量, 是所有RAID上磁盤利用率最低的一個(gè)級別。
RAID 2
這是RAID 0的改良版,以漢明碼(en:Hamming Code)的方式將數(shù)據(jù)進(jìn)行編碼后分割為獨(dú)立的位元,并將數(shù)據(jù)分別寫入硬盤中。因?yàn)樵跀?shù)據(jù)中加入了錯(cuò)誤修正碼(ECC,Error Correction Code),所以數(shù)據(jù)整體的容量會(huì)比原始數(shù)據(jù)大一些,RAID2最少要三臺(tái)硬盤方能運(yùn)作。
RAID 3
采用Bit-interleaving(數(shù)據(jù)交錯(cuò)存儲(chǔ))技術(shù),它需要通過編碼再將數(shù)據(jù)位元分割后分別存在硬盤中,而將同位元檢查后單獨(dú)存在一個(gè)硬盤中,但由于數(shù)據(jù)內(nèi)的位元分散在不同的硬盤上,因此就算要讀取一小段數(shù)據(jù)資料都可能需要所有的硬盤進(jìn)行工作,所以這種規(guī)格比較適于讀取大量數(shù)據(jù)時(shí)使用。
RAID 4
它與RAID 3不同的是它在分割時(shí)是以區(qū)塊為單位分別存在硬盤中,但每次的數(shù)據(jù)存取都必須從同位元檢查的那個(gè)硬盤中取出對應(yīng)的同位元數(shù)據(jù)進(jìn)行核對,由于過于頻繁的使用,所以對硬盤的損耗可能會(huì)提高 (Block interleaving)。
RAID 5
RAID Level 5 是一種存儲(chǔ)性能、數(shù)據(jù)安全和存儲(chǔ)成本兼顧的存儲(chǔ)解決方案。它使用的是Disk Striping(硬盤分割)技術(shù)。RAID 5 至少需要三顆硬盤, RAID 5不對存儲(chǔ)的數(shù)據(jù)進(jìn)行備份,而是把數(shù)據(jù)和相對應(yīng)的奇偶校驗(yàn)信息存儲(chǔ)到組成RAID5的各個(gè)磁盤上,并且奇偶校驗(yàn)信息和相對應(yīng)的數(shù)據(jù)分別存儲(chǔ)于不同的磁盤上。當(dāng)RAID5的一個(gè)磁盤數(shù)據(jù)發(fā)生損壞后,利用剩下的數(shù)據(jù)和相應(yīng)的奇偶校驗(yàn)信息去恢復(fù)被損壞的數(shù)據(jù)。 RAID 5可以理解為是RAID 0和RAID 1的折衷方案。RAID 5可以為系統(tǒng)提供數(shù)據(jù)安全保障,但保障程度要比Mirror低而磁盤空間利用率要比Mirror高。RAID 5具有和RAID 0相近似的數(shù)據(jù)讀取速度,只是多了一個(gè)奇偶校驗(yàn)信息,寫入數(shù)據(jù)的速度比對單個(gè)磁盤進(jìn)行寫入操作稍慢。同時(shí)由于多個(gè)數(shù)據(jù)對應(yīng)一個(gè)奇偶校驗(yàn)信息,RAID 5的磁盤空間利用率要比RAID 1高,存儲(chǔ)成本相對較低廉。
RAID 6
同一陣列中容許兩個(gè)硬盤同時(shí)失效(或是當(dāng)一個(gè)失效后還來不及更換便有第二個(gè)失效)后.更換新硬盤時(shí)再由另兩個(gè)正常硬盤將備份的資料建立在新的硬盤中.所以至少必須具備四或四個(gè)以上硬盤才能生效。
RAID 10、RAID 53和RAID 0+1
這種RAIDxy的類型實(shí)際上就是RAID x與RAID y的組合方式。比如說RAID 10就是RAID 1+0,即先組建兩組RAID 1鏡像,然后再將兩組RAID 1鏡像組建成為RAID 0;而RAID 53實(shí)際上就是RAID 5+3模式,很好理解。需要注意到是,RAID 10并不等于RAID 0+1,實(shí)現(xiàn)的順序不一樣,功能也是不一樣的。
JBOD
嚴(yán)格的說,JBOD并不屬于RAID的范疇,只是將多個(gè)磁盤空間合并成一個(gè)大的邏輯磁盤,不具有錯(cuò)誤冗余機(jī)制。資料的存放機(jī)制是由第一顆磁盤開始依序往后存放,即操作系統(tǒng)看到的是一個(gè)大磁盤(由許多小磁盤組成)。但如果磁盤損毀,則該顆硬盤上的所有資料將無法救回。若第一顆硬盤損壞,通常無法作救援(因大部分檔案系統(tǒng)將檔案表存在磁盤前端,即第一顆),失去檔案表即失去一切資料。
JBOD在組建過程中,一般用英文Spanned。
在實(shí)際的應(yīng)用中,RAID2~4并不存在,因?yàn)镽AID5已經(jīng)涵蓋了所需的功能。因此RAID2~4目前只有在研究領(lǐng)域有實(shí)作,而在實(shí)際應(yīng)用上則以RAID 0、1、0+1、5或RAID6為主。但是對于我們普通用戶來說,用的最多的也就是RAID 0、1、0+1和RAID 5,所以本文我們將重點(diǎn)對這幾個(gè)RAID類型進(jìn)行講解。
RAID 0——提高性能,無空間損失
RAID 0是最基本的RAID模式,它的功能是將兩塊/多塊硬盤合并成一塊邏輯磁盤。比如兩塊500GB的硬盤組建RAID 0,那么在系統(tǒng)中我們可以看到有一塊1TB的邏輯磁盤,而并不能看到是兩塊物理硬盤。
RAID 0最大的優(yōu)勢就在于“便于分區(qū)管理”和“提高數(shù)據(jù)傳輸速度”:“便于分區(qū)管理”很容易理解,比如說兩塊500GB的硬盤組建RAID0,你不用考慮分區(qū)的時(shí)候單獨(dú)分區(qū)只能小于500GB,也就是說你可以分兩個(gè)區(qū),第一個(gè)區(qū)800GB,第二個(gè)區(qū)200GB(硬盤實(shí)際容量有損失,在這里我們不做討論)。
當(dāng)然,RAID 0主要是為了提升數(shù)據(jù)傳輸速度而生的,它的原理是當(dāng)系統(tǒng)下達(dá)指令后,會(huì)同時(shí)從每塊硬盤調(diào)用/寫入數(shù)據(jù)。這樣就可以利用每塊塊硬盤傳輸通道所提供的帶寬。相信看到這里大家都明白了,組建RAID 0系統(tǒng)的時(shí)候,理論上硬盤數(shù)量越多,傳輸速度提升就越大。但是在實(shí)際使用中受限于系統(tǒng)IO總線和其他因素的一些影響,還是有一些衰減的,比如一個(gè)磁盤的效能是50MB/秒,兩個(gè)磁盤的RAID 0效能約96MB/秒,三個(gè)磁盤的RAID 0也許是130MB/秒而不是150MB/秒。所以,兩個(gè)磁盤的RAID 0最能明顯感受到效能的提升。
實(shí)際上,我們組建RAID系統(tǒng)的時(shí)候,并不一定要兩塊/多塊容量相等的硬盤,可以用一塊大硬盤和一塊相對容量較小的硬盤組建RAID系統(tǒng),很多JS都說需要兩塊一樣大小的硬盤組建RAID實(shí)際上并不正確。但是當(dāng)硬盤容量不一樣時(shí),會(huì)按照容量最小的硬盤來計(jì)算,并且速度上也會(huì)以最小硬盤為標(biāo)準(zhǔn)。比如說一塊5400RPM的60G硬盤與一塊7200RPM的80G硬盤組建RAID 0系統(tǒng),結(jié)果的總?cè)萘渴?0×2=120GB,而理論速度只會(huì)達(dá)到5400RPM硬盤的兩倍。所以說,如果條件允許,我們還是建議使用兩塊同型號的硬盤組建RAID系統(tǒng)。
雖然RAID 0可以提供更多的空間和更好的性能,但是整個(gè)系統(tǒng)是非常不可靠的,如果出現(xiàn)故障,無法進(jìn)行任何補(bǔ)救。所以,RAID 0一般只是在那些對數(shù)據(jù)安全性要求不高的情況下才被人們使用。
一般來說,RAID 0在組建的時(shí)候,英文名為Striped。
對于數(shù)據(jù)的安全性要求較高的用戶,都會(huì)選擇RAID 1陣列方式。
RAID 1的主要功能是讓數(shù)據(jù)更加安全,它的實(shí)現(xiàn)原理是在往一塊硬盤寫入數(shù)據(jù)的時(shí)候,同時(shí)也向另一塊硬盤寫入數(shù)據(jù),也就是鏡像功能。組建RAID 1陣列的時(shí)候需要2塊以上的硬盤,并且數(shù)量只能是偶數(shù)。如2塊、4塊、6塊、8塊等,因?yàn)樾枰米鰝浞,在?shù)據(jù)的安全性方面是最好的,但是只能利用到磁盤總?cè)萘康囊话搿?/p>
舉例來說,使用兩塊80GB的SATA硬盤組建RAID 1系統(tǒng),在操作系統(tǒng)下顯示的總?cè)萘咳匀皇?0GB,因?yàn)榱硗獾?0GB硬盤用做備份了。如果這兩塊硬盤中的一塊物理損壞,仍然可以從第二塊備份硬盤中恢復(fù)回來。同理,如果使用6塊硬盤組建RAID 1系統(tǒng),其中有3塊用于存放數(shù)據(jù),另外三塊用于備份數(shù)據(jù)。
當(dāng)然,RAID 1仍然可以支持兩塊容量不一樣的磁盤組建陣列,和RAID 0一樣,都是按照容量較小的那一塊做標(biāo)準(zhǔn)。比如使用一塊100GB和120GB的硬盤組建RAID 1,最后得到的總?cè)萘渴?00GB。
由于RAID 1主要的功能是對數(shù)據(jù)進(jìn)行鏡像,所以在寫入數(shù)據(jù)時(shí)磁盤的數(shù)據(jù)傳輸性能是沒有提升的。但是在讀取數(shù)據(jù)的時(shí)候,仍然會(huì)有提升,因?yàn)樗梢酝瑫r(shí)從兩個(gè)硬盤里讀取數(shù)據(jù),也就是說有兩個(gè)供應(yīng)源供應(yīng)數(shù)據(jù)。RAID 1在我們普通用戶中的使用率相對較小,因?yàn)橐话愕挠脩舳忌岵坏脫p失一半的硬盤容量。
RAID 1在組建過程中,一般用英文“Mirror”來代替。
說到這里,想必大家已經(jīng)明白了RAID 10與RAID 0+1是什么意思了,不過目前主板集成的南橋芯片一般都只能支持RAID 0+1,也就是Striped Mirror陣列方式。
RAID 5——性價(jià)比解決方案
RAID 0可以大幅度的提高性能,RAID 1可以保證數(shù)據(jù)的安全性。那么如果既想提高性能,又能保證安全性,最廉價(jià)的解決方案是什么呢?那就是RAID 5!
RAID 5使用至少三塊硬盤來實(shí)現(xiàn)陣列,它既能實(shí)現(xiàn)RAID 0的加速功能也能夠?qū)崿F(xiàn)RAID 1的備份數(shù)據(jù)功能,在陣列當(dāng)中有三塊硬盤的時(shí)候,它將會(huì)把所需要存儲(chǔ)的數(shù)據(jù)按照用戶定義的分割大小分割成文件碎片存儲(chǔ)到兩塊硬盤當(dāng)中,此時(shí),陣列當(dāng)中的第三塊硬盤不接收文件碎片,它接收到的是用來校驗(yàn)存儲(chǔ)在另外兩塊硬盤當(dāng)中數(shù)據(jù)的一部分?jǐn)?shù)據(jù),這部分校驗(yàn)數(shù)據(jù)是通過一定的算法產(chǎn)生的,可以通過這部分?jǐn)?shù)據(jù)來恢復(fù)存儲(chǔ)在另外兩個(gè)硬盤上的數(shù)據(jù)。另外,這三塊硬盤的任務(wù)并不是一成不變的,也就是說在這次存儲(chǔ)當(dāng)中可能是1號硬盤和2好硬盤用來存儲(chǔ)分割后的文件碎片,那么在下次存儲(chǔ)的時(shí)候可能就是2號硬盤和3號硬盤來完成這個(gè)任務(wù)了?梢哉f,在每次存儲(chǔ)操作當(dāng)中,每塊硬盤的任務(wù)是隨機(jī)分配的,不過,肯定是兩塊硬盤用來存儲(chǔ)分割后的文件碎片另一塊硬盤用來存儲(chǔ)校驗(yàn)信息。這個(gè)校驗(yàn)信息一般是通過RAID控制器運(yùn)算得出的,通常這些信息是需要一個(gè)RAID控制器上有一個(gè)單獨(dú)的芯片來運(yùn)算并決定將此信息發(fā)送到哪塊硬盤存儲(chǔ)。
RAID 5同時(shí)會(huì)實(shí)現(xiàn)RAID 0的高速存儲(chǔ)讀取并且也會(huì)實(shí)現(xiàn)RAID 1的數(shù)據(jù)恢復(fù)功能,也就是說在上面所說的情況下,RAID 5能夠利用三塊硬盤同時(shí)實(shí)現(xiàn)RAID 0的速度加倍功能也會(huì)實(shí)現(xiàn)RAID 1的數(shù)據(jù)備份功能,并且當(dāng)RAID 5當(dāng)中的一塊硬盤損壞之后,加入一塊新的硬盤同樣可以實(shí)現(xiàn)數(shù)據(jù)的還原。
下面來分析一下RAID 5如何實(shí)現(xiàn)對數(shù)據(jù)的還原,舉個(gè)例子來說,使用3塊硬盤來構(gòu)成一個(gè)RAID 5陣列,用戶定義的分割文件大小為64K,此時(shí)需要存儲(chǔ)的文件大小為128K。首先,當(dāng)RAID控制器接收到這部分?jǐn)?shù)據(jù)之后利用一定的算法得出校驗(yàn)信息,然后將這128K的文件分割成兩個(gè)大小為64K大小的文件碎片,然后將這兩個(gè)文件碎片同時(shí)分別放往1號硬盤和2號硬盤,最后校驗(yàn)信息被發(fā)往3號硬盤。如果這個(gè)陣列當(dāng)中某個(gè)硬盤損壞了,還是可以恢復(fù)原來的數(shù)據(jù):如果上面用來存儲(chǔ)校驗(yàn)信息的3號硬盤損壞了,可以通過1號和2號硬盤來重新生成校驗(yàn)信息;如果損壞的是1號或者2號硬盤,可以利用3號硬盤上存儲(chǔ)的校驗(yàn)信息重新生成原來的文件碎片。
RAID 5模式并不是一些都好,如果陣列當(dāng)中某塊硬盤上的信息發(fā)生了改變的話,那么就需要重新計(jì)算文件分割碎片,并且,校驗(yàn)信息也需要重新計(jì)算,這時(shí),三個(gè)硬盤都需要重新調(diào)用。
同樣,如果要做RAID 5陣列的話,最好使用相同容量相同速度的硬盤,RAID 5模式的有效容量是陣列中容量最小的硬盤容量乘上陣列中硬盤數(shù)目減去一后的數(shù),這里硬盤數(shù)目要減去一是因?yàn)槠渲杏幸粔K硬盤用來存放校驗(yàn)信息。舉例來說,三塊80GB硬盤組成的RAID 5系統(tǒng),總?cè)萘繒?huì)成為160GB。
RAID 5既能夠?qū)崿F(xiàn)速度上的加倍,同時(shí)也能夠保證數(shù)據(jù)的安全性,所以在很多高端系統(tǒng)當(dāng)中都使用這種RAID模式。