未找到 LVM 卷组

seb*_*mal 5 ubuntu mount lvm volume

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

\n
Begin: Running /scripts/init-premount \xe2\x80\xa6 done.\nBegin: Mounting root file system \xe2\x80\xa6 \nBegin: Running /scripts/local-top \xe2\x80\xa6\nVolume group \xe2\x80\x9cubuntu-vg\xe2\x80\x9d not found\nCannot process volume group ubuntu-vg\nBegin: Running /scripts/local-premount \xe2\x80\xa6\n...\nBegin: Waiting for root file system \xe2\x80\xa6\nBegin: Running /scripts/local-block \xe2\x80\xa6\nmdadm: No arrays found in config file or automatically\nVolume group \xe2\x80\x9cubuntu-vg\xe2\x80\x9d not found\nCannot process volume group ubuntu vg\nmdadm: No arrays found in config file or automatically # <-- approximately 30 times\nmdadm: error opening /dev/md?*: No such file or directory\ndone.\nGave up waiting for root file system device. \nCommon problems:\n-   Boot args (cat /proc/cmdline)\n-   Check rootdelay= (did the system wait long enough?)\n-   Missing modules (cat /proc/modules: ls /dev)\nALERT! /dev/mapper/ubuntu--vg-ubuntu--lv does not exist. Dropping to a shell!\n
Run Code Online (Sandbox Code Playgroud)\n

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

\n

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

\n

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

\n

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

\n

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

\n

编辑我:

\n

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

\n

blkid\n在此输入图像描述

\n

在哪里

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

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

\n

编辑二:

\n

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

\n

lvm pvsinitramfs shell 中没有输出。

\n

输出为lvm pvchange -ay -v

\n
No volume groups found.\n
Run Code Online (Sandbox Code Playgroud)\n

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

\n
PARTIAL MODE. Incomplete logical volumes will be processed.\nVG name on command line not found in list of VGs: vg-ubuntu\nVolume group "vg-ubuntu" not found\nCannot process volume group vg-ubuntu\n
Run Code Online (Sandbox Code Playgroud)\n

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

\n

编辑三:

\n

以下是从根 FS 请求的文件的链接:

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

编辑四:

\n

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

\n

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

\n
update-initramfs: Generating /boot/initrd.img-5.4.0.88-generic\nW: mkconf: MD subsystem is not loaded, thus I cannot scan for arrays.\nW: mdadm: failed to auto-generate temporary mdadm.conf file\n
Run Code Online (Sandbox Code Playgroud)\n

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

\n

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

\n

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

\n
vmlinuz-5.4.0-88-generic\nvmlinuz-5.4.0-86-generic\nvmlinuz-5.4.0-77-generic\n
Run Code Online (Sandbox Code Playgroud)\n

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

\n

编辑五:

\n

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

\n

map*_*arr 9

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

\n

我的问题得到了解决:

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

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

\n

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

\n

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

\n

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

\n
    \n
  • /dev/sda1/boot/efifat32
  • \n
  • /dev/sda2/bootext4
  • \n
  • /dev/sda3与-> 这是我的加密分区,以及我的 kubuntu 安装vg0lvm2
  • \n
\n

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

\n

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

\n
sudo cryptsetup luksOpen /dev/sda3 CryptDisk # open encrypted partition\nsudo vgchange -ay\nsudo mount /dev/mapper/vg0-root /mnt # mount root partition\nsudo mount /dev/sda2 /mnt/boot # mount boot partition\nsudo mount -t proc proc /mnt/proc\nsudo mount -t sysfs sys /sys\nsudo mount -o bind /run /mnt/run # to get resolv.conf for internet access\nsudo mount -o bind /dev /mnt/dev\nsudo chroot /mnt\napt-get update\napt-get dist-upgrade\napt-get install lvm2 cryptsetup-initramfs cryptsetup\napt-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\n
Run Code Online (Sandbox Code Playgroud)\n

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

\n


tel*_*coM 0

由于使用较旧的内核版本启动后问题就消失了,但在升级后又出现了,我认为您可能不小心切换了内核风格:请参阅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 失败的任何内核版本重复此命令,只是为了给您更多可行的引导选项,以防将来出现更多问题。