J'ai donc réussi à résoudre ce problème finalement. Il y a un problème (bogue) avec la détection des volumes logiques, qui est une sorte de condition de concurrence (peut-être dans mon cas concernant le fait que cela se produit à l'intérieur de KVM). Ceci est couvert dans la discussion suivante. Dans mon cas particulier (Debian Squeeze ) la solution est la suivante :
- sauvegarder le script /usr/share/initramfs-tools/scripts/local-top/lvm2
- appliquer le correctif du rapport de bogue mentionné
- exécutez update-initramfs -u
Cela m'a aidé, j'espère que cela aidera les autres (étrangement, cela ne fait pas encore partie du courant dominant).
Lien vers le correctif :_http://bugs.debian.org/cgi-bin/bugreport.cgi?msg=10;filename=lvm2_wait-lvm.patch;att=1;bug=568838
Ci-dessous une copie pour la postérité.
--- /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
}
Créer un script de démarrage dans /etc/init.d/lvm
contenant les éléments suivants :
#!/bin/sh
case "$1" in
start)
/sbin/vgscan
/sbin/vgchange -ay
;;
stop)
/sbin/vgchange -an
;;
restart|force-reload)
;;
esac
exit 0
Exécutez ensuite les commandes :
chmod 0755 /etc/init.d/lvm
update-rc.d lvm start 26 S . stop 82 1 .
Devrait faire l'affaire pour les systèmes Debian.