Storage & Protokolle

Multipathing / MPIO

Multipathing bündelt mehrere Pfade zu einer Speicher-LUN zu einem logischen Gerät, für Ausfallsicherheit und Lastverteilung; ALUA markiert die optimalen Pfade.

  • Redundante Pfade zur LUN
  • Lastverteilung
  • ALUA (optimale Pfade)
  • Linux device-mapper-multipath
  • FC, iSCSI; NVMe via ANA
Von Andreas Huser, Technische Beratung & Architektur Aktualisiert am 10 Min. Lesezeit

Multipathing löst ein Problem, das in jedem redundanten Speichernetz auftritt: Führen mehrere physische Wege (über zwei HBAs, zwei Switches, zwei Array-Controller) zur selben LUN, sieht das Betriebssystem sie mehrfach als getrennte Geräte. Multipathing fasst diese Pfade zu einem logischen Gerät zusammen, schaltet bei Ausfall automatisch um und kann die Last über die Pfade verteilen.

Dieser Artikel erklärt das Grundproblem und seine Lösung, wie Pfade derselben LUN erkannt werden, den SCSI-Standard ALUA mit seinen Pfadzuständen, die Linux-Implementierung device-mapper-multipath mit ihren wichtigsten Stellschrauben, das Zusammenspiel mit ALUA-Arrays und redundanten Fabrics, die typischen Fehler sowie das NVMe-Pendant ANA.

1. Das Problem: dieselbe LUN, viermal

Hängt ein Server mit zwei HBAs über zwei Switches an einem Array mit zwei Controllern, ergeben sich vier Wege zur selben LUN, und Linux zeigt sie als vier getrennte Block-Geräte (etwa /dev/sdb bis /dev/sde). Würde man darauf direkt zugreifen, käme es zu Datenkorruption. Multipathing erkennt, dass alle vier dieselbe LUN sind, und bietet stattdessen ein einziges logisches Gerät (etwa /dev/mapper/mpatha) an.

2. Wie Pfade zugeordnet werden

Die Software erkennt zusammengehörige Pfade an der WWID, einer eindeutigen Kennung, die das Gerät selbst meldet (meist ein NAA- oder EUI-Identifier aus den SCSI-Geräteinformationen). Alle Pfade mit derselben WWID gehören zur selben LUN und werden zu einem logischen Gerät gebündelt. Diese Kennung ist stabil, anders als der wechselnde Gerätename, weshalb in fstab und LVM immer das Multipath-Gerät und nie ein einzelnes /dev/sdX verwendet werden sollte.

3. ALUA: welcher Pfad ist der beste

Bei Arrays mit zwei Controllern sind nicht alle Pfade gleichwertig: Der Weg zum besitzenden Controller ist optimal, der Weg über den anderen funktioniert, aber mit Umweg und höherer Latenz. Der SCSI-Standard ALUA (Asymmetric Logical Unit Access) macht das sichtbar. Er kennt unter anderem die Zustände:

ALUA-ZustandBedeutung
active/optimizedbester Pfad (direkt am besitzenden Controller)
active/non-optimizednutzbar, aber höhere Latenz (über den anderen Controller)
standbykein Datenverkehr, nur Verwaltung
unavailablederzeit nicht nutzbar

ALUA sorgt dafür, dass der Host bevorzugt die optimalen Pfade nutzt und nur bei deren Ausfall auf die nicht-optimalen ausweicht. Ohne ALUA-bewusste Pfadgruppen verschenkt man Leistung oder erzeugt unnötiges Controller-zu-Controller-Routing.

4. Linux: device-mapper-multipath

Unter Linux übernimmt das device-mapper-multipath: ein Kernel-Baustein plus der Dienst multipathd, der die Pfade laufend überwacht, ausgefallene erkennt und wiederhergestellte zurücknimmt. Konfiguriert wird über /etc/multipath.conf. Wichtige Stellschrauben sind der Pfad-Selektor für die Lastverteilung (etwa service-time oder round-robin), die Pfadgruppierung nach Priorität (für ALUA), das Failback-Verhalten und no_path_retry für den Fall, dass alle Pfade ausfallen. Moderne Versionen erkennen ALUA-Arrays automatisch.

Status ansehen und ALUA-Geräteregel (Linux)

multipath -ll        # logische Geräte, Pfade und ihre Zustände

# /etc/multipath.conf (Auszug für ein ALUA-Array)
devices {
  device {
    vendor "ACME"
    product "ARRAY*"
    path_grouping_policy group_by_prio
    prio alua
    hardware_handler "1 alua"
    failback immediate
  }
}

5. Redundante Fabrics und typische Fehler

Multipath-Software wirkt nur, wenn es wirklich getrennte physische Pfade gibt, idealerweise zwei voneinander unabhängige Fabrics. Läuft alles über einen Switch, bleibt dieser ein Single Point of Failure, egal wie gut die Software konfiguriert ist. Die häufigsten Stolpersteine:

  • Lokale Disks nicht ausgeschlossen ohne Blacklist versucht multipathd, die Systemplatte als SAN-Pfad zu behandeln, was zu Hängern führt.
  • Auf /dev/sdX statt Multipath-Gerät zugegriffen nach einem Pfadwechsel zeigt der alte Name auf etwas anderes; immer das Mapper-Gerät verwenden.
  • Dienst nicht persistent ohne aktivierten multipathd stehen die Geräte nach dem Neustart nicht bereit.
  • Nur eine Fabric Software-Multipath ohne physische Redundanz schützt nicht vor dem Ausfall des einzigen Pfades.

6. NVMe macht es selbst: ANA

Für NVMe-over-Fabrics gibt es das ALUA-Gegenstück ANA (Asymmetric Namespace Access), und der Linux-Kernel bringt das Multipathing dafür nativ mit, ohne device-mapper-multipath. Die Pfadzustände entsprechen denen von ALUA (optimal, nur erreichbar, nicht verfügbar), die Auswahlrichtlinie lässt sich einstellen (etwa NUMA-nah, Round-Robin oder nach Warteschlangentiefe). Für NVMe ist das native Verfahren der empfohlene Weg.

7. Stärken und Grenzen

StärkenGrenzen
Transparente Redundanz: Pfadausfall ohne Unterbrechungschützt nur vor Pfadausfall, nicht vor Array-Ausfall
Lastverteilung über mehrere Pfadeerfordert echte physische Redundanz (getrennte Fabrics)
Herstellerneutral über ALUA standardisiertFehlkonfiguration (Blacklist) kann Datenkorruption riskieren
Unter Linux offen und ohne ZusatzkostenKonfiguration und Defaults je Distribution unterschiedlich
Automatische Pfad-Wiederherstellung durch multipathdfür NVMe zunehmend durch natives ANA-Multipathing ersetzt

Häufige Fragen zu Multipathing / MPIO

Damit der Zugriff auf eine LUN den Ausfall eines Pfades (HBA, Kabel, Switch, Controller-Port) übersteht und Last über mehrere Pfade verteilt werden kann. Ohne Multipathing erschiene dieselbe LUN über mehrere Pfade als getrennte Geräte, und ein direkter Zugriff darauf würde Daten beschädigen. Voraussetzung ist allerdings echte physische Redundanz, am besten zwei getrennte Fabrics.

ALUA (Asymmetric Logical Unit Access) ist ein SCSI-Standard, mit dem ein Speicher-Array dem Host mitteilt, welche Pfade zu einer LUN optimal sind und welche nur erreichbar. Bei Arrays mit zwei Controllern ist der Weg zum besitzenden Controller optimal, der über den anderen langsamer. Das Multipathing nutzt diese Information, um bevorzugt die optimalen Pfade zu verwenden.

Auch der Autor ist nur ein Mensch, dem Fehler unterlaufen können. Wenn in diesem Beitrag etwas nicht stimmt oder unklar ist, freuen wir uns über einen kurzen Hinweis über das Kontaktformular unten, wir prüfen und korrigieren das.

Der nächste Schritt

Multipathing / MPIO im eigenen Haus richtig einsetzen?

Wir klären, ob und wie der Baustein zu Ihrer Infrastruktur passt, und sagen offen, wann sich der Aufwand lohnt und wann nicht.

Erstgespräch vereinbaren oder Formular ausfüllen