一、RAID簡介
磁盤陣列,即Redundant Arrays of Inexpensive Disks(RAID),被稱作容錯廉價磁盤陣列。但由於磁盤成本的提高,也有人稱RAID爲Redundant Arrays of Independent Disks,獨立冗餘磁盤陣列。RAID的實現是通過軟件或硬件的方式將多個磁盤整合成一個磁盤設備。並通過選擇不同RAID的等級以及不同RAID的等級之間的組合使用,可以用來提高單一文件系統的容量,提升I/O性能,數據安全和可靠性。RAID等級有0 - 6,以及混合等級01和10,不同等級實現的功能不同。生產環境中幾乎都是使用陣列卡硬件方式實現RAID,軟件實現方式在穩定性和性能方面有極大限制,因此在生產環境中極度不建議軟件方式,在下面不對軟件方式實現進行討論。
二、常用RAID等級(level)
1、RAID-0
RAID-0被稱爲條帶模式,stripe。數據在此種RAID等級是分散存儲,每個磁盤放置所要存儲數據的一部分,讀寫性能得到了提升,需要的磁盤數爲多於或等於兩塊磁盤,磁盤可用空間爲:磁盤數 X 最小磁盤的大小。
上圖爲,當數據寫入RAID時,數據會被切割成一塊一塊,然後依序放到不同的磁盤。一方面讀寫性能得到了提升,但另一方面,由於數據切割分散存儲於不同磁盤,但其中一塊磁盤損壞,RAID上面所有數據都會損壞。因此,從數據安全方面考慮,重要數據不適合使用RAID-0。
2、RAID-1
RAID-1被稱作鏡像模式(mirror),此種模式是讓同一份完整的數據在多塊不同的磁盤上存儲。如下圖,當數據寫入RAID時,把每一份數據複製成相同的兩份,分別放入兩塊磁盤中存放。這種模式可以實現數據備份作用,當其中一塊磁盤損壞時,數據不受影響。但此種模式需要複製多份數據到各個磁盤,在大量寫入的情況下,寫性能會降低;由於可以從不同磁盤讀入數據,因此讀性能會有略微提升。需要的磁盤數爲多於或等於兩塊磁盤,磁盤可用空間爲:磁盤數 X 最小磁盤的大小/ 2。
3、RAID-5
RAID-5對性能和數據備份進行了均衡考慮,實現方式是使用三塊或三塊以上磁盤組成磁盤陣列。數據寫入方式類似於RAID-0,但區別是在每個循壞寫入過程中,輪流在其中一塊磁盤存儲其他幾個磁盤數據的同位校驗碼(parity),同位檢驗碼爲同位其他數據相與或所得,當其中任何一個磁盤損壞時,可通過其他磁盤的校驗碼來重建磁盤的數據。但當多於一塊磁盤損壞時,數據則無法恢復。
RAID-5對讀性能有較好的提升,由於寫入時需要對數據進行同位校驗碼計算,所以寫性能的提升較低於讀性能的提升。磁盤可用空間爲:(磁盤數 - 1) X 最小磁盤的大小。
另外,當其中一塊磁盤損壞後,如果沒有預備磁盤頂替,則每一次讀取數據都需要經過數據校驗計算出損壞磁盤的數據,RAID工作於降級狀態,對性能有極大的影響。RAID 6在RAID 5的基礎上增加多一塊磁盤當校驗盤,即支持兩塊磁盤做校驗盤。
4、RAID 10
RAID 10爲混合類型,即RAID 0 和RAID 1的組合,先把多個磁盤分組組成RAID 1,再把這些分組一起組成RAID 0,形式如下圖所示。當數據寫入時,先以RAID 0方式將數據分散到各個RAID 1組,再以RAID 1的方式複製多份數據在磁盤上完整存儲。
由於工作方式既有RAID 0 又有RAID 1,所以 RAID 1+0 混合模式具有提升讀寫速度,又有數據備份功能,但同一RAID1分組中不允許同時壞兩塊。此種方式需要4塊以上磁盤,磁盤可用空間爲:磁盤數 X 最小磁盤的大小/2。
三、總結
RAID軟件方式實現可通過模式化工具mdadm來實現。但生產環境中一般很少會用到軟件方式實現。上面詳細介紹的爲常用的RAID 等級,還有RAID 2,RAID 3,RAID 4,RAID 6,RAID 01,但這些等級在性能和可靠性上不如常用的RAID等級,生產環境中比較少用到。RAID 10是較爲推薦的等級,它可以實現性能的提升又可以提供數據的安全性,但浪費的磁盤空間比較多,成本較高。選擇哪一種等級需要看業務的需求,從成本,性能,安全等方面綜合考慮,選擇適合的RAID等級。