
| I/O-Multipathing Zugriff auf Blockgeräte über mehrere physikalische Pfade zur Steigerung von Verfügbarkeit und Performance. |
| DM-MPIO Device Mapper Multipathing-I/O. DM-MPIO ist die native I/O-Multipathing- Lösung auf Linux-Systemen seit Kernel 2.6.12. |
| LUN Logical Unit Number. LUN ist die Zuordnungsnummer für Geräte an einem SCSI-Bus (z. B. für virtuelle Festplatten eines Disk Arrays). |
| SAN Storage Area Network. SAN ist ein Netzwerk zur Anbindung von Speicherressourcen an Serversysteme. |
| OCFS Oracle Cluster Filesystem. Das OCFS ist ein frei verfügbares Cluster Filesystem von Oracle. |
| WWID World Wide ID. WWID ist eine weltweit eindeutige Bezeichnung, z. B. als Adresse eines Gerätes im SAN. |
Wie der Name bereits sagt: Voraussetzung für I/O-Multipathing sind mehrere physikalische Pfade, die zu einem Storage Device führen. Fällt einer dieser Pfade aus, werden Schreibund Leseoperationen (I/O) über die verbliebenen Pfade ausgeführt. Zur Verbesserung der Performance können die Operationen zudem bei Bedarf auch im Normalbetrieb auf unterschiedliche Pfade verteilt werden.
Der Device Mapper ist seit der Kernel-Version 2.6 eine zentrale Komponente des Storage Management auf Linux-Systemen. Mit seiner Hilfe werden virtuelle Block-Devices erstellt, deren Blöcke mittels Zuordnungstabellen, so genannten „maps“, auf beliebige existierende Block-Devices verteilt werden können. Die Art und Weise, wie die Blöcke verteilt werden, ist dabei flexibel (z. B. linear oder als Spiegel) und wird durch „targets“ definiert. Das Logical Volume Management basiert beispielsweise seit der Version 2 auf dem Device Mapper.
![]() |
| Abb. 1: Device Mapper Multipathing-I/O im Überblick. |
# /sbin/scsi_id -g -u -s /block/sdc 360070590000280101094433030303439 # /sbin/scsi_id -g -u -s /block/sde 360070590000280101094433030303439 |
| Abb. 2: Ermittlung einer eindeutigen ID mit scsi_id. |
# multipath -ll oracle_mp (360070590000280101094433030303439) dm-0 EMC,SYMMETRIX [size=100G][features=0][hwhandler=0] \_ round-robin 0 [prio=2][active] \_ 1:0:0:0 sdc 8:32 [active][ready] \_ 2:0:0:0 sde 8:64 [active][ready] |
| Abb. 3: Anzeige der aktuellen Konfiguration mit dem Multipath Tool. |
# Welche Devices nicht pruefen? (z.B. nicht /dev/sda und /dev/sdb)
blacklist {
devnode "^(ram|raw|loop|fd|md|dm-|sr|scd|st)[0-9]*"
devnode "^hd[a-z][[0-9]*]"
devnode "^sd[ab][0-9]*"
}
# Multipaths konfigurieren
multipaths {
multipath {
wwid "360070590000280101094433030303439"
alias "oracle_mp"
path_grouping_policy multibus
}
}
|
| Abb. 4: Auszug aus der Konfigurationsdatei /etc/multipath.conf. |
# multipathd -k multipathd> list paths hcil dev dev_t pri dm_st chk_st next_check 1:0:0:0 sdc 8:32 1 [active][ready] XXXXXX.... 12/20 2:0:0:0 sde 8:64 1 [active][ready] XXXXXX.... 12/20 |
| Abb. 5: Der interaktive Modus des Multipath-Dämons. |
Mit der Kernel-Version 2.6.12 wurde der Device Mapper um das Target „multipath“ erweitert und bildet damit das Fundament des I/OMultipathing. Mit seiner Hilfe wird ein virtuelles Device generiert, hinter dem sich die verschiedenen Pfade zum eigentlichen Gerät verbergen. Die Aufgabe des Device Mappers ist sowohl die Verteilung der Schreib- und Leseoperationen als auch die Erkennung defekter Pfade und die entsprechende Umlenkung der Operationen auf die verbliebenen Pfade. Einen Überblick über den DM-MPIO gibt Abbildung 1.
Um ein Multipathing Device anzulegen, sind folgende Schritte notwendig:
Die Schritte können prinzipiell auch manuell durchgeführt werden. In der Praxis werden sie allerdings vom Multipath Tool übernommen. Dieses kann automatisch bei der Erkennung neuer Block-Devices durch das Hotplug-Subsystem aufgerufen oder bei Bedarf auch manuell ausgeführt werden. Das Werkzeug ermittelt mit Hilfe des Kommandos scsi_id über ein SCSI-Inquiry eine eindeutige Bezeichnung, die Worldwide-ID (WWID) eines SCSI-Devices, z. B. für /dev/sdc und /dev/sde (siehe Abbildung 2).
Weisen mehrere SCSI-Devices die gleiche WWID auf, so wird davon ausgegangen, dass es sich um redundante Pfade zu demselben Gerät handelt und ein entsprechendes Multipath Device wird erzeugt (siehe Abbildung 3).
Die Konfiguration des Multipath Tools erfolgt in der Datei /etc/multipath.conf. In ihr wird unter anderem definiert, welche Devices wie auf redundante Pfade zu prüfen sind und welches Multipathing-Verfahren genutzt werden soll. Zudem können sprechende Namen für die zu erstellenden Multipathing Devices konfiguriert werden (siehe Abbildung 4).
Das Multipath Tool legt lediglich Maps für komplette Block-Devices an. Sind diese jedoch partitioniert, wird für jede Partition eine separate Map benötigt. Diese Aufgabe übernimmt das Tool „kpartx“. Es untersucht ein gegebenes Meta-Device auf Partitionen und legt bei Bedarf entsprechend zusätzliche Meta-Devices an. Standardmäßig wird zu diesem Zweck die Endung -part<nr> an den Namen des Basis-Devices angehängt. D. h. die erste Partition des Multipath Devices /dev/mapper/oracle_mp ist über den Pfad /dev/mapper/oracle_mp-part1 erreichbar usw.
Die Aufgabe des Multipath-Dämons multipathd ist die dynamische Rekonfiguration der Multipathing Devices bei Ausfall und Restaurierung von Pfaden. Des Weiteren liefert multipathd eine Kommandozeilenschnittstelle, die es dem Administrator ermöglicht, die aktuelle Konfiguration abzurufen bzw. zu verändern (siehe Abbildung 5).
Das DM-MPIO stellt nicht nur eine kostenlose, sondern vor allem eine offene und sehr klar strukturierte Multipathing-Lösung für Linux-Systeme dar. Die zunehmende Unterstützung durch große Storage-Anbieter legt nahe, dass DM-MPIO in Zukunft vermehrt als Alternative zu traditioneller Multipathing Software eingesetzt wird.
Christof Amelunxen (info@ordix.de).