Home ORDIX AG             Dienstleistung             Trainingsshop    Kunden / Referenzen Aktuelles    Kontakt
Home  Pfeil  ORDIX News  Pfeil  1/2008  Pfeil  Betriebssysteme
suche: 
Dieser Artikel richtet sich an Systemadministratoren, die einfach und kostengünstig Speicherbereiche aus dem SAN redundant an ihre Linux- Systeme anbinden möchten oder nach einer Alternative zu kostenpflichtigen Lösungen suchen.

Glossar

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.


I/O-Multipathing mit Linux-Bordmitteln

Viele Wege führen zur LUN


Bereits seit der Linux-Kernelversion 2.6.12, also seit Juni 2005, besteht die Möglichkeit, Storage-Systeme mit Hilfe des Device Mappers Multipathing-I/O (DM-MPIO) über redundante, physikalische Pfade anzubinden. Vorher war dies nur mit kommerzieller Software (z. B. EMC PowerPath) möglich. Aufgrund fehlender Unterstützung der Hersteller werden allerdings nachwievor meist proprietäre Software-Lösungen verwendet. Seit einiger Zeit zertifizieren jedoch auch die großen Hersteller von Storage-Systemen den Einsatz der frei verfügbaren I/O-Multipathing-Lösung. Nachdem EMC bereits im Jahr 2006 die Nutzung in Single-Server-Umgebungen freigegeben hat, wird seit Ende 2007 auch der Einsatz in Cluster-Umgebungen (z. B. mit OCFS) unterstützt. Dies möchten wir zum Anlass nehmen, Ihnen die wichtigsten Konzepte und Komponenten dieser frei verfügbaren Multipathing-Lösung einmal in kompakter Form vorzustellen.

Wie funktioniert I/O-Multipathing?

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 als Basis

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.

multipath configuration tool

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).

Konfiguration

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).

kpartx

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.

Der Multipath-Dämon

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).

Fazit

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).