GNU/Linux >> Linux Esercitazione >  >> Linux

I volumi logici sono inattivi al momento dell'avvio

Quindi alla fine sono riuscito a risolverlo. C'è un problema (bug) con il rilevamento dei volumi logici, che è una sorta di race condition (forse nel mio caso per quanto riguarda il fatto che ciò avvenga all'interno di KVM). Questo è trattato nella discussione seguente. Nel mio caso particolare (Debian Squeeze ) la soluzione è la seguente:

  • eseguire il backup dello script /usr/share/initramfs-tools/scripts/local-top/lvm2
  • applica la patch dalla citata segnalazione di bug
  • esegui update-initramfs -u

Questo mi ha aiutato, spero che aiuti gli altri (stranamente, questo non fa ancora parte del mainstream).

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

Di seguito è una copia per i posteri.

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

Crea uno script di avvio in /etc/init.d/lvm contenente quanto segue:

#!/bin/sh

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

exit 0

Quindi eseguire i comandi:

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

Dovrebbe funzionare per i sistemi Debian.


Linux
  1. Creazione di volumi logici in Linux con LVM

  2. La connessione SSH richiede molto tempo? Ecco alcune correzioni

  3. La relazione tra inode, Lba, volumi logici, blocchi e settori?

  4. Quindi cosa sono i core CPU logici (in opposizione ai core CPU fisici)?

  5. Come passare un valore a un modulo del kernel Linux integrato all'avvio?

Come controllare la cronologia di riavvio del sistema e il tempo di avvio in Linux

Spiegazione della gestione del volume logico su Linux

L'indicatore dell'ora non mostra la data/l'ora?

i volumi EBS vengono cancellati dopo l'uso?

Quali sono i vantaggi del Logical Volume Manager

In che modo il tempo della CPU e l'utilizzo della CPU sono uguali?