raid的作用主要是用來提高磁盤的讀寫速率和提高數據的容錯率。
常見的raid級別有:
raid0,raid1,raid5,raid10等
raid0:
理論上創建raid0至少需要兩塊盤,每一塊盤都用做讀寫數據,也就是說:一個數據會拆分成多個,分別寫入到每塊磁盤中,讀取數據的時候也會從每塊盤中讀取。優點:大大提高了數據的讀寫速率;缺點:容錯率很差,只要其中一個塊盤壞了,數據就不可用。
raid0的磁盤利用率爲100%。
另外在實際生產環境中一塊盤也能做raid0.
raid1:
創建raid1需要兩塊盤,其中一塊盤作數據盤,用來存儲數據,另一塊爲鏡像盤,用來備份數據。優點:容錯率高,允許壞掉一塊盤,不會破壞數據,讀取速率比一塊盤要高;缺點:因爲一份數據要寫入兩塊盤,所以寫入數據速率低,另外成本高,磁盤的利用率只有50%。
raid5:
創建raid5至少需要三塊盤,其中兩塊輪流作爲數據盤,用來存儲數據,另外一塊作爲校驗盤。優點:容錯率高,允許壞掉一塊盤,不會破壞數據,當其中一塊盤壞了之後,可通過校驗盤恢復破壞的數據,如果校驗盤壞了可通過兩塊盤的數據恢復校驗盤,讀寫性能略有提升;缺點成本較高,不能同時壞兩塊盤。磁盤利用率爲(n-1)/n
raid6和raid5差不多,raid6至少需要4塊盤,兩塊做校驗盤。
raid10:
創建raid10至少需要四塊盤,先兩兩做成raid1再做成raid0;磁盤利用率爲1/2.
另外在生產環境中常用的還用一種jbod的直通模式,就是系統和磁盤直連,在做hadoop大數據中經常需要這種模式。
如,軟raid1創建:
首先需要兩塊盤,這裏我創建兩個同樣大小的邏輯分區 sdb5和sdb6.
之後將其格式化mkfs.ext4 /dev/sdb5,mkfs.ext4 /dev/sdb6
使用mdadm模塊將其創建成raid1(如果沒有mdadm需要安裝)
創建raid1: mdadm -C /dev/md0 -a yes -l 1 -n 2 /dev/sdb5 /sdb6
-C 創建,-a yes自動創建文件系統,-l raid級別,-n 磁盤數量
查看raid1狀態:mdadm -D /dev/md0(-D 打印信息)
[root@localhost ~]# mdadm -D /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Fri Aug 10 15:19:55 2018
Raid Level : raid1
Array Size : 521792 (509.65 MiB 534.32 MB)
Used Dev Size : 521792 (509.65 MiB 534.32 MB)
Raid Devices : 2
Total Devices : 2
Persistence : Superblock is persistent
Update Time : Fri Aug 10 15:19:59 2018
State : clean
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0
Name : localhost.localdomain:0 (local to host localhost.localdomain)
UUID : fa32332d:ee855ef9:a94fe472:820b3fec
Events : 17
Number Major Minor RaidDevice State
0 8 21 0 active sync /dev/sdb5
1 8 22 1 active sync /dev/sdb6
[root@localhost ~]# cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sdb6[1] sdb5[0]
521792 blocks super 1.2 [2/2] [UU]
unused devices: <none>
我們知道raid1是有一塊備份盤的,允許破壞一塊盤而不破壞數據,現在模擬一下,使用watch命令來監控raid的狀態:watch -n 1 "cat /proc/mdstat" ,每隔一秒打印raid信息。
現在我們破壞其中一塊盤:
mdadm /dev/md0 --fail /dev/sdb5可以看到其中一塊盤破壞了
[root@localhost ~]# cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sdb6[1] sdb5[0](F) #F fail表示破壞
521792 blocks super 1.2 [2/1] [_U] # 看到只有一個U up
unused devices: <none>
使用mdadm -D /dev/md0查看
Number Major Minor RaidDevice State
0 0 0 0 removed
1 8 22 1 active sync /dev/sdb6
/dev/sdb5破壞後需要將其移除:mdadm /dev/md0 --remove /dev/sdb5
添加另一塊好的盤將raid1恢復:mdadm /dev/md0 --add /dev/sdb5,恢復後
Number Major Minor RaidDevice State
2 8 21 0 active sync /dev/sdb5
1 8 22 1 active sync /dev/sdb6
停止raid:mdadm -S /dev/md0
啓動raid:mdadm -A /dev/md0 /dev/sdb5 /dev/sdb6
如需自動裝配需要寫入配置文件:mdadm -D --scan > /etc/mdadm.conf
更多的參數使用man mdadm查看,另外軟raid在實際生產線上用的非常少,因爲一旦系統破壞磁盤的數據就毀了,所以一般使用硬raid。