Debian,如何使用 initramfs 脚本而不是 livecd 更改 md 名称?

Debian,如何使用 initramfs 脚本而不是 livecd 更改 md 名称?

当 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..)

相关内容