我在使用' vgrename'之后努力更新grub2在Centos 7中我的根VG。 我跑了' vgrename'成功,然后使用VG名称编辑/ etc / fstab,然后编辑' GRUB_CMDLINE_LINUX ='在/ etc / default / grub中使用新的VG名称,然后尝试运行grub2-mkconfig。在这一点上我得到了错误:
# grub2-mkconfig
/usr/sbin/grub2-probe: error: failed to get canonical path of ‘/dev/mapper/centos_prod--stor01-root’.
它指向的这个规范路径是旧的VG名称。我不明白这一点,因为我认为更新/ etc / default / grub中的VG名称会解决这个问题吗? 任何帮助表示赞赏:)
答案 0 :(得分:2)
我不确定是否所有步骤都是必需的,或者是否需要更多步骤,但我希望以下内容有所帮助。
对于SLES 12 SP1,我必须在执行 vgrename 或 lvrename 后修改以下文件:
在/ etc / default / grub中,我还添加了以下行:
之后,你必须使用grub2-mkconfig重新制作grub配置;但是,如果要修改设备路径,则此脚本似乎存在问题。我不得不修改一条线(对我来说应该是159,应该很近):
关键区别在于 true 部分。否则,grub2-probe将抛出一个错误,传播到grub2-mkconfig,因为它找到当前设备而不是新设备的位置。
我没有运行grub2-mkconfig,而是运行了mkinitrd,它运行了dracut,允许内核加载正确的文件系统来启动。
答案 1 :(得分:1)
这种烦恼是由于grub2的错误假设造成的。
如果我运行vgrename centos7 vg_centos7
来更改卷组的名称,则:
# df -h /
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/centos7-root 6.5G 1.3G 5.3G 20% /
# ls /dev/mapper
control vg_centos7-root vg_centos7-swap
已安装卷的名称和/dev/mapper
符号链接不再匹配。在这种情况下,grub2使用当前已安装的卷的名称(centos7-root),并且在/dev/mapper/
中找不到它时失败(因为它刚刚被重命名为vg_centos-root)。
您可以重新安装并chroot来解决此问题,如下所示:
mount /dev/mapper/vg_centos-root /mnt
mount --bind /dev /mnt/dev
mount --bind /proc /mnt/proc
mount --bind /sys/ /mnt/sys
mount --bind /boot/ /mnt/boot
cat << EOF | chroot /mnt
grub2-mkconfig --output=/boot/grub2/grub.cfg
exit
EOF
umount /mnt/boot
umount /mnt/sys
umount /mnt/proc
umount /mnt/dev
umount /mnt