加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

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

发布时间:2020-12-13 18:36:56 所属栏目:Linux 来源:网络整理
导读:我调整了逻辑卷和文件系统的大小,一切顺利.我安装了新内核,重新启动后无法启动当前或以前的内核.选择grub(2)选项后,我得到volume group not found错误.从繁忙框检查显示卷未在设备映射器中注册,并且它们处于非活动状态.激活后我无法挂载它们,我找不到文件错
我调整了逻辑卷和文件系统的大小,一切顺利.我安装了新内核,重新启动后无法启动当前或以前的内核.选择grub(2)选项后,我得到volume group not found错误.从繁忙框检查显示卷未在设备映射器中注册,并且它们处于非活动状态.激活后我无法挂载它们,我找不到文件错误(mount / dev / mapper / all-root / mnt).

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

问候,

马雷克

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

解决方法

所以我最终设法解决了这个问题.检测逻辑卷存在一个问题(bug),这是某种竞争条件(可能在我的情况下,这种情况发生在KVM内部).这在 following discussion中有所涉及.在我的特殊情况下(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
 }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读