根VG上的vgrename - grub2问题

时间:2015-12-11 15:21:02

标签: centos7 grub2

我在使用' 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名称会解决这个问题吗? 任何帮助表示赞赏:)

2 个答案:

答案 0 :(得分:2)

我不确定是否所有步骤都是必需的,或者是否需要更多步骤,但我希望以下内容有所帮助。

对于SLES 12 SP1,我必须在执行 vgrename lvrename 后修改以下文件:

  • 的/ etc /默认/平头
  • 的/ etc / SYSCONFIG /引导程序
  • / etc / fstab中

在/ etc / default / grub中,我还添加了以下行:

  • GRUB_DEVICE =的/ dev / VGNAME / LVname
  • GRUB_DEVICE_UUID = e35b6f76-15b7-44ef-8bea-cd2c1ef8a547

之后,你必须使用grub2-mkconfig重新制作grub配置;但是,如果要修改设备路径,则此脚本似乎存在问题。我不得不修改一条线(对我来说应该是159,应该很近):

  • GRUB_DEVICE ="`$ {grub_probe} --target = device /`"的 ||真

关键区别在于 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