我调整了我的逻辑卷和文件系统,一切顺利。 我安装了新的内核,重新启动后,我无法启动既不是当前也没有前者。 selectgrub(2)选项后,发现卷组未find错误。 从繁忙的框中检查显示卷没有注册到设备映射器,并且它们处于非活动状态。 我激活后无法安装它们,我找不到文件错误(mount / dev / mapper / all-root / mnt)。
任何想法如何进行或使他们在启动时间活动? 或者为什么在启动的时候这些卷是全部被忽略的?
问候,
马雷克
编辑: 进一步的调查显示,这与逻辑卷的大小调整无关。 逻辑卷必须在启动失败后在ash shell中手动激活,并且可能的解决scheme在下面的答复中已经介绍。
所以我终于设法解决了这个问题。 检测逻辑卷有一个问题(错误),这是一种竞争条件(也许在我的情况下,这种情况发生在KVM内部)。 这在下面的讨论中被涵盖。 在我的具体情况(Debian Squeeze)中,解决scheme如下:
这帮助了我,希望它能帮助别人(奇怪的是,这还不是主stream的一部分)。
链接到补丁:_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 }
在/etc/init.d/lvm中创build一个包含以下内容的启动脚本:
#!/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。 停止82 1。
应该做的debain系统的伎俩
我也有这个问题。 最后,这似乎是解决这个问题的方法:
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"
其他的事情我尝试过
GRUB_PRELOAD_MODULES="lvm" GRUB_CMDLINE_LINUX="scsi_mod.scan=sync" sudo grub-install /dev/sda && sudo grub-install /dev/sdb && sudo update-grub && sudo update-initramfs -u -k all sudo apt-get install --reinstall lvm2 grub-pc grub-common 我解决了其他的变化,这是唯一对我很重要的变化,尽pipe它可能是最不优雅的。
如果vgscan “find”卷,您应该能够通过vgchange -ay /dev/volumegroupname vgscan激活它们
$ 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
我不知道什么会导致他们在重新启动后不活动。
没有任何configuration细节或错误消息,我们需要给出一个实际的答案,我会用grub-mkdevicemap作为一个解决scheme在黑暗中刺。
假设你的系统使用initramfs,那里可能有一个configuration问题。 你应该更新在启动时由grub启动的initramfs映像(在Debian中你使用update-initramfs来做这个,不知道其他的发行版)。
您也可以通过在initramfs映像中解压initramfs和更改/etc/lvm/lvm.conf(或类似的东西)来手动完成此操作,然后重新进行重新打包。