题 逻辑卷在引导时处于非活动状态


我调整了逻辑卷和文件系统的大小,一切顺利。我安装了新内核,重新启动后无法启动当前或以前的内核。选择grub(2)选项后,我得到volume group not found错误。从繁忙框检查显示卷未在设备映射器中注册,并且它们处于非活动状态。激活后我无法挂载它们,我找不到文件错误(mount / dev / mapper / all-root / mnt)。

任何想法如何继续或在启动时使它们活动?或者为什么卷在启动时突然都处于非活动状态?

问候,

马雷克

编辑: 进一步调查显示,这与调整逻辑卷的大小无关。在启动失败后必须在ash shell中手动激活逻辑卷的事实以及可能解决此问题的方法在下面的回复中有所介绍。


9
2017-11-07 22:51




bugs.debian.org/cgi-bin/bugreport.cgi?bug=616689 - Keith
到目前为止我尝试过的:1)你的补丁2)差异化/etc/lvm/lvm.conf 3) GRUB_PRELOAD_MODULES="lvm" 4) GRUB_CMDLINE_LINUX="scsi_mod.scan=sync" 5) sudo grub-install /dev/sda && sudo grub-install /dev/sdb && sudo update-grub && sudo update-initramfs -u -k all 6) sudo apt-get install --reinstall lvm2 grub-pc grub-common 7)加入 lvm vgchange -ay 到了最后 /usr/share/initramfs-tools/scripts/local-top/lvm2  我很快就会没事了。 - isaaclw


答案:


所以我最终设法解决了这个问题。检测逻辑卷存在一个问题(bug),这是某种竞争条件(可能在我的情况下,这种情况发生在KVM内部)。这包含在 以下讨论。在我的特殊情况下(Debian Squeeze),解决方案如下:

  • 备份脚本/ usr / share / initramfs-tools / scripts / local-top / lvm2
  • 应用上述错误报告中的补丁
  • 运行update-initramfs -u

这对我有所帮助,希望它能帮助别人(奇怪的是,这还不是主流的一部分)。

链接到补丁:_http://bugs.debian.org/cgi-bin/bugreport.cgi?msg = 10; filename = lvm2_wait-lvm.patch; att = 1; bug = 568838

以下是后人的副本。

--- /usr/share/initramfs-tools/scripts/local-top/lvm2 2009-08-17 19:28:09.000000000 +0200
+++ /usr/share/initramfs-tools/scripts/local-top/lvm2 2010-02-19 23:22:14.000000000 +0100
@@ -45,12 +45,30 @@

  eval $(dmsetup splitname --nameprefixes --noheadings --rows "$dev")

- if [ "$DM_VG_NAME" ] && [ "$DM_LV_NAME" ]; then
-   lvm lvchange -aly --ignorelockingfailure "$DM_VG_NAME/$DM_LV_NAME"
-   rc=$?
-   if [ $rc = 5 ]; then
-     echo "Unable to find LVM volume $DM_VG_NAME/$DM_LV_NAME"
-   fi
+ # Make sure that we have non-empty volume group and logical volume
+ if [ -z "$DM_VG_NAME" ] || [ -z "$DM_LV_NAME" ]; then
+   return 1
+ fi
+
+ # If the logical volume hasn't shown up yet, give it a little while
+ # to deal with LVM on removable devices (inspired from scripts/local)
+ fulldev="/dev/$DM_VG_NAME/$DM_LV_NAME"
+ if [ -z "`lvm lvscan -a --ignorelockingfailure |grep $fulldev`" ]; then
+   # Use default root delay
+   slumber=$(( ${ROOTDELAY:-180} * 10 ))
+
+   while [ -z "`lvm lvscan -a --ignorelockingfailure |grep $fulldev`" ]; do
+     /bin/sleep 0.1
+     slumber=$(( ${slumber} - 1 ))
+     [ ${slumber} -gt 0 ] || break
+   done
+ fi
+
+ # Activate logical volume
+ lvm lvchange -aly --ignorelockingfailure "$DM_VG_NAME/$DM_LV_NAME"
+ rc=$?
+ if [ $rc = 5 ]; then
+   echo "Unable to find LVM volume $DM_VG_NAME/$DM_LV_NAME"
  fi
 }

6
2017-11-10 23:10





在中创建启动脚本 /etc/init.d/lvm 包含以下内容:

#!/bin/sh

case "$1" in
 start)
    /sbin/vgscan
    /sbin/vgchange -ay
    ;;
  stop)
    /sbin/vgchange -an
    ;;
  restart|force-reload)
    ;;
esac

exit 0

然后执行命令:

chmod 0755 /etc/init.d/lvm
update-rc.d lvm start 26 S . stop 82 1 .

应该为Debian系统做的伎俩。


5
2017-10-21 11:54



对于那些想知道的人,就像我一样 vgscan 搜索系统上的卷组,和 vgchange -a 使卷组可用(-ay) 或不 (-an)。 - Dan Pritts


我也有这个问题。最终这似乎解决了它:

diff -u /usr/share/initramfs-tools/scripts/local-top/lvm2-backup /usr/share/initramfs-tools/scripts/local-top/lvm2
--- /usr/share/initramfs-tools/scripts/local-top/lvm2-backup    2014-06-06 19:55:19.249857946 -0400
+++ /usr/share/initramfs-tools/scripts/local-top/lvm2   2014-06-21 01:26:01.015289945 -0400
@@ -60,6 +60,7 @@

 modprobe -q dm-mod

+lvm vgchange -ay
 activate_vg "$ROOT"
 activate_vg "$resume"

我试过的其他事情:

  1. 你的补丁
  2. 差异化/etc/lvm/lvm.conf
  3. GRUB_PRELOAD_MODULES="lvm"
  4. GRUB_CMDLINE_LINUX="scsi_mod.scan=sync"
  5. sudo grub-install /dev/sda && sudo grub-install /dev/sdb && sudo update-grub && sudo update-initramfs -u -k all
  6. sudo apt-get install --reinstall lvm2 grub-pc grub-common

我经历并解除了其他变化,这是唯一对我来说很重要的变化,尽管它可能是最不优雅的。


1
2018-06-21 05:38





如果 vgscan “找到”卷,你应该可以用它们激活它们 vgchange -ay /dev/volumegroupname

$ sudo vgscan
[sudo] password for username: 
  Reading all physical volumes.  This may take a while...
  Found volume group "vg02" using metadata type lvm2
  Found volume group "vg00" using metadata type lvm2

$ sudo vgchange -ay /dev/vg02
  7 logical volume(s) in volume group "vg00" now active

我不确定在重启后会导致它们无效的原因。


0
2017-11-07 23:54



嗨,谢谢我之前做过的。但如果我重新启动,我们会回到不活跃的状态。我试图在激活它们之后立即挂载,但它关闭了我找不到文件错误。 - zeratul021
可能是/etc/lvm/lvm.conf的问题,备份当前文件并尝试从其他系统复制lvm.conf并查看它是否解决了问题 - Saurabh Barjatiya


如果没有任何配置细节或错误消息,我们需要给出一个真正的答案,我会在黑暗中用刺 grub-mkdevicemap 作为解决方案。


0
2017-11-08 02:39





假设您的系统使用initramfs,那么可能存在配置问题。你应该更新你在启动时通过grub启动的initramfs映像(在Debian中你使用update-initramfs执行此操作,不了解其他发行版)。

您也可以通过在initramfs映像中解压缩initramfs并更改/etc/lvm/lvm.conf(或类似的东西)然后再重新打包来手动执行此操作。


0
2017-11-08 09:46



嗨,谢谢你的建议我会在今晚晚些时候尝试检查它们。奇怪的是,在安装新内核deb之后,立即更新initramfs并更新grub。 - zeratul021
同样的事情发生在我身上,有两个需要启动的raid阵列。虽然update-initramfs正常运行,但它们在initramfs中不再启动了。我不得不手动改变mdadm在mdadm.conf中查找raid数组的方式,然后重新运行initupdate-ramfs。 - Jasper
我在下面关于lvm.conf的帖子发表了评论。我发现当我运行命令lvm然后vgscan和vgchange -ay并从initramfs shell中删除时,我就像我应该的那样启动。所以问题出在initramfs的某个地方,它不会激活LVM。只是为了记录,/ boot在单独的分区上。 - zeratul021
您的问题仍然是update-initramfs无法正常工作。也许您应该看看是否有initramfs-tools的更新,然后尝试update-initramfs。如果这不起作用,您仍应查看lvm.conf中的initramfs映像。 - Jasper
遗憾的是我不知道如何配置LVM,我所做的一切都是在安装过程中。下一个提示是完全相同的磁盘布局的其他虚拟机以完全相同的方式失败,所以我需要挖掘为什么LVM在启动时没有被激活。 - zeratul021


我在运行Red Hat 7.4作为KVM来宾的环境中遇到了同样的问题。我正在运行qemu-kvm-1.5.3-141和virt-manager 1.4.1。起初我作为客户运行Red Hat 7.2没有任何问题,但是在将次要版本从7.2升级到7.4并将内核升级到最新版本3.10.0-693.5.2之后,出现了问题并且无法启动我的/ var LV分区更多。系统进入紧急模式,询问root密码。使用root密码输入并运行命令 lvm vgchange -aysystemctl default 我能够激活我的 /var LV并启动系统。

我还没弄清楚导致这个问题的原因,但我的解决方法是包括LV /var 在 /etc/default/grub 如下所示:

GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=vg_local/root rd.lvm.lv = vg_local /无功 rd.lvm.lv=vg_local/swap rhgb quiet biosdevname=0 net.ifnames=0 ipv6.disable=1"

然后我不得不跑 grub2-mkconfig -o /boot/grub2/grub.cfg 并检查是否 rd.lvm.lv=vg_local/var 被列入vmlinuz线 /boot/grub2/grub.cfg。 重新启动系统后,我没有收到激活我的错误 /var LV了,系统成功完成启动过程。


0
2017-11-18 19:34





在我的情况下想出grub根是 根=的/ dev /卷组名/根

所以考试 在/ usr /共享/的initramfs工具/脚本/本地顶/ LVM2

  # Make sure that we have a d-m path
  dev="${dev#/dev/mapper/}"          
  if [ "$dev" = "$1" ]; then         
    return 1                         
  fi      

总是假的。并且根音量从未激活。

更新/ etc / fstab来自

/dev/vgname/root        /

/dev/mapper/vgname-root   /

并做了:

update-grub
grub-install /dev/sda

解决了我的问题


0
2018-05-02 08:52