以前都是使用硬體的 Raid (磁碟陣列),不是因為錢多,只是希望當使用的主機發生硬體故障時,能夠第一時間接到新的機器 (當然要選購外接的陣列才方便)。這樣一來,只要不是陣列本身出問題,Linux 開起來基本上都可以繼續工作,如此就可以慢慢查主機的問題,不會被追殺。
最近要用到 Raid 5,手邊也沒有硬體陣列可以用,剛好有機會玩了一下 Linux Soft Raid。Raid 5 儲存機制如下:
![raid_5](https://storage.googleapis.com/stateless-blog-toright-com/2016/04/raid_5-480x310.jpg)
Raid 5 的使用空間為 (N -1) * 單碟最大容量,Raid 5 有個很大的好處,就是同時擁有容錯 (可以壞一顆) 與速度 (資料分散儲存) 兩個優勢,原理是將資料 XOR 運算值分開存放,替換故障硬碟時就可以重新計算出資料。當然也有缺點,因為只能壞一顆,用太多顆的硬碟組陣列,萬一壞兩科就 GG 惹,通常建議 Raid 5 最多五顆就好,誰知道機荒什麼時候會來。
用 mdadm 建立 Raid 5
mdadm 是 Linux 中用來管理與設定 Soft Raid 的工具,Linux Raid 5 是無法做為系統開機碟的,僅能掛載為資料碟,這點要注意喔。假設我們的系統安裝在 /dev/sda,然後另外三顆硬碟 /dev/sdb~d 準備來組成 Raid 5,那麼就可以透過以下命令創建 Raid:
# mdadm --create --auto=yes /dev/md0 --level=5 --raid-devices=3 --spare-devices=0 /dev/sdb1/dev/sdc1 /dev/sdd1
![mdadm-create](https://storage.googleapis.com/stateless-blog-toright-com/2016/03/mdadm-create-640x242.png)
上述命令執行完成後,會在 /dev 產生 /md0 裝置,接著就可以直接 format,命令與執行結果如下:
# mkfs -t ext4 /dev/md0
格式化之後就可以直接 mount 使用囉,蠻簡單的。
硬碟修復測試
聽說 Raid 5 可以壞一顆,於是我當下就開始對硬碟狂寫資料,然後在過程中直接拔掉一顆硬碟 (SATA 可以熱拔插!?),果然可以繼續運作,真是太神奇了。重新接上後就會開始自動修復,可以用以下命令查看 Raid 的狀態:
# cat /proc/mdstat
![mdadm-status](https://storage.googleapis.com/stateless-blog-toright-com/2016/03/mdadm-status-640x154.png)
如果很不幸硬碟壞掉,必須要替換新的硬碟,或者要加入新的硬碟,可以透過以下命令 Stop Raid:
# mdadm --stop /dev/md0
然後就可以繼續透過 mdadm 來重新設定 Raid 囉。