Beruflich Dokumente
Kultur Dokumente
1. Einleitung
Das folgende Dokument beschreibt die Installation und Konfiguration vom Device Mapper
Multipath (multipath-tools) unter Linux. Als Beispiel wurde ein SLES10 SP1 32bit Linux
verwendet, somit können sich die folgenden Beispiele von anderen Distributionen
unterscheiden.
2. Installation
2.1. Packet installieren
Falls keine Packete der Distribution vorliegen, können die Quellen von
http://christophe.varoqui.free.fr/ herunter geladen werden und von Hand kompiliert und
installiert werden.
Nach der Installation sollten die Startscripte (multipath-tools oder multipathd) in den
gewünschten Runlevels eingetragen werden, damit beim booten das MPIO aktiviert wird.
/etc/init.d/multipathd {start|stop|status|try-restart|restart|force-
reload|reload|probe}
Nach dem Start können mit multipath –l die generierten Pfade angezeigt werden.
Da die Standartwerte für die meisten FC-HBAs nicht für Multipath konfiguriert sind, müssen
die Module unter Linux mit speziellen Parametern geladen werden. Unter SLES10 werden
die Parameter in /etc/modules.conf.local eingetragen.
3. Konfiguration
3.1. Übersicht
Die multipath.conf wird nicht bei der Installation generiert. Diese muss manuell erstellt
oder eine Beispiel-Datei aus /usr/share/doc/multipath-tools nach /etc kopiert
werden.
In der Regel funktioniert MPIO ohne große Konfiguration. Nach den Installation und Start von
multipath-tools wird Multipathing (MPIO) aktiviert. Um den aktuellen Status und die Pfade
anzuzeigen, einfach
linux:/ # multipath -l
In diesem Beispiel gibt es zwei Devices (sda und sdb) die auf das gleiche Volume vom
Strorage-System (transtec PV660) zeigen. Diese zwei Devices werden unter einem MPIO-
Device zusammengefasst (3600d0230000000000df4524651a14500 und Alias mpath0)
und unter /dev/mapper/ abgelegt. Dieses Device kann man nun formatieren und
gemountet. Alternativ kann auch mit dem Device /dev/dm-0 gearbeitet werden.
blacklist { ... } Blacklist für Devices die von multipathd ignoriert werden
linux:/ # multipath –l
abgefragt. Das folgende Schaubild zeigt eine mögliche Ausgabe mit allen wichtigen
Informationen
Alias scsi_id / wwid (eindeutig) Hersteller / Produkt
Path Status
[ready] Pfad st aktiv und verwaltet I/Os
[shaky] Pfad ist aktiv aber temporär nicht verfügbar
[faulty] Der Pfad ist nicht aktiv.
[ghost] Dieser Pfad ist ein passiver Pfad bei einem active/passive Controller.
Standard-Aliase
defaults
{
use_friendly_names yes
}
Durch diesen Parameter werden alle MPIO-Devices in mpath[0..9] umbenannt und unter
/dev/mapper/ abgelegt.
Benutzerdefinierte Aliase
Um einen benutzerdefinierten Alias zu setzten, muss die scsi_id bzw. die wwid vom Block-
Device ausgelesen und wie im folgenden Beispiel mit einem Alias versehen werden.
So erhält man die scsi_id vom Block-Device sda. Danach fügt man die folgenden Zeilen in
die multipath.conf ein.
multipaths
{
multipath {
wwid 3600d0230000000000df4524651a14500
alias vol1
}
}
Zum Schluß muss multipathd neu gestartet werden damit die Änderung wirksam wird.
Damit multipathd nicht zu jedem Device ein neues MPIO-Device erstellt, sollte eine
Blacklist erstellt werden. Standartmäßig werden z.B. alle loop- oder ram-Devices
ausgeschlossen. Führt man multipath –l –v3 aus, sieht man in der Ausgabe welche
Devices vorhanden sind und ausgeschlossen werden.
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]*]"
device {
vendor AMCC
product 9550SXU-4L
}
}
Es gibt verschiedene Möglichkeiten Pfade miteinander zu kombinieren. Die Art wie die
einzelnen Pfade mit einander Gruppiert werden, hängt vom folgendem Parameter ab:
defaults
{
path_grouping_policy failover
}
failover
Bei failover werden alle Pfade in einer aktiv/passiv Konfiguration angeordnet. Jeweils ein
Pfad wird einer Pfad Gruppe zugeordnet.
multibus
Bei multibus werden alle Pfade einer einzigen Pfad Gruppe zugeornet und im Round-
Robin Mode betrieben.
group_by_prio
In diesem Modus werden Pfade nach Ihrer Priorität gruppiert. Dazu benötigt man allerdings
ein Script das Prioritäten von Pfaden feststellt.
defaults
{
path_grouping_policy failover
prio_callout "/sbin/pathprio.sh %n"
}
Beispiel: pathprio.sh
#!/bin/bash
exit 0
Beispiel: pathprio.conf
#PRIO #Device
1 sda sdb
0 sdd sde
3.3.6. Failback
Falls ein Pfad ausfällt und wieder hergestellt wird, gibt es die Möglichkeit zwischen einem
automatischen oder einem manuellen Failback zu wählen.
defaults
{
failback immediate
}
manual
immediate
Sobald der defekte Pfad wieder verfügbar ist, wird ein automatischer Failback durchgeführt.
defaults
{
path_grouping_policy failover
path_checker "readsector0"
polling_interval 10
getuid_callout "/sbin/scsi_id -g -u -s /block/%n"
failback immediate
no_path_retry fail
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]*]"
}
multipaths
{
multipath {
wwid 3600d0230000000000df4524651a14500
alias vol1
}
}
Alle Parameter die unter defaults gesetzt wurden, können bei multipath (Pfad
Gruppe) wieder neu gesetzt und geändert werden. Diese gelten dann nur für diese
Pfad Gruppe.