[[Vorlage(Archiviert)]] {{{#!vorlage Warnung Die Verwendung dieses Howto geschieht auf eigene Gefahr. Bei Problemen mit der Anleitung melde dies bitte in der dazugehörigen Diskussion und wende dich zusätzlich an den Verfasser des Howtos. }}} {{{#!vorlage Hinweis Diese Howto-Anleitung wurde zuletzt von [user:muellerj:] am 08.02.2016 unter '''Ubuntu 14.04.3''' und '''kpartx''', '''kpartx-boot''', '''multipath-tools''', '''multipath-tools-boot''' Version '''0.4.9-3ubuntu7.8''' erfolgreich getestet. }}} = Problembeschreibung = Nach diversen Updates bootet das System nicht mehr. Beim Betriebssystem handelt es sich um Ubuntu 14.04.3 64-Bit mit LVM-Root-Partition, die über Multipath angebunden ist. Der Systemstart bleibt mit der Bemerkung stehen, dass die Root-Partition nicht gefunden wird (so wie hier beschrieben: [http://askubuntu.com/questions/361886/cannot-find-root-device-after-latest-kernel-upgrade]). Man wird zur Eingabe von Kommandos aufgefordert. Der Systemstart kann nur nach Eingabe eigener Kommandos fortgesetzt oder beendet werden. Wie kommt man weiter? Zunächst sollte geprüft werden, wie der Multipath-Status ist. Die kann mit dem Kommando '''/sbin/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 D der Eingabemodus verlassen werden. Das System findet nach dem korrekten Start jetzt 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. Ursache ist offensichtlich, dass das Paket '''multipath-tools''' durch diverse Updates so verändert wurde, dass durch den Systemstart Multipath nicht mehr früh genug gestartet wird. Der Start erfolgt in der Initramfs erst nach dem Start von lvm2 - und das ist zu spät. Ursache dafür könnte das Wegfallen des Files '''/lib/udev/rules.d/95-multipath.rules''' im Paket multipath-tools sein. Es gibt 2 Möglichkeiten der Lösung: 1. Zurücksetzen der Pakete multipath-tools, multipath-tools-boot, kpartx und kpartx-boot auf eine Version, die noch problemlos läuft 1. Modifizieren des Initram-FS so, dass der Start funktioniert. = Lösung 1 - Alte Pakete einsetzen = Die zuletzt funktionierenden Pakete '''kpartx''', '''kpartx-boot''', '''multipath-tools''' und '''multipath-tools-boot''' sind in Version `0.4.9-3ubuntu7.4` auf der Installations-CD von Ubuntu 14.04.3-Server vorhanden. Nachdem man es geschafft hat, das System zu starten, mountet man diesen Datenträger (z.B. auf '''/mnt'''). Danach wird man feststellen, dass diese Pakete im Verzeichnis '''/mnt/pool/main/m/multipath-tools/''' liegen. Von dort können sie installiert werden mittels {{{#!vorlage Befehl sudo dpkg -i ... }}} 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 {{{#!vorlage Befehl sudo update-initramfs -k all -u }}} wird neu gestartet. = Lösung 2 - Modifizieren des Boot-Vorgangs = Diese Lösung ist etwas komplexer. Sie erfordert eine Eingriff in den Systemstart. Es wurde festgestellt, dass der Multipath-Start nach dem Start von lvm2 zu spät kommt. Beim manuellen Eingreifen in den Start wird Multipath gestartet und lvm2 kann danach seine Arbeit aufnehmen. Das anschließende Mounten der Root-Partition gelingt. Das Lösungsprinzip besteht darin, zu einem möglichst frühen Zeitpunkt Multipath zu starten, gleich nach udev. Dadurch kommt es zwar zu vielen Meldungen während des Starts, aber der Systemstart kommt erfolgreich zu Ende. 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 "filter" 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: {{{#!vorlage Befehl 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 wird das File '''/etc/initramfs-tools/hooks/99-multipath''' erstellt und ausführbar gemacht: {{{#!vorlage Befehl sudo chmod +x /etc/initramfs-tools/hooks/99-multipath }}} Es sorgt dafür, dass Multipath zu einem frühen Zeitpunkt gestartet wird. {{{#!code bash #!/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: {{{#!vorlage Befehl sudo update-initramfs -k all -u }}} Die Initramfs kann ausgepackt werden. Das geschieht mit folgenden Kommandos: {{{#!vorlage Befehl mkdir initramfs cd initramfs zcat /boot/initrd.img-... | cpio -imdv }}} Dieses ausgepackte System kann analysiert werden, um die Wirkung zu verstehen. Es zeigt sich, dass unter '''scripts/''' zweimal '''multipath''' gestartet wird. Ein Reboot bringt jetzt zwar viele Meldungen, läuft aber durch. = Änderungen seit kpartx, kpartx-boot, multipath-tools, multipath-tools-boot Version 0.4.9-3ubuntu7.8 = Seit dieser Version funktioniert der Neustart des Systems wieder ohne das File '''/etc/initramfs-tools/hooks/99-multipath'''. In '''/etc/lvm/lvm.conf''' kann auch die '''filter''' Anweisung auf den in [https://help.ubuntu.com/lts/serverguide/multipath-devices.html] vorgeschlagenen Wert zurück gesetzt werden: {{{ filter = [ "r/block/", "r/disk/", "r/sd.*/", "a/.*/" ] }}} = Änderungen seit kpartx, kpartx-boot, multipath-tools, multipath-tools-boot Version 0.4.9-3ubuntu7.11 = Seit dieser Version funktioniert der Start wieder richtig flott. Zwischenzeitliche Wartezeiten von maximal 4 mal jeweils 30 Sekunden sind auf maximal 10 Sekungen geschrumpft, die wohl nicht vermeidbar sind, und das bei ca. 40 Multipath-FC-Devices. = Links = * [:Howto:] {Übersicht} - Übersicht aller Howto-Artikel #tag: Howto #tag: lvm #tag: multipath #tag: boot #tag: initrd #tag: Problem #tag: Lösung