實驗環境vmware12 系統CentOS6.7 64位
RAID5至少需要三塊硬碟,讀寫資料的時候會将資料分布的讀寫到所有硬碟上
虛拟機設定中,除系統盤外,增加4塊硬碟來做實驗,其中3塊硬碟為活動盤,另一塊做熱備盤
進入系統fdisk -l指令檢視,/dev/sdb、/dev/sdc、/dev/sdd、/dev/sde
目前mdadm版本
如果沒有mdadm指令,需要手動安裝
安裝mdadm軟體
yum -y install mdadm
直接對4塊硬碟做軟raid,其中1塊硬碟為熱備盤
mdadm -C /dev/md5 -a yes -l 5 -n 3 -x 1 /dev/sd[b,c,d,e]
說明:
-C:建立模式
-a {yes|no}:自動建立對應的裝置,yes表示會自動在/dev下建立RAID裝置
-l #:指明要建立的RAID的級别(-l 0 表示建立RAID0)
-n #:使用#個塊裝置來建立此RAID(-n 3 表示用3塊硬碟來建立這個RAID)
-x #:目前陣列中熱備盤隻有#塊(-x 1 表示熱備盤隻有1塊)
此時再通過fdisk -l指令即可看到/dev/md5
檢視raid5狀态
cat /proc/mdstat
mdadm -D /dev/md5
實驗環境的硬碟比較小,是以幾乎是瞬間建立完成,下圖可以看出spare /dev/sde為熱備盤
添加raid5到raid配置檔案中/etc/mdadm.conf(預設此檔案不存在)
echo DEVICE /dev/sd[b,c,d,e] >> /etc/mdadm.conf
mdadm -Ds >> /etc/mdadm.conf
此時就可以格式化磁盤了
mkfs.ext4 /dev/md5
建立挂載點并挂載磁盤
mkdir /raid5
mount /dev/md5 /raid5/
raid5的可用大小為38G,即(3-1)x20G
添加至開機自動挂載
echo "/dev/md5 /raid5 ext4 defaults 0 0" >> /etc/fstab
對/raid5進行寫入測試,随便建立個檔案
touch /raid5/blog.whsir.com
最後需要reboot指令重新開機,測試開機是否自動挂載,raid5是否正常
我在這裡模拟/dev/sdc磁盤故障
mdadm /dev/md5 -f /dev/sdc
檢視重建狀态,因為之前建立raid5的時候設定了一個熱備盤,是以當有故障的磁盤時,熱備盤會自動頂替故障磁盤工作,陣列也會重建,通過cat /proc/mdstat可以看到目前陣列狀态
其中[3/2]的第一位數表示陣列所包含的裝置數,第二位數表示活動的裝置數,因為目前有一個裝置故障,是以第二位數為2,此時陣列以降級模式運作,雖然陣列仍然可用,但是不具有資料備援
[U_U]表示正常使用的裝置是/dev/sdb,/dev/sdd,假如這裡是/dev/sdd出現故障,則變成[UU_]
重建完成後檢視陣列狀态,此時raid恢複正常
接下來移除故障的磁盤
mdadm /dev/md5 -r /dev/sdc
因為剛才模拟損壞了一塊盤,是以目前陣列沒有熱備盤了,是以我們需要在添加一塊新的熱備盤,這裡為了友善,直接将剛才模拟損壞的硬碟再次添加到raid5中
mdadm /dev/md5 -a /dev/sdc
此時/dev/sdc變成了熱備盤,故障測試結束。
軟raid使用了一段時間後,發現磁盤空間不足了,此時就需要向目前軟RAID中增加新的磁盤,提高RAID的空間
關閉目前系統,增加磁盤,因為我是vm實驗環境,關閉虛拟機後直接添加硬碟即可
通過lsblk指令,可以看到剛才添加的磁盤是sdf
向目前raid5中增加一塊硬碟
mdadm /dev/md5 -a /dev/sdf
檢視RAID狀态
剛才向RAID中增加的磁盤,會被當作熱備盤,還需要把熱備盤加入到RAID的活動盤中
mdadm -G /dev/md5 -n4
上圖可以看到,剛新加的/dev/sdf已經變成了活動盤,但是Array Size : 41910272 (39.97 GiB 42.92 GB)并沒有變大,那是因為建構沒有完成。
等cat /proc/mdstat建構完成,RAID的容量就會變成(4-1)x20G,下圖是已經建構完成後的RAID狀态,可以看到Array Size : 62865408 (59.95 GiB 64.37 GB)增加了
但是通過df -Th檢視檔案系統容量發現大小并沒有改變,是以還需要對檔案系統擴容,根據磁盤大小,擴容時間也不相同,是以擴容時耐心等待resize2fs /dev/md5
上圖可以看到擴容成功,資料正常,新增磁盤成功
修改RAID的配置檔案vi /etc/mdadm.conf如下圖所示
最後reboot重新開機系統,确認RAID是否正常