實際生產中,對於數據讀寫的性能以及數據的可用性要求都比較高。當服務器數量到達一定數量時,磁盤故障基本上是每天都會發生的事情,爲了在磁盤故障的情況下仍然不丟失數據,通常會對磁盤對做陣列劃分,常用的磁盤陣列是RAID(Redundant Arrays of Independent Disks)。
RAID提高數據讀寫性能的主要原理是通過將數據分塊存儲,將數據的讀寫壓力分攤到各個磁盤上來提高性能,多個廉價的普通磁盤可以組成一個大的高性能磁盤。提高數據可用性的原理則是通過數據冗餘來提高數據可用性,當磁盤故障時,由於數據有副本或者校驗位,所以可以將數據重建回來。
常用RAID的優缺點:
1.RAID0
RAID0代表了磁盤中的最高存儲性能,RAID 0提高存儲性能的原理是把連續的數據分散到多個磁盤上存取,這樣,系統有數據請求就可以被多個磁盤並行的執行,每個磁盤執行屬於它自己的那部分數據請求。這種數據上的並行操作可以充分利用總線的帶寬,顯著提高磁盤整體存取性能。
用途:用在swap的場景較多
優點:性能高
缺點:任何一塊盤發生故障,則所有數據損壞
2.RAID1
RAID 1通過磁盤數據鏡像實現數據冗餘,在成對的獨立磁盤上產生互 爲備份的數據。當原始數據繁忙時,可直接從鏡像拷貝中讀取數據,因此RAID 1可以提高讀取性能。RAID 1是磁盤陣列中單位成本最高的,但提供了很高的數據安全性和可用性。當一個磁盤失效時,系統可以自動切換到鏡像磁盤上讀寫,而不需要重組失效的數據。
用途:用於數據備份的較多
優點:數據有冗餘,數據可用性高
缺點:只能使用容量的1/2,成本偏高
3.RAID5
RAID5是RAID0和RAID1的折中,RAID5最少需要3塊磁盤,將數據分散存儲在各個磁盤上,同時添加一個校驗位,如果某一塊磁盤出現故障,可以通過校驗位和現存數據計算出丟失的數據位,從而達到重建的目的。校驗位的計算方式:
P=D1 xor D2 xor D3 … xor Dn (D1,D2,D3 … Dn爲數據塊,P爲校驗,xor爲異或運算)
假如數據D1丟失,則用P代替D1,進行計算:
D1=Pxor D2 xor D3 … xor Dn (D1,D2,D3 … Dn爲數據塊,P爲校驗,xor爲異或運算)
從而恢復出D1的數據
用途:一般作爲RAID10的備選方案,如沒有足夠機器做RAID10情況下又要兼顧性能和可用性時,可以考慮RAID5,業務類型爲順序寫時比較友好
優點:性能和安全性兼顧
缺點:校驗位會浪費一部分空間;另外會有寫懲罰問題,當隨機寫,壞磁盤的時候尤爲嚴重,性能下降比較明顯,因此也限制了RAID5的使用範圍。
4.RAID01
RAID01是先將磁盤分成2組,先分別做RAID0,再將2個RAID0組做RAID1
用途:用的很少,被RAID10替代。當存在一塊壞盤的情況下,RAID10整個陣列不可用的概率低於RAID01。若4塊磁盤分別爲(D1,D2)(D3,D4),12一組,34一組。當做RAID01時,在D1已壞的情況下,整個陣列不可用的概率是2/3,而RAID10的概率爲1/3
優點:性能高,數據可用性高
缺點:只能使用容量的1/2,成本偏高
5.RAID10
RAID10是對2組RAID1再做RAID0,即將2組RAID1看做2塊獨立的磁盤,然後再RAID0。
用途:用途最廣,主流的RAID方案
優點:性能高,數據可用性高
缺點:只能使用容量的1/2,成本偏高