在我的 mdadm 軟體 RAID 上刪除/添加驅動器後,如何修復我的伺服器以正確啟動
我為安裝在
/mnt/data
. 我的系統未在其上啟動(/
並且位於不屬於任何 RAID 陣列/boot
的專用驅動器上)。我通過 mdadm(軟體 RAID)在 Ubuntu 12.04 上為我的 3 個磁碟 RAID-5 軟體陣列添加了第 4 個驅動器。
/dev/sdb1
我的dev/sdc1
RAID陣列包含/dev/sdd1.
我使用該命令添加了第四個驅動器:
mdadm --add /dev/md0 /dev/sde
然後,我升級了陣列以將其轉換為 RAID-6 RAID:
mdadm --grow /dev/md0 --raid-devices 4 --level 6 --backup-file=backup/raid-backup-file
它工作得很好。伺服器工作正常,啟動時沒有問題。唯一的問題是我看到我將第 4 個驅動器添加為整個驅動器。我應該 add
/dev/sde1
而不是 sde !為了清理它,我刪除了驅動器並再次添加它,但這次是分區:
mdadm /dev/md0 --fail /dev/sde --remove --/dev/sde mdadm --add /dev/md0 /dev/sde1
遷移後,它工作了(陣列可訪問),但在下次啟動時,我收到一條消息說 RAID 陣列已降級,因為 /dev/sde 失去(我的所有驅動器都被標記為備用)並進入 initramfs 提示符。退出該外殼後,伺服器繼續啟動,而不從我的 RAID 陣列安裝數據分區。
登錄後,我能夠停止 RAID 陣列並通過以下方式對其進行重新排序:
mdadm --stop /dev/md0 mdadm --assemble /dev/md0 /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1
然後掛載文件系統。所有數據都在那裡,RAID 陣列很乾淨。
但是,系統不再正常啟動。我最後一次嘗試是移除最後一個驅動器並將 RAID-6 陣列再次更改為 RAID-5:
mdadm /dev/md0 --remove /dev/sde1 mdadm --grow /dev/md0 --raid-devices 3 --level 5 --backup-file=backup/raid-backup-file
但這並沒有解決問題。在啟動時,系統說陣列已降級並且仍然缺少驅動器 sde。
退出 initramfs shell 後,登錄並像以前一樣重新組裝數組,數組是乾淨的,請參閱
cat /proc/mdstat Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] md0 : active raid5 sdb1[0] sdd1[2] sdc1[1] 3907026816 blocks level 5, 64k chunk, algorithm 2 [3/3] [UUU]
在驅動器發現(sda、sdb、sdc、sde)和網卡發現之後,我還在核心消息中發現了那條奇怪的行:
md: bind<sde>
那是從哪裡來的,我該如何改變呢?
我的 RAID 陣列根本不應該包含對 /dev/sde 的任何引用。
我在數組中第一次更改時沒有更新 initramfs,之後我嘗試過,但這並沒有改變任何東西。
順便說一句,這是我的 /etc/mdadm.conf :
DEVICE partitions CREATE owner=root group=disk mode=0660 auto=yes HOMEHOST <system> MAILADDR root ARRAY /dev/md0 metadata=0.90 UUID=4d84e24c:e40f825f:3ba42e3c:267295e2
sde 設備上必須有一些 md 元數據。
- 從 RAID 設備中刪除 sde1。
- 完全擦除 sde md 元數據(使用 dd 並取決於元數據的版本及其在磁碟上的位置),例如:
dd if=/dev/zero of=/dev/sde bs=4096 count=1 seek=1
甚至更好:
mdadm –misc –zero-superblock /dev/sde
- 重新創建您的 sde1 並將其再次添加到 md0 設備並更新您的 mdadm.conf 如果您仍然希望它包含 UUID(如果您首先備份它們,您也可以恢復以前的元數據)