![Debian,如何使用 initramfs 脚本而不是 livecd 更改 md 名称?](https://linux22.com/image/226241/Debian%EF%BC%8C%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8%20initramfs%20%E8%84%9A%E6%9C%AC%E8%80%8C%E4%B8%8D%E6%98%AF%20livecd%20%E6%9B%B4%E6%94%B9%20md%20%E5%90%8D%E7%A7%B0%EF%BC%9F.png)
当 md 仍处于活动状态时,可以更改 md 名称吗?据我所知是不可能的
mdadm -A --update=name --name=ibmlinux-root /dev/md126
ls /dev/md/126_0
/dev/md/126_0
ls /dev/md/ibmlinux-root
error: no such file or directory
只能停止它,更新名称,然后重新组装它
mdadm --stop /dev/md126
mdadm -A --update=name --name=ibmlinux-root /dev/md126
现在的问题... /dev/md126 是一个根设备,安装在 / 上,所以不可能卸载它。
最好的办法是使用 live-cd 重新启动并重命名它,然后重新启动(有效,我已经这样做了很多次)。
但我想要一个更快速、更简单的解决方案,Debian 在这个目录上使用脚本
/usr/share/initramfs-tools/scripts/local-premount
我的想法是创建一个脚本,重命名 md,然后在重新启动后删除脚本。
我已经创建了脚本
vim /usr/share/initramfs-tools/scripts/local-premount/md
#!/bin/sh -e
PREREQ=""
prereqs()
{
echo "$PREREQ"
}
case $1 in
# get pre-requisites
prereqs)
prereqs
exit 0
;;
esac
mdadm --stop /dev/md126
mdadm -A --update=name --name=ibmlinux-root /dev/md126
我使其可执行,更新 initramfs 和 grub
chmod +x /usr/share/initramfs-tools/scripts/local-premount/md
update-initramfs -cv -k all
update-grub2
我重新启动,瞧...新名称为..127! :(
ls /dev/md/127_0
/dev/md/127_0
ls /dev/md/ibmlinux-root
error: no such file or directory
我想念什么?我还尝试将脚本放入 /etc/initramfs-tools/scripts/init-premount/ 中,但没有任何变化。
答案1
我忘记了,我的根阵列是用 0.90 元数据创建的,我用元数据 1.2 重新创建了它(现代 grub 可以毫无问题地启动它),并且要更新名称,我只需编辑 /etc/mdadm/mdadm.conf (元数据 0.90 不允许在 md raid 上命名)
vim /etc/mdadm/mdadm.conf
ARRAY /dev/md/root metadata=1.2 name=root UUID=331728d9:c4d12r4f:f589d3ze:01ab3c17
ARRAY /dev/md/backup metadata=1.2 name=backup UUID=429845f1:d5e24f5g:8135dgte:120ff5c0
更新 initramfs 和 grub 并重新启动。
update-initramfs -cv -k all
update-grub2
shutdown -r now
重启后..
ls /dev/md
ibmlinux:backup ibmlinux:root
使用 initramfs 的脚本也可以将 md127 的名称更改为 md0 或我们想要的任何名称
在 /etc/initramfs-tools/scripts/init-premount 中创建脚本
vim /etc/initramfs-tools/scripts/init-premount/md
#!/bin/sh
# Stop lvm
lvm vgchange -an vg-backup
lvm vgchange -an vg-ppclinux
sleep 3
# Stop raid
mdadm --stop /dev/md126
mdadm --stop /dev/md127
sleep 3
# Assemble with new names
mdadm -A /dev/md0 /dev/sda2 /dev/sdb2
mdadm -A /dev/md1 /dev/sdc1 /dev/sdd1
sleep 3
# Create the symlinks
mkdir /dev/md
ln -sv /dev/md1 /dev/md/ibmlinux:backup
ln -sv /dev/md0 /dev/md/ibmlinux:root
# Start lvm
lvm vgchange -ay vg-ppclinux
lvm vgchange -ay vg-backup
更新权限
chmod 755 /etc/initramfs-tools/scripts/init-premount/md
更新 initramfs 和 grub
update-initramfs -cv -k all
update-grub2
并在重新启动后..
find /dev/md -ls
11344 0 drwxr-xr-x 2 root root 80 nov 8 06:12 /dev/md
11345 0 lrwxrwxrwx 1 root root 8 nov 8 06:12 /dev/md/ibmlinux:root -> /dev/md0
9440 0 lrwxrwxrwx 1 root root 8 nov 8 06:12 /dev/md/ibmlinux:backup -> /dev/md1
我只在日志中收到此错误/警告消息
PV /dev/md0 9:0 is duplicate for PVID ........ on 9:126 /dev/md126 failed to create online file
但一切正常(pvs、lvcreate、mdadm..)