Nach diversen Updates bootet das System nicht mehr. Beim Betriebssystem handelt es sich um Ubuntu Trusty mit LVM-Root-Partition, die über multipath angebunden ist. Der Systemstart bleibt stehen mit der Bemerkung, dass die Root-Partition nicht gefunden wird. Man wird zur Eingabe von Kommandos aufgefordert. Der Systemstart kann nur nach Eingabe eigener Kommandos fortgesetzt oder beendet werden. Wie geht es weiter?
Systemstart erfolgreich beenden
Zunächst sollte geprüft werden, wie der Multipath-Status ist. Die kann mit dem Kommando multipath -ll erfolgen. Erfahrungsgemäß wird nichts angezeigt. Nach Eingabe des Kommandos /sbin/multipath -v0 zeigt das Kommando /sbin/multipath -ll die Multipath-Konfiguration, wie sie sein soll. Jetzt kann mit <Strg>D der Eingabemodus verlassen werden. Nun findet das System die Root-Partition und startet. Multipath wird also offensichtlich beim Systemstart nicht mehr korrekt durch das Initram-FS gestartet (siehe auch dazu: https://bugs.launchpad.net/ubuntu/+source/multipath-tools/+bug/1431650) . Ein manueller Start von Multipath behebt den Fehler. Aber das System soll ja alleine starten, ohne manuellen Eingriff. Das Problem kann gelöst werden.
Es gibt 2 Möglichkeiten.
Zurücksetzen der Pakete multipath-tools, multipath-tools-boot, kpartx und kpartx-boot auf eine Version, die noch problemlos läuft
2. Modifizieren des Initram-FS so, dass der Start funktioniert. Beide Lösungen wurden ausprobiert.
Lösung 1:
Die zuletzt funktionierenden Pakete kpartx, kpartx-boot, multipath-tools und multipath-tools-boot liegen in Version 0.4.9-3ubuntu7.4 auf der Installations-CD von Ubuntu 14.04.3-Server.
Nachdem man es geschafft hat, das system zu starten mounte man diesen Datenträger (z.B. auf /mnt). Dannach wird man feststellen, dass diese Pakete im Verzeichnis /mnt/pool/main/m/multipath-tools/ liegen. Von dort können sie installiert werden mittels sudo dpkg -i <paket>....
Danach müssen diese Pakete gesperrt werden, um bei einem weiteren Update ein Überschreiben zu verhindern. Wie dies geht, das kann dieser Beschreibung: https://wiki.debianforum.de/Pakete_auf_hold_setzen entnommen werden.
Nach sudo update-initramfs -k all -u wird neu gestartet. Es sollte jetzt festgestellt werden können, dass der Systemstart funktioniert.
Lösung 2:
Diese Lösung ist etwas komplexer. Sie erfordert eine Eingriff in den Systemstart.
Es wurde festgestellt, dass der Multipath-Start durch irgendwelche Blockaden von udev verhindert wird. Aufgrund eines Weiteren Startversuches von Multipath kann dann Multipath doch noch seine Arbeit aufnehmen.
Das Lösungsprinzip besteht darin, zu einem möglichst frühen Zeitpunkt Multipath schon mal zu starten, gleich nach udev. Dadurch kommt es zwar zu vielen Fehlermeldungen während des Starts, aber der Systemstart kommt erfolgreich zu Ende. Die vielen Fehlermeldungen kann man ja auch ignorieren. wenn man diese Lösung bevorzugt. Immerhin arbeitet sie mit den aktuellen Paketen in Version 0.4.9-3ubuntu7.7.
Es wird in diesem Beispiel von folgender Konfiguration für Multipath ausgegangen (/etc/multipath.conf):
defaults { user_friendly_names yes } blacklist { devnode "^(ram|raw|loop|fd|md|dm-|sr|scd|st)[0-9]*" devnode "^hd[a-z][[0-9]*]" devnode "^cciss!c[0-9]d[0-9]*[p[0-9]*]" } devices { device { vendor "EMC" product "Invista" product_blacklist "LUNZ" path_grouping_policy multibus path_checker tur no_path_retry 5 } }
Zunächst wurde eine Modifikation an /etc/lvm/lvm.conf vorgenommen (Siehe auch: http://www.novell.com/support/kb/doc.php?id=7007498) Die Anweisung filte wurde wie unten steht ersetzt:
filter = [ "a|/dev/disk/by-id/dm-name-.*|", "r/.*/" ]
Dann wurde die Liste der in die Initram zu integrierenden Module erweitert. Orientiert wurde sich dabei an der Ausgabe des Kommandos sudo lsmod.
In das Konfigurationsfile /etc/initramfs-tools/modules wurden im konkreten Beispiel eingefügt:
scsi_dh_emc scsi_dh scsi_tgt scsi_transport_fc dm_multipath dm_round_robin
Dann wurde das File/etc/initramfs-tools/hooks/99-multipath erstellt uns ausführbar gemacht (sudo chmod +x /etc/initramfs-tools/hooks/99-multipath). Es sorgt dafür, dass Multipath zu einem frünen Zeitpunkt gestartet wird.
#!/bin/sh PREREQS="multipath" prereqs() { echo "$PREREQS"; } case $1 in prereqs) prereqs exit 0 ;; esac if [ ! -x /sbin/multipath ]; then exit 0 fi . /usr/share/initramfs-tools/hook-functions if [ -x /usr/share/initramfs-tools/scripts/local-top/multipath ] then cp /usr/share/initramfs-tools/scripts/local-top/multipath $DESTDIR/scripts/init-top/ fi
Danach wird die Initram neu erstellt: sudo update-initramfs -k all -u.
Die Initramfs kann ausgepackt werden. Das geschieht mir folgenden Kommandos:
1 2 3 | mkdir initramfs cd initramfs zcat /boot/initrd.img-... | cpio -imdv |
Nun kann diese Initram-FS angeschaut werden. Es zeigt sich, dass unter scripts/ zwei mal multipath gestertet wird.
Ein Reboot bringt jetzt zwar viele Meldungen, läuft aber durch.
Moderiert von Developer92:
Keine Supportfrage erkennbar → verschoben. Sollte sich da doch noch irgendwo eine Frage verstecken, dann bitte den Thread erneut melden.