Я изменил размер логического тома и файловой системы, и все прошло гладко. Я установил новое ядро и после перезагрузки не могу загрузить ни текущее, ни прежнее. После выбора опции grub (2) я получаю ошибку «Группа томов не найдена». Проверка из окна «Занято» показывает, что тома не зарегистрированы с помощью устройства сопоставления и что они неактивны. После активации мне не удалось их смонтировать, у меня возникла ошибка «файл не найден» (mount / dev / mapper / all-root / mnt).
Есть идеи, как продолжить или сделать их активными во время загрузки? Или почему тома внезапно становятся неактивными во время загрузки?
С Уважением,
Марек
РЕДАКТИРОВАТЬ: Дальнейшее расследование показало, что это не имеет ничего общего с изменением размера логических томов. Тот факт, что логические тома необходимо было активировать вручную в пепловой оболочке после неудачной загрузки, и возможное решение этой проблемы описано в моем ответе ниже.
В конце концов мне удалось решить эту проблему. Существует проблема (ошибка) с обнаружением логических томов, что является своего рода состоянием гонки (возможно, в моем случае это связано с тем, что это происходит внутри KVM). Это описано в после обсуждения. В моем конкретном случае (Debian Squeeze) решение выглядит следующим образом:
Это помогло мне, надеюсь, поможет другим (как ни странно, это еще не часть мейнстрима).
Ссылка на патч: _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
содержащий следующее:
#!/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.
У меня тоже была эта пробема. В конце концов, вот что, похоже, исправило:
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
Я прошел через и отменил остальные изменения, это единственное, что имело для меня значение, хотя, вероятно, оно наименее элегантно.
Если 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
Я не уверен, что может заставить их перестать работать после перезагрузки.
Без каких-либо деталей конфигурации или сообщений об ошибках, которые нам нужно было бы дать реальный ответ, я нанесу удар в темноте с помощью grub-mkdevicemap
как решение.
Предполагая, что ваша система использует initramfs, вероятно, есть проблема с конфигурацией. Вам следует обновить образ initramfs, который запускается при загрузке с помощью grub (в Debian вы делаете это с помощью update-initramfs, о других дистрибутивах неизвестно).
Вы также можете сделать это вручную, распаковав initramfs и изменив /etc/lvm/lvm.conf (или что-то подобное) в образе initramfs, а затем снова упакуйте его.
У меня такая же проблема в моей среде, в которой 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 -ay
и systemctl default
Я смог активировать свой /var
LV и загрузите систему.
Я не выяснил, что вызывает эту проблему, но мой обходной путь состоял в том, чтобы включить LV /var
в /etc/default/grub
как вы видите ниже:
GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=vg_local/root rd.lvm.lv = vg_local / var 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 больше, и система успешно завершит процесс загрузки.
в моем случае выяснил, что корень личинки был корень = / dev / vgname / корень
так что тест в / 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
решил мою проблему
мы столкнулись с этой проблемой и обнаружили, что отключение lvmetad
установив use_lvmetad=0
в /etc/lvm/lvm.conf
принудительно находит тома и делает их доступными при загрузке.