獨(dú)立硬盤冗余陣列-RAID
獨(dú)立硬盤冗余陣列(RAID,Redundant Array of Independant Disks),舊稱為廉價(jià)磁盤冗余陣列(Redundant Array of Inexpensive Disks)。1987年美國加州伯克利分校的一篇名為《A Case for Redundant Arrays of Inexpensive Disk(RAID)》論文誕生,這標(biāo)志著RAID技術(shù)的開始。
那么什么是RAID呢?簡單的來講就是把多個(gè)硬盤組合起來,成為一個(gè)硬盤陣列組,操作系統(tǒng)會把它當(dāng)做是一個(gè)硬盤,其性能能夠達(dá)到甚至超過單個(gè)昂貴容量大的硬盤。RAID提供了多種硬盤組合的方式,相比單個(gè)硬盤來說,提高了硬盤得I/O能力。多個(gè)磁盤之間相互冗余,提高了耐用性。
RAID的硬盤組合方式有:RAID-0,RAID-1,RAID-2,RAID-3,RAID-4,RAID-5,RAID-6,RAID-7,RAID10,RAID-01,RAID-50,RAID-53,RAID-60,JBOD。
RAID的實(shí)現(xiàn)模式
Software RAID:
軟件磁盤陣列,由CPU處理和協(xié)調(diào)一個(gè)RAID里面各個(gè)硬盤的作業(yè),這樣就會給CPU帶來較多的運(yùn)算壓力,分為3種:
1)基于主板的的磁盤陣列:通常上是由主板上的芯片組提供RAID功能。
2)硬件輔助磁盤陣列:需要RAID卡和相關(guān)廠商提供的驅(qū)動程序,RAID功能是由驅(qū)動程序和CPU運(yùn)算來提供
3)操作系統(tǒng)的RAID功能:Linux、windows Server等操作系統(tǒng)內(nèi)置的RAID功能
雖然軟RAID實(shí)現(xiàn)的有多種,但是在生產(chǎn)環(huán)境還是不建議使用的。
Hardware RAID:
硬件磁盤陣列,在RAID卡上內(nèi)置了CPU處理器,這樣就不占用服務(wù)器的CPU了。一般硬件磁盤陣列都會有備份的電源模塊和NVRAM(非易失性內(nèi)存),當(dāng)系統(tǒng)斷掉后,備份電源開始供電,將硬盤讀寫的日志保存在內(nèi)存中,當(dāng)系統(tǒng)恢復(fù),備份電源關(guān)閉供電,再在NVRAM讀取日志數(shù)據(jù),繼續(xù)完成上次斷電前沒有完成的作業(yè)。
常用RAID介紹
常用的RAID有:RAID0,RAID-1,RAID-5,RAID6,RAID-10,RAID50。
RAID0
RAID0,也稱條帶卷(striping)。在RAID0中,數(shù)據(jù)會被切成片,按一定順序會被寫到所有的磁盤里面,如下圖:
若一片數(shù)據(jù)被切割成了A1-A8,將存儲在一個(gè)由2塊Disk組成的RAID0,那么第一段數(shù)據(jù)塊A1會被存儲在Disk0中,第二段數(shù)據(jù)塊A2會被存儲在Disk1中,第三段數(shù)據(jù)塊會被存儲在Disk0中,以此類推,這一片數(shù)據(jù)會被均分到2塊磁盤上。
RAID0的優(yōu)缺點(diǎn):
1)速度快,寫和讀的能力得到了提高;
2)RAID0沒有冗余的能力,一旦一塊磁盤出現(xiàn)了故障,則所有的數(shù)據(jù)都將不會恢復(fù);
3)RAID0需要N塊磁盤才能實(shí)現(xiàn)(N>=2);
4)能夠存儲數(shù)據(jù)的大小為N*min(S1,S2,S3,S4....)
在RAID0中有兩個(gè)重要的參數(shù):
條帶寬度:stripe width,它指的是可以被并行寫入的數(shù)據(jù)塊的個(gè)數(shù),也就是實(shí)現(xiàn)RAID0中磁盤的個(gè)數(shù);
條帶大?。簊tripe size,它指的是每次寫入磁盤的數(shù)據(jù)塊的大小,大小一般為2KB或者512KB甚至更大,size越小,數(shù)據(jù)被分割的次數(shù)就越多。stripe size對性能是有一定的影響的,在生產(chǎn)環(huán)境中,需要調(diào)整好。
RAID1
RAID1,鏡像化,在RAID1中,數(shù)據(jù)會被復(fù)制成多份,存儲在多個(gè)磁盤上,如下圖:
若一片數(shù)據(jù)將要被存儲,數(shù)據(jù)會被復(fù)制成多份(取決RAID1的磁盤個(gè)數(shù)),然后存儲到每一個(gè)磁盤上。
RAID1的優(yōu)缺點(diǎn):
1)冗余性和數(shù)據(jù)的可靠性最高,只要不是磁盤同時(shí)損壞了,一般都不會帶來數(shù)據(jù)丟失的問題;
2)RAID1的容量取決容量最小的那個(gè)磁盤,寫入速度也是取決于最小的那個(gè)磁盤,較大的磁盤的剩余空間可 以分區(qū)使用,不會造成浪費(fèi);
3)RAID1的讀取速度理論上來說是磁盤個(gè)數(shù)的倍數(shù);
4)RAID1需要N塊磁盤才能實(shí)現(xiàn)(N>=2)
5)能夠存儲數(shù)據(jù)的大小為min(S1,S2,S3...)
RAID3
RAID3,數(shù)據(jù)類似于RAID0,被條帶化的存儲在多個(gè)磁盤中,數(shù)據(jù)以字節(jié)為單位,與RAID0不同的是,RAID3單獨(dú)使用了一塊獨(dú)立的磁盤用來存儲數(shù)據(jù)的奇偶校驗(yàn)值,如下圖所示:
數(shù)據(jù)被切片存儲在Disk0-2上,同時(shí)計(jì)算處奇偶校驗(yàn)值存儲在Disk3上,這樣即使Disk0-2中損壞一塊磁盤,也能根據(jù)奇偶校驗(yàn)值得到損壞磁盤的數(shù)據(jù)。
RAID3的優(yōu)缺點(diǎn):
1.較高的容錯能力;
2.不適合寫入操作較多的情景,會給校驗(yàn)盤帶來一定的負(fù)載,適合讀取操作較多的應(yīng)用環(huán)境;
3.RAID3需要N塊磁盤(N>=3);
4.能夠存儲數(shù)據(jù)的大小為(N-1)*min(S1,S2,S3,S4....)。
RAID4
和RAID3類似,RAID4不是以字節(jié)為存取單位,RAID4的數(shù)據(jù)以塊(一般為512字節(jié))為單位,如下圖:
以塊為單位帶來的好處就是,減少了奇偶檢驗(yàn)的次數(shù),比如,如果一段數(shù)據(jù)的大小為10個(gè)字節(jié),在RAID3上可能需要計(jì)算2次奇偶檢驗(yàn)值了,但是在RAID4上,10個(gè)字節(jié)都會被放在第一個(gè)磁盤上,并不需要計(jì)算。
RAID4的優(yōu)缺點(diǎn):
1.較高的容錯能力;
2.提高了小量數(shù)據(jù)的I/O能力;
3.RAID4需要N塊磁盤(N>=3);
4.能夠存儲數(shù)據(jù)的大小為(N-1)*min(S1,S2,S3,S4....)。
RAID5
RAID5可以理解成是RAID0和RAID1的折中方案,把數(shù)據(jù)條帶化后存儲,并且將數(shù)據(jù)奇偶檢驗(yàn)值存儲在所有的硬盤上,如下圖:
數(shù)據(jù)被條帶化存儲到了磁盤上,并且每個(gè)磁盤上都能夠存儲奇偶檢驗(yàn)值,其讀寫速度和RAID0差不多,可能寫的時(shí)候要慢一點(diǎn),比較要計(jì)算奇偶檢驗(yàn),這樣,即使壞掉一塊磁盤,只需要更換上好的磁盤,RAID會利用剩下奇偶檢驗(yàn)去重建磁盤上的數(shù)據(jù)。
RAID5的優(yōu)缺點(diǎn):
1)較高的容錯能力;
2)讀寫速度快;
3)RAID4需要N塊磁盤(N>=3);
4)能夠存儲數(shù)據(jù)的大小為(N-1)*min(S1,S2,S3,S4....)。
RAID6
與RAID5類似,只是增加了第二個(gè)獨(dú)立的奇偶檢驗(yàn)信息塊,使用了兩種不同的奇偶檢驗(yàn)算法,如下圖所示:
數(shù)據(jù)仍然是被條帶化得存儲在磁盤上,但是會計(jì)算出兩個(gè)獨(dú)立的奇偶檢驗(yàn)值,相對于RAID5來說有更多的I/O操作和計(jì)算量,所以RAID6通常不會以軟件來實(shí)現(xiàn),一般會使用硬件實(shí)現(xiàn),RAID6也是最常見的磁盤陣列。
RAID6的優(yōu)缺點(diǎn):
1)較高的容錯能力
2)同一RAID6中最多運(yùn)行同時(shí)損壞2塊磁盤,更換磁盤后,數(shù)據(jù)將被重新計(jì)算寫入;
3)RAID6需要N個(gè)磁盤(N>=4);
4)RAID容量為(N-2)*min(s1,s2,s3,...)
RAID 01
RAID 01是一種混合的磁盤陣列,即是RAID0和RAID1的混合,先做條帶,再做鏡像:
RAID01中,同組RAID0只要出現(xiàn)一個(gè)磁盤損壞,那么這個(gè)RAID 0就不能你使用了,值剩下其他組的磁盤運(yùn)作,可靠性較低。
RAID01的優(yōu)缺點(diǎn):
1)數(shù)據(jù)可靠性低
2)RAID01需要N個(gè)磁盤(N>=4)