Booten fällt nach minutenlangen timeouts in den Rettungsmodus.
Ein Symptom scheinen eine Reihe wohl hängengebliebene Prozesse
systemd-udevd -> 'lvm pvscan --cache --activate ay --major MA --minor MI'
Diese Dinger kommen aus der 69-lvm-metad.rules,
kein Zusammenhang mit lvm2-pvscan@.service, dessen Format wäre
'lvm pvscan --cache --activate ay MA:MI'
Ein 'pvscan' gibt Fehler derart
Das erklärt schonmal meine erste Pause beim Booten.WARNING: Device /dev/sdXY not initialized in udev database even after waiting 10000000 microseconds.
Ich habe einen Zusammenhang vermutet
systemd-udevd <-?-> pvscan --cache --activate <-?-> lvmetad
und es mit einem Start des lvmetad vor dem udevd versucht, damit der die vom pvscan ermittelten Daten aufnehmen kann.
Code: Alles auswählen
[Unit]
Before=systemd-udevd.service
Es scheint wohl eher an den separaten Aufrufen per lvm-device (bei mir 17) zu liegen.
Mein walkaround:
1) Die separaten Aufrufe erstmal deaktiviert, /etc/udev/rules.d/69-lvm-metad.rules, eine modifizierte Kopie,
die dann auch statt des Originals in der initrd landet:
Code: Alles auswählen
...
#RUN+="/sbin/lvm pvscan --cache --activate ay --major $major --minor $minor", ENV{LVM_SCANNED}="1"
# 20170604, stretch, Problem lvmetad <->? pvscan --cache [--activate] <->? systemd-udevd
# Auswirkung: boot-timeout, verbleibende udevd-pvscan-Prozesse
RUN+="/bin/echo DUMMY /sbin/lvm pvscan --cache --activate ay --major $major --minor $minor"
...
2) Ein Ersatz für den Aufruf, /etc/initramfs-tools/scripts/init-top/zz_lokal_lvm2_pvscan
(Vorlage die Skripte /usr/share/initramfs-tools/.../lvm2, ausführbar):
Code: Alles auswählen
#!/bin/sh
PREREQ="mdadm mdrun multipath"
prereqs()
{
echo "$PREREQ"
}
case $1 in
# get pre-requisites
prereqs)
prereqs
exit 0
;;
esac
if [ ! -e /sbin/lvm ]; then
exit 0
fi
# 20170604, nach udev (mit dummy-activate.rule)
# scripts/* aus etc/ werden wohl ohnehin nach denen aus share/, hier speziell init-top/udev eingeordenet ('ORDER'),
# dennoch mal lieber als "zz_..."
lvm pvscan
lvm pvscan --cache --activate ay
exit 0
toi toi toi, die VG wird jetzt ratzfatz aktiviert.
3) Damit die frühere Funktion der 69-lvm-metad.rules im laufenden System bereitsteht:
Verlinkung des Originals unter leicht geändertem Namen
Das scheint erstmal hinreichend und problemlos, sollte aber im Auge behalten werden./etc/udev/rules.d/69-lvm-metad_ORIGINAL.rules -> /lib/udev/rules.d/69-lvm-metad.rules
----------------------------
EDIT Aua wegen 3),
Ich hatte das nur theoretisch überlegt, aber den Test noch nicht gemacht.
Der Link
landet (als Datei) in der initrd, führt dort tatsächlich zum Aufhängen des boot-Vorgangs!/etc/udev/rules.d/69-lvm-metad_ORIGINAL.rules -> /lib/udev/rules.d/69-lvm-metad.rules
Also maximal ein Link
(Leider halt in /lib, das ist unschön)/lib/udev/rules.d/69-lvm-metad_ORIGINAL.rules -> 69-lvm-metad.rules