Логические тома неактивны во время начальной загрузки

Можно смотреть на Samhain для Решения с открытым исходным кодом.

Когда я использовал его в своем последнем задании, это было только решение для проверки целостности файлов, но кажется, что это с тех пор развилось в большем полном решении...

9
задан 11 November 2010 в 01:13
9 ответов

Таким образом, мне удалось решить это в конечном счете. Существует проблема (ошибка) с обнаружением логических томов, который является своего рода состоянием состязания (возможно, в моем случае относительно того, что это происходит в KVM). Это покрыто следующим обсуждением. В моем особом случае (Debian Сжимают) решение следующие:

  • скопируйте сценарий/usr/share/initramfs-tools/scripts/local-top/lvm2
  • примените патч из упомянутого отчета об ошибках
  • выполненное обновление-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
ответ дан 2 December 2019 в 22:30

Если 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
ответ дан 2 December 2019 в 22:30
  • 1
    Привет, спасибо я сделал точно это прежде. Но если я перезагружаю, мы вернулись к неактивной вещи. Я пытался смонтироваться сразу после активации их, но она закрывает меня с файлом, не найденным ошибкой. –  zeratul021 8 November 2010 в 01:59
  • 2
    Может быть проблема с/etc/lvm/lvm.conf, взять резервное копирование текущего файла и попытки скопировать lvm.conf с некоторой другой системы и видеть, решает ли это проблему –  Saurabh Barjatiya 8 November 2010 в 12:57

Без любой из деталей конфигурации или сообщений об ошибках мы должны были бы дать фактический ответ, я возьму удар в темноте с grub-mkdevicemap как решение.

0
ответ дан 2 December 2019 в 22:30

Принятие Вас, система использует initramfs, там существует, вероятно, проблема конфигурации. Необходимо обновить изображение initramfs, это запускается во время начальной загрузки личинкой (в Debian, Вы делаете это с обновлением-initramfs, не знайте о других дистрибутивах).

Вы могли также сделать это вручную путем распаковки initramfs и изменения/etc/lvm/lvm.conf (или что-то как он) в изображении initramfs и затем переупаковать его снова.

0
ответ дан 2 December 2019 в 22:30
  • 1
    Привет, спасибо за предложение я попытаюсь осмотреть их позже сегодня вечером. Странная вещь состоит в том что после установки нового ядра deb, обновление initramfs и личинка обновления, сопровождаемая сразу. –  zeratul021 8 November 2010 в 16:37
  • 2
    что-то аналогично произошло со мной с двумя массивами RAID, которые были необходимы для начальной загрузки. Они больше не запускали в initramfs, хотя обновление-initramfs хорошо работало. Я должен был вручную измениться, путь mdadm искал массивы RAID в mdadm.conf и затем повторно выполнял initupdate-ramfs. –  Jasper 8 November 2010 в 18:47
  • 3
    я прокомментировал сообщение ниже оценки lvm.conf. Я узнал, что, когда я выполняю команду lvm и затем vgscan и vgchange - да и выпадаю из оболочки initramfs, я загружаюсь как, я, как предполагается. Таким образом, проблема находится где-нибудь в initramfs, что это не активирует LVM. Только для справки, / начальная загрузка находится на отдельном разделе. –  zeratul021 9 November 2010 в 12:33
  • 4
    Ваша проблема все еще с обновлением-initramfs, не работающим правильно. Возможно, необходимо видеть, существует ли обновление для initramfs-инструментов, и затем попробуйте обновление-initramfs. Если это не работает, необходимо все еще посмотреть в изображении initramfs на lvm.conf. –  Jasper 9 November 2010 в 14:33

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.

5
ответ дан 2 December 2019 в 22:30

У меня тоже была эта проблема. В конце концов, это то, что, казалось, исправило:

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"[12107estiveGRUB_CMDLINE_LINUX= " scsi_mod.scan = sync "
  4. sudo grub-install / dev / sda && sudo grub-install / dev / sdb && sudo update-grub && sudo update-initramfs -u -k all
  5. sudo apt-get install - -reinstall lvm2 grub-pc grub-common

Я просмотрел и отменил другие изменения, это единственное, что имело для меня значение, хотя, вероятно, оно наименее элегантно.

1
ответ дан 2 December 2019 в 22:30

У меня такая же проблема, когда я использую 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, и система успешно завершает процесс загрузки.

0
ответ дан 2 December 2019 в 22:30

в моем случае выяснил, что корень 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

решил мою проблему

0
ответ дан 2 December 2019 в 22:30

мы столкнулись с этой проблемой и обнаружили, что отключение lvmetad путем установки use_lvmetad = 0 в /etc/lvm/lvm.conf принудительно находит тома и делает их доступными при загрузке.

0
ответ дан 2 December 2019 в 22:30

Теги

Похожие вопросы