Kurztipp: Multipath-LUN erhält keinen Alias unter Linux
Wenn eine logische Speichereinheit (LUN) eines SAN-Speichersystems einem Linux-Server zugewiesen werden soll, werden in der Regel mehrere Zugriffspfade verwendet, um die Verfügbarkeit des Speichers auch im Fehlerfall sicherstellen zu können. Unter Linux kommt hier in der Regel der Multipath-Daemon (multipathd
) zum Einsatz. Dieser bündelt die einzelnen Zugriffspfade zu einer abstrahierten Gerätedatei, die immer den besten Pfad wählt. Diese Gerätedatei wird wie die einer herkömmlichen lokalen Festplatte verwendet. Im Fehlerfall wird dann ein alternativer Zugriffspfad ausgewählt, um die Daten zu übertragen. Je höher die Anzahl der Pfade (i.d.R. zwischen 2 und 8), desto höher die Ausfallsicherheit.
Jede LUN eines Speichersystems verfügt über eine eindeutige ID, auch WWN (World Wide Name) oder WWID (World Wide Identifier). Mithilfe dieser ID stellt der Multipath-Daemon eine einzige Gerätedatei zur Verfügung stellt.
Um die Administration zu erleichtern, kann der Multipath-Daemon statt einem automatisch generierten Gerätedatei-Namen (z. B. /dev/mapper/mpath01
) auch einen benutzerdefinierten Alias verwenden (z. B. /dev/mapper/database1
). Letzteres Beispiel lässt sich hier deutlich besser merken.
Es ist jedoch möglich, das dieser Alias trotz entsprechender Konfiguration in der Multipath-Konfigurationsdatei /etc/multipath.conf
nicht übernommen wird. In einem solchen Fall sieht der Aufbau der Multipath-Topologie dann beispielsweise wie folgt aus:
1# multipath -ll
2...
3mpath01 (xxxx02e1) dm-10 IBM,1337
4[size=200G][features=1 queue_if_no_path][hwhandler=0][rw]
5_ round-robin 0 [prio=100][active]
6 _ 3:0:1:3 sdn 8:208 [active][ready]
7_ round-robin 0 [prio=20][enabled]
8 _ 3:0:0:3 sdh 8:112 [active][ready]
Hier wurde eine LUN mit 200 GB und zwei Pfaden angelegt und zugewiesen - jedoch wurde ein automatisch generierter Alias (mpath01
) zugewiesen.
In der Konfigurationsdatei wurde ein jedoch ein anderer Alias definiert:
1# vi /etc/multipath.conf
2...
3 multipath {
4 wwid xxx02E1
5 alias database1
6 }
7...
Oftmals liegt die Fehlerursache bei der Schreibweise der WWID - diese ist nämlich case-sensitive. In diesem Fall wurde ein enthaltener Buchstabe groß statt klein geschrieben. Ein Anpassen der Schreibweise löst oftmals schon das Problem:
1...
2 wwid xxx02e1
3...
4ESC ZZ
Um die Konfiguration des Multipath-Dienstes neu einzulesen, genügt es den entsprechenden Dienst darüber zu informieren - und schon stimmt auch der Alias:
1# service multipathd reload
2# rescan-scsi-bus.sh
3# multipath -ll
4...
5database1 (xxxx02e1) dm-10 IBM,1337
6[size=200G][features=1 queue_if_no_path][hwhandler=0][rw]
7_ round-robin 0 [prio=100][active]
8 _ 3:0:1:3 sdn 8:208 [active][ready]
9_ round-robin 0 [prio=20][enabled]
10 _ 3:0:0:3 sdh 8:112 [active][ready]
🙂