GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Logische Volumes sind beim Booten inaktiv

Also habe ich es letztendlich geschafft, das zu lösen. Es gibt ein Problem (Bug) bei der Erkennung logischer Volumes, was eine Art Race Condition ist (in meinem Fall vielleicht in Bezug auf die Tatsache, dass dies innerhalb von KVM passiert). Dies wird in der folgenden Diskussion behandelt. In meinem speziellen Fall (Debian Squeeze) lautet die Lösung wie folgt:

  • Sichern Sie das Skript /usr/share/initramfs-tools/scripts/local-top/lvm2
  • Wenden Sie den Patch aus dem erwähnten Fehlerbericht an
  • update-initramfs -u ausführen

Das hat mir geholfen, hoffe es wird anderen helfen (seltsamerweise ist das noch nicht Teil des Mainstreams).

Link zum Patch:_http://bugs.debian.org/cgi-bin/bugreport.cgi?msg=10;filename=lvm2_wait-lvm.patch;att=1;bug=568838

Unten ist eine Kopie für die Nachwelt.

--- /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
 }

Erstellen Sie ein Startskript in /etc/init.d/lvm mit folgendem Inhalt:

#!/bin/sh

case "$1" in
 start)
    /sbin/vgscan
    /sbin/vgchange -ay
    ;;
  stop)
    /sbin/vgchange -an
    ;;
  restart|force-reload)
    ;;
esac

exit 0

Führen Sie dann die Befehle aus:

chmod 0755 /etc/init.d/lvm
update-rc.d lvm start 26 S . stop 82 1 .

Sollte für Debian-Systeme reichen.


Linux
  1. Linux schneller booten

  2. Logische Volumes unter Linux mit LVM erstellen

  3. Was sind also logische CPU-Kerne (im Gegensatz zu physischen CPU-Kernen)?

  4. Linux – Vbox-Dienste deaktivieren, um die Startzeit zu verkürzen?

  5. Warum 100 MB ext2-Startpartition für Linux empfohlen?

So überprüfen Sie den Systemneustartverlauf und die Startzeit in Linux

Verwaltung logischer Volumes unter Linux erklärt

Zeitanzeige zeigt Datum/Uhrzeit nicht an?

Werden EBS-Volumes nach der Verwendung gelöscht?

Was sind die Vorteile des Logical Volume Managers

Wie sind CPU-Zeit und CPU-Auslastung gleich?