RAID(Redundant Array of Independent Disks)是一種將多個獨(dú)立的硬盤組合成一個邏輯磁盤的技術(shù),目的是提高性能或容錯能力。RAID有不同的級別,常見的有RAID0、RAID1、RAID5、RAID10等。下面我們來介紹這些級別的特點(diǎn)和所需的硬盤數(shù)量。
RAID0
RAID0是一種將數(shù)據(jù)分散存儲在多個硬盤上的方法,也稱為條帶化(striping)。它的優(yōu)點(diǎn)是可以提高數(shù)據(jù)傳輸速度,因?yàn)槊總€硬盤只需要讀寫一部分?jǐn)?shù)據(jù)。它的缺點(diǎn)是沒有冗余,如果任何一個硬盤出現(xiàn)故障,整個磁盤陣列就會損壞,數(shù)據(jù)無法恢復(fù)。因此,RAID0適合存儲臨時或不重要的數(shù)據(jù),或者配合其他備份手段使用。
RAID0至少需要兩塊硬盤,可以使用任意數(shù)量的硬盤。每個硬盤的容量不必相同,但是最終的磁盤陣列容量等于最小容量的硬盤乘以硬盤數(shù)量。例如,如果有三塊硬盤,分別為500GB、1TB和2TB,那么RAID0的容量為500GB x 3=1.5TB。
RAID1
RAID1是一種將數(shù)據(jù)完全復(fù)制到多個硬盤上的方法,也稱為鏡像(mirroring)。它的優(yōu)點(diǎn)是可以提高數(shù)據(jù)安全性和可靠性,因?yàn)槊總€硬盤都有一份完整的數(shù)據(jù)副本。如果某個硬盤出現(xiàn)故障,其他硬盤仍然可以正常工作,數(shù)據(jù)不會丟失。它的缺點(diǎn)是降低了存儲空間利用率和寫入性能,因?yàn)槊總€硬盤都要寫入相同的數(shù)據(jù)。
RAID1至少需要兩塊硬盤,可以使用任意偶數(shù)數(shù)量的硬盤。每個硬盤的容量不必相同,但是最終的磁盤陣列容量等于最小容量的硬盤。例如,如果有四塊硬盤,分別為500GB、1TB、2TB和4TB,那么RAID1的容量為500GB。
RAID5
RAID5是一種在多個硬盤上分散存儲數(shù)據(jù)和奇偶校驗(yàn)信息的方法,也稱為奇偶校驗(yàn)(parity)。它的優(yōu)點(diǎn)是可以在提高數(shù)據(jù)傳輸速度的同時,保證一定程度的容錯能力。如果某個硬盤出現(xiàn)故障,其他硬盤上的數(shù)據(jù)和奇偶校驗(yàn)信息可以用來恢復(fù)丟失的數(shù)據(jù)。它的缺點(diǎn)是寫入性能較低,因?yàn)槊看螌懭霐?shù)據(jù)都要計(jì)算和寫入奇偶校驗(yàn)信息。另外,如果超過一個硬盤出現(xiàn)故障,整個磁盤陣列就會損壞,數(shù)據(jù)無法恢復(fù)。
RAID5至少需要三塊硬盤,可以使用任意數(shù)量的硬盤。每個硬盤的容量不必相同,但是最終的磁盤陣列容量等于最小容量的硬盤乘以硬盤數(shù)量減一。例如,如果有五塊硬盤,分別為500GB、1TB、2TB、3TB和4TB,那么RAID5的容量為500GB x (5 - 1)=2TB。
RAID10
RAID10是一種將RAID1和RAID0結(jié)合起來的方法,也稱為鏡像條帶化(mirrored striping)。它的優(yōu)點(diǎn)是可以同時提高數(shù)據(jù)傳輸速度和容錯能力,因?yàn)樗鼘?shù)據(jù)分散存儲在多個鏡像對上。如果某個硬盤出現(xiàn)故障,只要它所在的鏡像對中還有一個硬盤正常工作,數(shù)據(jù)就不會丟失。它的缺點(diǎn)是降低了存儲空間利用率,因?yàn)槊總€硬盤都要存儲一半的數(shù)據(jù)。
RAID10至少需要四塊硬盤,可以使用任意偶數(shù)數(shù)量的硬盤。每個硬盤的容量不必相同,但是最終的磁盤陣列容量等于最小容量的硬盤乘以硬盤數(shù)量除以二。例如,如果有六塊硬盤,分別為500GB、1TB、2TB、3TB、4TB和5TB,那么RAID10的容量為500GB x (6 / 2)=1.5TB。
總結(jié)
RAID級別 最少硬盤數(shù) 容量公式 優(yōu)點(diǎn) 缺點(diǎn)
RAID0 2 N x S 高速 無冗余
RAID1 2 S 高可靠 低空間
RAID5 3 (N - 1) x S 平衡 寫性能低
RAID10 4 (N / 2) x S 高速高可靠 空間利用低
其中,N表示硬盤數(shù)量,S表示最小容量的硬盤。
RAID,全稱Redundant Array of Independent Disks,中文名稱獨(dú)立磁盤冗余陣列,簡稱磁盤陣列。利用虛擬化存儲技術(shù)把多個硬盤組合起來,成為一個或多個硬盤陣列組,目的為提升性能或數(shù)據(jù)冗余,或是兩者同時提升。
在運(yùn)作中,取決于RAID 層級不同,數(shù)據(jù)會以多種模式分散于各個硬盤,RAID 層級的命名會以 RAID 開頭并帶數(shù)字,例如:RAID 0、RAID 1、RAID 5、RAID 6、RAID 7、RAID 01、RAID 10、RAID 50、RAID 60。每種等級都有其理論上的優(yōu)缺點(diǎn),不同的等級在兩個目標(biāo)間獲取平衡,分別是增加數(shù)據(jù)可靠性以及增加存儲器(群)讀寫性能。
簡單來說,RAID把多個硬盤組合成為一個邏輯硬盤,因此,操作系統(tǒng)只會把它當(dāng)作一個實(shí)體硬盤。RAID常被用在服務(wù)器電腦上,并且常使用完全相同的硬盤作為組合。由于硬盤價(jià)格的不斷下降與RAID功能更加有效地與主板集成,它也成為普通用戶的一個選擇,特別是需要大容量存儲空間的工作,如:視頻與音頻制作。
我們一般稱RAID 0、RAID 1、RAID 2、RAID 3、RAID 4、RAID 5、RAID 6為標(biāo)準(zhǔn)RAID,稱JBOD、RAID 7、RAID 01、RAID 10、RAID 50、RAID 53、RAID 60為混合RAID。
標(biāo)準(zhǔn)RAID
RAID 0
RAID 0亦稱為帶區(qū)集。它將兩個以上的磁盤并聯(lián)起來,成為一個大容量的磁盤。在存放數(shù)據(jù)時,分段后分散存儲在這些磁盤中,因?yàn)樽x寫時都可以并行處理,所以在所有的級別中,RAID 0的速度是最快的。但是RAID 0既沒有冗余功能,也不具備容錯能力,如果一個磁盤(物理)損壞,所有數(shù)據(jù)都會丟失,危險(xiǎn)程度與#JBOD相當(dāng)。
RAID 1
兩組以上的N個磁盤相互作鏡像,在一些多線程操作系統(tǒng)中能有很好的讀取速度,理論上讀取速度等于硬盤數(shù)量的倍數(shù),與RAID 0相同。另外寫入速度有微小的降低。只要一個磁盤正常即可維持運(yùn)作,可靠性最高。其原理為在主硬盤上存放數(shù)據(jù)的同時也在鏡像硬盤上寫一樣的數(shù)據(jù)。當(dāng)主硬盤(物理)損壞時,鏡像硬盤則代替主硬盤的工作。因?yàn)橛戌R像硬盤做數(shù)據(jù)備份,所以RAID 1的數(shù)據(jù)安全性在所有的RAID級別上來說是最好的。但無論用多少磁盤做RAID 1,僅算一個磁盤的容量,是所有RAID中磁盤利用率最低的一個級別。
如果用兩個不同大小的磁盤建RAID 1,可用空間為較小的那個磁盤,較大的磁盤多出來的空間也可以分割成一個區(qū)來使用,不會造成浪費(fèi)。
RAID 2
這是RAID 0的改良版,以漢明碼(Hamming Code)的方式將數(shù)據(jù)進(jìn)行編碼后分割為獨(dú)立的比特,并將數(shù)據(jù)分別寫入硬盤中。因?yàn)樵跀?shù)據(jù)中加入錯誤修正碼(ECC,Error Correction Code),所以數(shù)據(jù)整體的容量會比原始數(shù)據(jù)大一些。
RAID 2最少要三臺磁盤驅(qū)動器方能運(yùn)作。
RAID 3
采用Bit-interleaving(數(shù)據(jù)交錯存儲)技術(shù),它需要通過編碼再將數(shù)據(jù)比特分割后分別存在硬盤中,而將同比特檢查后單獨(dú)存在一個硬盤中,但由于數(shù)據(jù)內(nèi)的比特分散在不同的硬盤上,因此就算要讀取一小段數(shù)據(jù)資料都可能需要所有的硬盤進(jìn)行工作,所以這種規(guī)格比較適于讀取大量數(shù)據(jù)時使用。
RAID 4
它與RAID 3不同的是它在分割時是以區(qū)塊為單位分別存在硬盤中,但每次的數(shù)據(jù)訪問都必須從同比特檢查的那個硬盤中取出對應(yīng)的同比特?cái)?shù)據(jù)進(jìn)行核對,由于過于頻繁的使用,所以對硬盤的損耗可能會提高。(塊交織技術(shù),Block interleaving)
RAID 5
RAID Level 5是一種儲存性能、數(shù)據(jù)安全和存儲成本兼顧的存儲解決方案。它使用的是Disk Striping(硬盤分割)技術(shù)。
RAID 5至少需要三個硬盤,RAID 5不是對存儲的數(shù)據(jù)進(jìn)行備份,而是把數(shù)據(jù)和相對應(yīng)的奇偶校驗(yàn)信息存儲到組成RAID5的各個磁盤上,并且奇偶校驗(yàn)信息和相對應(yīng)的數(shù)據(jù)分別存儲于不同的磁盤上。當(dāng)RAID5的一個磁盤數(shù)據(jù)發(fā)生損壞后,可以利用剩下的數(shù)據(jù)和相應(yīng)的奇偶校驗(yàn)信息去恢復(fù)被損壞的數(shù)據(jù)。RAID 5可以理解為是RAID 0和RAID 1的折衷方案。RAID 5可以為系統(tǒng)提供數(shù)據(jù)安全保障,但保障程度要比鏡像低而磁盤空間利用率要比鏡像高。RAID 5具有和RAID 0相近似的數(shù)據(jù)讀取速度,只是因?yàn)槎嗔艘粋€奇偶校驗(yàn)信息,寫入數(shù)據(jù)的速度相對單獨(dú)寫入一塊硬盤的速度略慢,若使用“回寫緩存”可以讓性能改善不少。同時由于多個數(shù)據(jù)對應(yīng)一個奇偶校驗(yàn)信息,RAID 5的磁盤空間利用率要比RAID 1高,存儲成本相對較便宜。
RAID 6
與RAID 5相比,RAID 6增加第二個獨(dú)立的奇偶校驗(yàn)信息塊。兩個獨(dú)立的奇偶系統(tǒng)使用不同的算法,數(shù)據(jù)的可靠性非常高,任意兩塊磁盤同時失效時不會影響數(shù)據(jù)完整性。RAID 6需要分配給奇偶校驗(yàn)信息更大的磁盤空間和額外的校驗(yàn)計(jì)算,相對于RAID 5有更大的IO操作量和計(jì)算量,其“寫性能”強(qiáng)烈取決于具體的實(shí)現(xiàn)方案,因此RAID 6通常不會通過軟件方式來實(shí)現(xiàn),而更可能通過硬件方式實(shí)現(xiàn)。
同一數(shù)組中最多容許兩個磁盤損壞。更換新磁盤后,數(shù)據(jù)將會重新算出并寫入新的磁盤中。
混合RAID
JBOD
JBOD( Just a Bunch Of Disks)在分類上,JBOD并不是RAID的等級。由于并沒有規(guī)范,市場上有兩類主流的做法
使用單獨(dú)的鏈接端口如SATA、USB或1394同時控制多個各別獨(dú)立的硬盤,使用這種模式通常是較高端的設(shè)備,還具備有RAID的功能,不需要依靠JBOD達(dá)到合并邏輯扇區(qū)的目的。
只是將多個硬盤空間合并成一個大的邏輯硬盤,沒有錯誤備援機(jī)制。
數(shù)據(jù)的存放機(jī)制是由第一顆硬盤開始依序往后存放,即操作系統(tǒng)看到的是一個大硬盤(由許多小硬盤組成的)。但如果硬盤損毀,則該顆硬盤上的所有數(shù)據(jù)將無法救回。若第一顆硬盤損壞,通常無法作救援(因?yàn)榇蟛糠治募到y(tǒng)將磁盤分割表(partition table)存在磁盤前端,即第一顆),失去磁盤分割表即失去一切數(shù)據(jù),若遭遇磁盤陣列數(shù)據(jù)或硬盤出錯的狀況,危險(xiǎn)程度較RAID 0更劇。它的好處是不會像RAID 0,每次訪問都要讀寫全部硬盤。但在部分的JBOD數(shù)據(jù)恢復(fù)實(shí)踐中,可以恢復(fù)未損毀之硬盤上的數(shù)據(jù)。同時,因?yàn)槊看巫x寫操作只作用于單一硬盤,JBOD的傳輸速率與I/O表現(xiàn)均與單顆硬盤無異。
RAID 7
RAID 7并非公開的RAID標(biāo)準(zhǔn),而是Storage Computer Corporation的專利硬件產(chǎn)品名稱,RAID 7是以RAID 3及RAID 4為基礎(chǔ)所發(fā)展,但是經(jīng)過強(qiáng)化以解決原來的一些限制。另外,在實(shí)現(xiàn)中使用大量的緩沖存儲器以及用以實(shí)現(xiàn)異步數(shù)組管理的專用即時處理器,使得RAID 7可以同時處理大量的IO要求,所以性能甚至超越了許多其他RAID標(biāo)準(zhǔn)的實(shí)做產(chǎn)品。但也因?yàn)槿绱?,在價(jià)格方面非常的高昂。
RAID 10/01
RAID 10是先分割數(shù)據(jù)再鏡像,再將所有硬盤分為兩組,視為以RAID 1作為最低組合,然后將每組RAID 1視為一個“硬盤”組合為RAID 0運(yùn)作。
RAID 01則是跟RAID 10的程序相反,是先鏡像再將數(shù)據(jù)到分割兩組硬盤。它將所有的硬盤分為兩組,每組各自構(gòu)成為RAID 0作為最低組合,而將兩組硬盤組合為RAID 1運(yùn)作。
當(dāng)RAID 10有一個硬盤受損,其余硬盤會繼續(xù)運(yùn)作。RAID 01只要有一個硬盤受損,同組RAID 0的所有硬盤都會停止運(yùn)作,只剩下其他組的硬盤運(yùn)作,可靠性較低。如果以六個硬盤建RAID 01,鏡像再用三個建RAID 0,那么壞一個硬盤便會有三個硬盤離線。因此,RAID 10遠(yuǎn)較RAID 01常用,零售主板絕大部分支持RAID 0/1/5/10,但不支持RAID 01。
RAID 50
RAID 5與RAID 0的組合,先作RAID 5,再作RAID 0,也就是對多組RAID 5彼此構(gòu)成Stripe訪問。由于RAID 50是以RAID 5為基礎(chǔ),而RAID 5至少需要3顆硬盤,因此要以多組RAID 5構(gòu)成RAID 50,至少需要6顆硬盤。以RAID 50最小的6顆硬盤配置為例,先把6顆硬盤分為2組,每組3顆構(gòu)成RAID 5,如此就得到兩組RAID 5,然后再把兩組RAID 5構(gòu)成RAID 0。
RAID 50在底層的任一組或多組RAID 5中出現(xiàn)1顆硬盤損壞時,仍能維持運(yùn)作,不過如果任一組RAID 5中出現(xiàn)2顆或2顆以上硬盤損毀,整組RAID 50就會失效。
RAID 50由于在上層把多組RAID 5構(gòu)成Stripe,性能比起單純的RAID 5高,容量利用率比RAID5要低。比如同樣使用9顆硬盤,由各3顆RAID 5再組成RAID 0的RAID 50,每組RAID 5浪費(fèi)一顆硬盤,利用率為(1-3/9),RAID 5則為(1-1/9)。
RAID 53
它擁有一個鏡像條帶數(shù)組,硬盤里其中一個條帶就是一個是由3組以上的RAID 5組成RAID 3硬盤陣列。
RAID 60
RAID 6與RAID 0的組合:先作RAID 6,再作RAID 0。換句話說,就是對兩組以上的RAID 6作Stripe訪問。RAID 6至少需具備4顆硬盤,所以RAID 60的最小需求是8顆硬盤。
由于底層是以RAID 6組成,所以RAID 60可以容許任一組RAID 6中損毀最多2顆硬盤,而系統(tǒng)仍能維持運(yùn)作;不過只要底層任一組RAID 6中損毀3顆硬盤,整組RAID 60就會失效,當(dāng)然這種情況的概率相當(dāng)?shù)汀?/p>
比起單純的RAID 6,RAID 60的上層透過結(jié)合多組RAID 6構(gòu)成Stripe訪問,因此性能較高。不過使用門檻高,而且容量利用率低是較大的問題。
軟RAID和硬RAID
根據(jù)實(shí)現(xiàn)模式,RAID又分為軟RAID和硬RAID。
軟件磁盤陣列(Software RAID)
主要由CPU處理數(shù)組存儲作業(yè),缺點(diǎn)為耗損較多CPU資源運(yùn)算RAID,優(yōu)點(diǎn)則是價(jià)格偏低。分類有3種:
基于主板的磁盤陣列:只需要主板支持即可(通常是芯片組內(nèi)置的RAID功能,如Intel Matrix RAID,Intel Rapid Storage Technology),不需要任何磁盤陣列卡。若主板損壞,可能難以購買同款主板重建RAID。
硬件輔助磁盤陣列(Hardware-Assisted RAID):需要一張基于Fake RAID的RAID卡,以及廠商所提供的驅(qū)動程序,但此類RAID卡仍然通過CPU進(jìn)行運(yùn)算。這款RAID較易遷移到其他電腦。RAID功能靠運(yùn)行于操作系統(tǒng)的廠商驅(qū)動程序和CPU運(yùn)算提供。
操作系統(tǒng)的RAID功能:如Linux、FreeBSD、Windows Server等操作系統(tǒng)內(nèi)置RAID功能。
硬件磁盤陣列(Hardware RAID)
RAID卡上內(nèi)置處理器,不需要服務(wù)器的CPU運(yùn)算。優(yōu)點(diǎn)是讀寫性能最快,不占用服務(wù)器資源,可用于任何操作系統(tǒng),也能在系統(tǒng)斷電后,透過備份電池模塊(BBU, Backup Battery Unit)以及非易失性存儲器 (NVRAM)將硬盤讀寫日志檔(Journal)包含的剩余讀寫作業(yè)先記錄在存儲器中,等待電力供應(yīng)撤銷后,再由NVRAM取回日志檔數(shù)據(jù),接著再完成讀寫作業(yè),將剩余讀寫作業(yè)安全完成以確保讀寫完整性。備份電池模塊通常會配合數(shù)組卡的Write-Back緩存模式,借由此存儲器緩存讀寫作業(yè)以得到更高的讀寫性能;但是沒有備份電池模塊的硬件磁盤陣列卡,切勿使用Write-Back緩存模式以免遭遇斷電情形導(dǎo)致讀寫數(shù)據(jù)流失。此外,因?yàn)橛布疟P陣列卡搭載內(nèi)置處理器,所以可以與操作系統(tǒng)分離出來,對硬盤進(jìn)行各種作業(yè),還原作業(yè)的速度也比軟件磁盤陣列快。缺點(diǎn)是其售價(jià)很高。
#磁盤陣列#