未找到 LVM 卷组

未找到 LVM 卷组

重新启动服务器后,我收到以下错误消息:

Begin: Running /scripts/init-premount … done.
Begin: Mounting root file system … 
Begin: Running /scripts/local-top …
Volume group “ubuntu-vg” not found
Cannot process volume group ubuntu-vg
Begin: Running /scripts/local-premount …
...
Begin: Waiting for root file system …
Begin: Running /scripts/local-block …
mdadm: No arrays found in config file or automatically
Volume group “ubuntu-vg” not found
Cannot process volume group ubuntu vg
mdadm: No arrays found in config file or automatically # <-- approximately 30 times
mdadm: error opening /dev/md?*: No such file or directory
done.
Gave up waiting for root file system device. 
Common problems:
-   Boot args (cat /proc/cmdline)
-   Check rootdelay= (did the system wait long enough?)
-   Missing modules (cat /proc/modules: ls /dev)
ALERT! /dev/mapper/ubuntu--vg-ubuntu--lv does not exist. Dropping to a shell!

系统下降到 initramfs shell (busybox),其中lvm vgscan找不到任何卷组并且ls /dev/mapper仅显示一个条目control

当我启动实时 SystemRescueCD 时,可以找到卷组,并且 LV 可以像往常一样在/dev/mapper/ubuntu--vg-ubuntu--lv.我能够安装它并且 VG 设置为活动状态。所以 VG 和 LV 看起来很好,但在启动过程中似乎有些东西坏了。

Ubuntu 20.04 服务器,LVM 设置在带有 4 个 SSD 的硬件 raid1+0 之上。硬件 RAID 控制器是固件版本为 3.00 的 HPE Smart Array P408i-p SR Gen10 控制器。 RAID 1+0 配置中的四个 HPE SSD 型号 MK001920GWXFK。服务器型号为 HPE Proliant DL380 Gen10。

没有软件袭击,没有加密。

有任何提示如何查找错误并解决问题吗?

编辑我:

/proc/partitions看起来不错 在此输入图像描述

blkid 在此输入图像描述

在哪里

  • /dev/sdc1 是 /boot/efi
  • /dev/sdc2 是 /boot
  • /dev/sdc3 是 PV

从较旧的内核版本启动一次可以正常工作,直到执行apt update && apt upgrade.升级后旧内核也有同样的问题。

编辑二:

在模块中/proc/modules我可以找到以下条目: smartpqi 81920 0 - Live 0xffffffffc0626000

lvm pvsinitramfs shell 中没有输出。

输出为lvm pvchange -ay -v

No volume groups found.

输出为lvm pvchange -ay --partial vg-ubuntu -v

PARTIAL MODE. Incomplete logical volumes will be processed.
VG name on command line not found in list of VGs: vg-ubuntu
Volume group "vg-ubuntu" not found
Cannot process volume group vg-ubuntu

还有第二个 RAID 控制器,其 HDD 连接到另一个 PCI 插槽;相同型号 P408i-p SR Gen10。在此 RAID 之上配置了一个名为“cinder-volumes”的卷组。但是在initramfs中也找不到这个VG。

编辑三:

这里有一个关联从根 FS 到请求的文件:

  • /mnt/var/log/apt/term.log
  • /mnt/etc/initramfs-tools/initramfs.conf
  • /mnt/etc/initramfs-tools/update-initramfs.conf

编辑四:

在 SystemRescueCD 中,我安装了 LV /(根),/boot/boot/efichroot 到 LV /。所有已安装的卷都剩余足够的磁盘空间(已用磁盘空间< 32%)。

的输出update-initramfs -u -k 5.4.0.88-generic是:

update-initramfs: Generating /boot/initrd.img-5.4.0.88-generic
W: mkconf: MD subsystem is not loaded, thus I cannot scan for arrays.
W: mdadm: failed to auto-generate temporary mdadm.conf file

该图像/boot/initrd.img-5.4.0-88-generic具有更新的最后修改日期。

重启后问题依然存在。initrdgrub 菜单配置中的引导参数/boot/grub/grub.cfg指向/initrd.img-5.4.0-XX-generic,其中 XX 对于每个菜单项都是不同的,即 88、86 和 77。

/boot目录中我可以找到不同的图像(?)

vmlinuz-5.4.0-88-generic
vmlinuz-5.4.0-86-generic
vmlinuz-5.4.0-77-generic

该链接/boot/initrd.img指向最新版本/boot/initrd.img-5.4.0-88-generic

编辑五:

由于任何措施都没有达到预期的效果,而且挽救系统的努力太大,我不得不彻底重建服务器。

答案1

我有一个非常相似的问题。在安装新内核失败后(主要是因为/boot分区空间不足),我手动更新了 initramfs,重新启动后,initramfs 不会提示加密分区的解密过程。我收到了类似的错误Volume group “vg0” not found和 initramfs 提示,它类似于终端,但功能有限。

我的问题得到了解决:

  1. 释放启动分区中的空间。
  2. 安装cryptsetup-initramfs.

对于第 1 步,我使用了这篇文章中的配方来删除旧内核:https://askubuntu.com/a/1391904/1541500。关于步骤 1 的说明:如果您无法启动到任何较旧的内核(就像我的情况一样),则在执行命令后,您晚上需要将这些步骤作为步骤 2(Live CD 会话)的一部分执行chroot

对于第 2 步,我从 Live CD 启动并打开一个终端。然后我安装了系统,安装了缺少的软件包并提示重新安装最后一个内核(它会自动更新initramfs和grub cfg)。

下面我列出了在步骤 2 的 Live CD 会话终端中使用的命令,以便修复系统。

就我而言,我有以下分区:

  • /dev/sda1/boot/efifat32
  • /dev/sda2/bootext4
  • /dev/sda3vg0- lvm2> 这是我的加密分区,以及我的 kubuntu 安装。

另外值得一提的是,我的加密分区列于CryptDisk/etc/crypttab。为了使用 解密分区,此名称是必需的cryptsetup luksOpen。解密后,vg0有 3 个分区:roothomeswap

现在回到在 LIVE CD 终端中运行的命令:

sudo cryptsetup luksOpen /dev/sda3 CryptDisk # open encrypted partition
sudo vgchange -ay
sudo mount /dev/mapper/vg0-root /mnt # mount root partition
sudo mount /dev/sda2 /mnt/boot # mount boot partition
sudo mount -t proc proc /mnt/proc
sudo mount -t sysfs sys /sys
sudo mount -o bind /run /mnt/run # to get resolv.conf for internet access
sudo mount -o bind /dev /mnt/dev
sudo chroot /mnt
apt-get update
apt-get dist-upgrade
apt-get install lvm2 cryptsetup-initramfs cryptsetup
apt-get install --reinstall linux-image-5.4.0-99-generic linux-headers-5.4.0-9 9-generic linux-modules-5.4.0-99-generic linux-tools-5.4.0-99-generic

成功重新启动后,我用update-initramfs -c -k all.

答案2

由于使用较旧的内核版本启动后问题就消失了,但在升级后又出现了,我认为您可能不小心切换了内核风格:请参阅https://wiki.ubuntu.com/Kernel/LTSEnablementStack更多细节。

基本上,Ubuntu 20.04 可能使用三个版本的 Linux 内核之一:

  • Ubuntu 20.04 版本的正式发布(GA):metapackagelinux-generic
  • OEM 特殊版本:metapackagelinux-oem-20.04
  • 长期支持启用/硬件启用 (HWE) 内核版本:metapackagelinux-generic-hwe-20.04

您的硬件可能太新,需要 OEM 或 HWE 内核。但如果系统最初安装了“错误”的内核,然后手动安装了正确的内核,而没有安装相应的元包,那么现在的更新机制可能会默认安装GA系列的最新内核,其smartpqi驱动程序对于您的硬件来说可能太旧了。

正如 paladin 在评论中所建议的,您可能需要从 SystemRescueCD 启动并查看/var/log/apt/term.log系统中的 来找出更新中被替换的确切内核软件包版本。

一旦您知道了正确的内核风格,您可以再次尝试启动菜单(如果它仍然包含可以运行的旧内核版本),或者从 SystemRescueCD 启动,将根 LV 和 chroot 挂载到其中,挂载任何其他必要的文件系统,然后安装最新的内核包正确的味道,然后重新启动。

如果系统运行得令您满意,那么您应该删除与“错误”内核风格相关的元包(如果安装了的话):apt每当有新的内核更新可用时,这些元包将直接选择内核风格。


如果内核风格最终被证明是正确的,那么事情可能会更简单,比如磁盘空间不足,无法update-initramfs为新内核创建新的 initramfs 文件。

有一个简单的修复方法:首先释放一些磁盘空间(清理apt缓存apt clean可能会派上用场),然后运行update-initramfs -u -k version-of-newest-kernel-package以重新创建 initramfs 文件。您可能希望对当前 initramfs 失败的任何内核版本重复此命令,只是为了给您更多可行的引导选项,以防将来出现更多问题。

答案3

我前段时间遇到过类似的问题。我在设置中添加了另一个 LVM 卷,并且意外地将我的 ubuntu-vg 重命名为新卷(执行命令时混乱了)。

解决方案是通过 USB 可启动磁盘启动并将有故障的 vg 重命名回来。我遵循的步骤是:

使用 Live Linux USB Open 终端启动并输入以下内容: 2.1 sudo vgdisplay --> 显示设置中所有 vgs 的列表

2.2 识别受到干扰或者包含主FS的vg

2.3 sudo vgrename <错误名称> ubuntu-vg

完成上述操作后,正常关机,然后重新启动。 grub 将看到该卷并正常加载。

相关内容