首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >根VG上的vgrename - grub2问题

根VG上的vgrename - grub2问题
EN

Stack Overflow用户
提问于 2015-12-11 23:21:02
回答 3查看 3.4K关注 0票数 3

在CentOS7的根VG上使用'vgrename‘后,我正在努力更新grub2。我成功地运行了'vgrename’,然后使用VG名称编辑了/etc/fstab,然后使用新的VG名称编辑了/etc/default/grub中的'GRUB_CMDLINE_LINUX=‘,然后尝试运行grub2-mkconfig。在这一点上,我得到了错误:

代码语言:javascript
复制
# grub2-mkconfig
/usr/sbin/grub2-probe: error: failed to get canonical path of ‘/dev/mapper/centos_prod--stor01-root’.

它所指向的规范路径是旧的VG名称。我不理解这一点,因为我假设更新/etc/default/grub中的VG名称就可以解决这个问题?感谢您提供的任何帮助:)

EN

回答 3

Stack Overflow用户

发布于 2016-01-13 13:24:42

我不确定是否所有的步骤对于centos来说都是必要的,或者是否需要更多的步骤,但我希望以下步骤能有所帮助。

对于SLES12 SP1,在执行vgrenamelvrename之后,我必须修改以下文件

  • /etc/default/grub
  • /etc/sysconfig/bootloader
  • /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,后者允许内核加载适当的文件系统以进行引导。

票数 3
EN

Stack Overflow用户

发布于 2019-08-16 04:55:30

这种烦恼是由于grub的错误假设造成的。

如果我运行vgrename centos7 vg_centos7来更改卷组的名称,那么:

代码语言:javascript
复制
# 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来解决此问题,如下所示:

代码语言:javascript
复制
mount /dev/mapper/vg_centos-root /mnt
mount --bind /dev /mnt/dev
mount --bind /proc /mnt/proc
mount --bind /sys/ /mnt/sys
mount --bind /run/ /mnt/run
mount --bind /boot/ /mnt/boot

cat << EOF | chroot /mnt
grub-mkconfig --output=/boot/grub/grub.cfg
exit
EOF

umount /mnt/boot
umount /mnt/run
umount /mnt/sys
umount /mnt/proc
umount /mnt/dev
umount /mnt
票数 1
EN

Stack Overflow用户

发布于 2022-01-05 07:07:19

我的方法在CentOS 7和8中运行良好。

当前vg和lvs

代码语言:javascript
复制
# vgs
  VG #PV #LV #SN Attr   VSize    VFree
  cl   1   4   0 wz--n- <325.97g 4.00m
# lvs
  LV      VG Attr       LSize    Pool
  root    cl -wi-ao----  <46.57g

计划将vg名称从cl更改为vg_sys,并将lv名称从root更改为lv_root

重命名vg和lv名称

代码语言:javascript
复制
vgrename -v cl vg_sys
lvrename /dev/cl/root /dev/vg_sys/lv_root

然后修改/etc/fstab、/boot/grub2/grub.cfg、/etc/default/grub、/boot/grub2/grubenv

代码语言:javascript
复制
sed -i 's/cl-root/vg_sys-lv_root/g' /etc/fstab
sed -i 's/cl-root/vg_sys-lv_root/g' /boot/grub2/grub.cfg
sed -i 's/cl\/root/vg_sys\/lv_root/g' /boot/grub2/grub.cfg
sed -i 's/cl-root/vg_sys-lv_root/g' /etc/default/grub
sed -i 's/cl\/root/vg_sys\/lv_root/g' /etc/default/grub
sed -i 's/cl-root/vg_sys-lv_root/g' /boot/grub2/grubenv
sed -i 's/cl\/root/vg_sys\/lv_root/g' /boot/grub2/grubenv

确保所有四个文件都被正确修改。操作系统重启后,它的工作和您计划的一样好。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34226834

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档