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