为 /dev/mapper 设备创建重复链接 - 后果

为 /dev/mapper 设备创建重复链接 - 后果

我有一台 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 updateapt upgrade应用所有可用的软件包修复程序。

最大的问题是这是否会在启动时造成任何问题。答案是“是也不是”。是的,我们在重新启动服务器时遇到了问题,但这似乎与创建的双链接无关。

事实证明,这台服务器还存在其他问题,可能与原始问题有关(在服务器启动时,卷组名称不知何故从 rootvg 更改为 rootv)。检查使用/etc/fstabfindmnt命令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

相关内容