storage
mdadm
– RAID management toolmdadm
是 Linux 上易於管理 RAID 的工具,可以用來建立、刪除、重組磁碟陣列,平常使用時會自動同步硬碟陣列的資料。運轉過程中如有硬碟故障,會將該硬碟標示為故障並移出陣列,待使用者手動更換新的硬碟並重新加入陣列後繼續同步。
在 Unix-like 的 file system 中,硬碟本身以及硬碟裡面劃分的分割區都會虛擬化成 block device,操作時只需要對 device file 讀寫,device driver 會幫你將 file 的內容與對應的儲存裝置 address 同步,不需要自己面對雜七雜八的儲存裝置。
/dev/sda
/dev/sda1
/dev/sda2
/dev/sdb
/dev/sdb1
/dev/sdb2
當然磁碟陣列也可以虛擬化成 block device,這樣我們一樣只需要對這個 device file 讀寫,device driver 就會處理後續的工作,使用者完全可以當作一般儲存裝置使用。
/dev/md0
(link to /dev/md/0
)/dev/md1
(link to /dev/md/1
)RAID 1 (mirror) 是最簡單的備份方式,將一模一樣的資料放在所有陣列中的硬碟,這邊以此為例介紹如何從 0 開始建立及管理 RAID。
第一步就是安裝 mdadm,使用各自發行版的套件管理工具。
這邊建立一個新的 RAID 1 在 2 顆硬碟的第 1 個分割區上,且有第 3 顆硬碟的第 1 個分割區作為備援。
--level=
: RAID level,這邊是 RAID 1。--raid-devices=
: 使用硬碟數量,這邊是 2 個。--spare-devices=
: 備用硬碟數量,這邊是 1 個。想知道目前所有 RAID 狀態或是各種進度資訊可以查看 /proc/mdstat
。
想知道某個 md device 的資訊,以 md0
為例可以使用以下命令。
開機時需要根據設定重新組合 volume,或是設定更新也可以用這個指令更新硬碟對應到的 volume 分配。
雖然是刪除 volume,但硬碟資料以及 RAID 設定還是存在的,跟剛開機的狀態是一樣的,只要重新 assemble disk array 就可以組回 volume 了。
umount
volume。umount
,fuser -m
可查詢使用中的 process。
mdadm
設定檔位於 /etc/mdadm.conf
,修改後必須重新 assemble disk array 才會生效。