Linux
mdadm 在啟動時將錯誤的設備放入陣列中 更正 mdadm.conf 文件
啟動時,它每次都會把它塞滿:
[root][centos ~] cat /proc/mdstat Personalities : [raid6] [raid5] [raid4] md127 : inactive sda[2] sdb[3] 1953524992 blocks unused devices: <none> [root][centos ~] mdadm --stop /dev/md127 mdadm: stopped /dev/md127 [root][centos ~] mdadm --assemble --scan mdadm: /dev/md0 has been started with 4 drives. [root][centos ~] cat /proc/mdstat Personalities : [raid6] [raid5] [raid4] md0 : active raid5 sda1[0] sdd1[3] sdc1[2] sdb1[1] 2930279424 blocks level 5, 1024k chunk, algorithm 2 [4/4] [UUUU] unused devices: <none>
你可以看到它首先檢測到一個 BS md127,然後我必須停止那個,然後重新組裝它,這是一件奇怪的事情,它檢測到兩個 md0,但它是成功的:
[root][centos ~] mdadm -Es ARRAY /dev/md0 UUID=39c28990:e753d835:8b94c90b:72da1a08 ARRAY /dev/md0 UUID=88edc937:2ecbc9bb:8b94c90b:72da1a08
我的 mdadm.conf
[root][centos ~] cat /etc/mdadm.conf DEVICE partitions ARRAY /dev/md0 UUID=88edc937:2ecbc9bb:8b94c90b:72da1a08 MAILADDR root CREATE owner=root group=disk mode=0660 auto=yes HOMEHOST <system>
但最奇怪的是,在 dmesg 中,我認為問題出在:
md: kicking non-fresh sdc from array! md: unbind<sdc> md: export_rdev(sdc) md: kicking non-fresh sdd from array! md: unbind<sdd> md: export_rdev(sdd) async_tx: api initialized (async) xor: automatically using best checksumming function: generic_sse generic_sse: 6532.000 MB/sec xor: using function: generic_sse (6532.000 MB/sec) raid6: int64x1 1664 MB/s raid6: int64x2 2148 MB/s raid6: int64x4 1453 MB/s raid6: int64x8 1457 MB/s raid6: sse2x1 2417 MB/s raid6: sse2x2 3222 MB/s raid6: sse2x4 3429 MB/s raid6: using algorithm sse2x4 (3429 MB/s) md: raid6 personality registered for level 6 md: raid5 personality registered for level 5 md: raid4 personality registered for level 4 raid5: device sda operational as raid disk 2 raid5: device sdb operational as raid disk 3 raid5: allocated 4282kB for md127 2: w=1 pa=0 pr=4 m=1 a=2 r=4 op1=0 op2=0 3: w=2 pa=0 pr=4 m=1 a=2 r=4 op1=0 op2=0 raid5: not enough operational devices for md127 (2/4 failed) RAID5 conf printout: --- rd:4 wd:2 disk 2, o:1, dev:sda disk 3, o:1, dev:sdb raid5: failed to run raid set md127 md: pers->run() failed ...
您可能需要重建您的文件,
initrd
以便其中包含正確的mdadm.conf
文件,因為引導過程必須使用該版本,直到它可以安裝根文件系統。你需要做的是這樣的:
mkinitrd /boot/initrd-<kernel-version>.img <kernel-version>
我在這裡假設您正在使用的 CentOS 版本仍在使用
mkinitrd
- 如果它已切換到,dracut
那麼您將需要:dracut /boot/initramfs-<kernel-version>.img <kernel-version>
無論哪種情況,您都需要先重命名舊文件,然後才能建構新文件。
mdadm 應該能夠組裝 md 設備。似乎看到一些錯誤的驅動器:
md127 : 非活動 sda
$$ 2 $$數據庫$$ 3 $$ 看起來它為 RAID 陣列佔用了整個 sda 和 sdb 磁碟,而不是分區 sda1 sdb1 sdc1 sdd1。
blkid 顯示什麼?mdadm -E /dev/sda 或 mdadm -E /dev/sdb 顯示什麼?
也許超級塊發生了一些奇怪的事情。
正如 TomH 所說,您還應該嘗試重建 initrd。