我有一台 Ubuntu 18.04 服务器,目前无法执行“sudo apt upgrade”。每当我们尝试更新任何软件包时,它都会收到此消息:
/usr/sbin/grub-probe: error: failed to get canonical path of `/dev/mapper/rootvg-rootlv'.
run-parts: /etc/kernel/postrm.d/zz-update-grub exited with return code 1
该服务器仍可正常运行,并且实际上托管着一个经常使用的 PostgreSQL 环境。因此,我不能简单地关闭它,因为我不知道它是否会恢复。目前,我们只是确保定期备份所有数据,同时计划如何修复此问题。
今天,我相信我已经发现了为什么会显示错误消息。对于某些已安装的文件系统,卷组名称似乎缺少一个字母(rootv 而不是 rootvg)。
$ vgs
VG #PV #LV #SN Attr VSize VFree
datavg 1 69 0 wz--n- 4.36t <2.32t
rootvg 1 6 0 wz--n- <891.25g <717.25g
$ cd /dev/mapper; ls -l rootv*
lrwxrwxrwx 1 root root 7 Jan 24 2022 rootv-homelv -> ../dm-2
lrwxrwxrwx 1 root root 7 Jan 24 2022 rootv-rootlv -> ../dm-0
lrwxrwxrwx 1 root root 7 Jan 24 2022 rootv-swaplv -> ../dm-1
lrwxrwxrwx 1 root root 7 Jan 24 2022 rootv-tmplv -> ../dm-3
lrwxrwxrwx 1 root root 8 Jun 27 13:43 rootvg-chrootlv -> ../dm-46
lrwxrwxrwx 1 root root 8 Aug 13 10:54 rootvg-inbacklv -> ../dm-74
我不确定发生了什么,为什么会变成这样,因为我确定我们最初创建它们时使用的是全名,但不管怎样,现在就是这样了。所以如何解决这个问题是下一个问题。
这是我的想法:
我可以创建到同一设备的第二个链接吗?
例如:如果我发出命令:ln -f -s /dev/dm-0 /dev/mapper/rootvg-rootlv
那么我将有两个指向同一 dm 设备文件的链接
lrwxrwxrwx 1 root root 7 Jan 24 2022 rootv-rootlv -> ../dm-0
lrwxrwxrwx 1 root root 7 Nov 08 16:43 rootvg-rootlv -> ../dm-0
是否可以先执行此操作,然后删除错误的链接,然后重新启动?或者(以您的意见或知识而言),执行此操作会导致系统崩溃或出现更严重的问题?有人遇到过类似的问题吗?
我很想知道 /dev/mapper 中的 VG 名称如何从其原始值发生变化,但我很乐意想出一个不涉及从头开始重新安装的解决方案。
谢谢。
史蒂夫·N。
答案1
关于我在 Ubuntu Server 18.04 系统上遇到的这个问题,我有一些反馈。如上所示,我在目录中/dev/mapper
为缺失的“rootvg”卷组链接创建了一个重复链接,并且/或者以某种方式将其重命名为“rootv”。仍然不确定是什么原因造成的,但我们创建了额外的链接,试图解决这个问题并尝试让这个服务器正常工作。额外的链接确实解决了眼前的问题……我能够使用apt update
并apt upgrade
应用所有可用的软件包修复程序。
最大的问题是这是否会在启动时造成任何问题。答案是“是也不是”。是的,我们在重新启动服务器时遇到了问题,但这似乎与创建的双链接无关。
事实证明,这台服务器还存在其他问题,可能与原始问题有关(在服务器启动时,卷组名称不知何故从 rootvg 更改为 rootv)。检查使用/etc/fstab
和findmnt
命令blkid
,我们可以看到 UUID 值全都混淆了。举个例子,见下文。根 (/) 的 UUID 指向的是不同的卷组。
/
[ ] target exists
[ ] UUID=b134557d-89d0-4270-ae6d-5c9a8b4c1598 translated to /dev/mapper/datavg-applv
[ ] source /dev/mapper/datavg-applv exists
[ ] FS type is ext4
在随后的重新启动过程中,服务器出现错误,甚至无法启动到维护 shell。我们最终在 rootvg 卷组上重新安装了 Ubuntu 18.04,然后使用它vgchange
正确导入 datavg 区域。
重新安装 Ubuntu 后,各种系统文件的内容都丢失了,必须重新创建,例如/etc/hosts
。用户和组都消失了,必须重建。CUPS 打印机仍然存在,不受影响。
长话短说,在这种情况下,我们似乎无法使用指示的额外链接保存系统设置。但我们正在将其作为一次学习经验,以确定下次如果再次发生这种情况该怎么做。
希望其他人可以通过这里的例子来学习,或者对可能出错的地方提出建议。我对此的唯一想法是,它可能与我们创建的 chroot 区域有关,并使用绑定挂载来共享来自原始位置的数据(例如/home/UserA
绑定挂载到/var/chroot/home/UserB/homedirA
)