Можно смотреть на Samhain для Решения с открытым исходным кодом.
Когда я использовал его в своем последнем задании, это было только решение для проверки целостности файлов, но кажется, что это с тех пор развилось в большем полном решении...
Таким образом, мне удалось решить это в конечном счете. Существует проблема (ошибка) с обнаружением логических томов, который является своего рода состоянием состязания (возможно, в моем случае относительно того, что это происходит в KVM). Это покрыто следующим обсуждением. В моем особом случае (Debian Сжимают) решение следующие:
Это помогло мне, надежда, она поможет другим (странно, это еще не часть господствующей тенденции).
Ссылка на патч: _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
}
Если 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
Я не уверен, что заставило бы их идти неактивные после перезагрузки все же.
Принятие Вас, система использует initramfs, там существует, вероятно, проблема конфигурации. Необходимо обновить изображение initramfs, это запускается во время начальной загрузки личинкой (в Debian, Вы делаете это с обновлением-initramfs, не знайте о других дистрибутивах).
Вы могли также сделать это вручную путем распаковки initramfs и изменения/etc/lvm/lvm.conf (или что-то как он) в изображении initramfs и затем переупаковать его снова.
Create a startup script in /etc/init.d/lvm
containing the following:
#!/bin/sh
case "$1" in
start)
/sbin/vgscan
/sbin/vgchange -ay
;;
stop)
/sbin/vgchange -an
;;
restart|force-reload)
;;
esac
exit 0
Then execute the commands:
chmod 0755 /etc/init.d/lvm
update-rc.d lvm start 26 S . stop 82 1 .
Should do the trick for Debian systems.
У меня тоже была эта проблема. В конце концов, это то, что, казалось, исправило:
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"[12107estiveGRUB_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
Я просмотрел и отменил другие изменения, это единственное, что имело для меня значение, хотя, вероятно, оно наименее элегантно.
У меня такая же проблема, когда я использую 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, и система успешно завершает процесс загрузки.
в моем случае выяснил, что корень grub был root = / dev / vgname / root
, поэтому тест в / usr / share / initramfs-tools / scripts / local-top / 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
принудительно находит тома и делает их доступными при загрузке.