22.3.2. Erstellen eines Multipath-Geräts mit mdadm
In addition to creating RAID arrays,
mdadm
can also be used to take advantage of hardware supporting more than one I/O path to individual SCSI LUNs (disk drives). The goal of multipath storage is continued data availability in the event of hardware failure or individual path saturation. Because this configuration contains multiple paths (each acting as an independent virtual controller) accessing a common SCSI LUN (disk drive), the Linux kernel detects each shared drive once "through" each path. In other words, the SCSI LUN (disk drive) known as /dev/sda
may also be accessible as /dev/sdb
, /dev/sdc
, and so on, depending on the specific configuration.
Damit immer ein einzelnes Gerät erreichbar bleibt, falls ein I/O-Pfad fehlschlägt oder gesättigt wird, liefert
mdadm
einen zusätzlichen Parameter zu dessen level
-Option. Dieser Parameter multipath
weist die md-Schicht (md-layer) im Linux Kernel an, I/O-Anfragen von einem Pfad zum anderen im Falle eines I/O-Pfad Fehlverhaltens umzuleiten (rerouten).
Um ein Multipath-Gerät zu erstellen, bearbeiten Sie die Datei
/etc/mdadm.conf
, um die Werte in den DEVICE
und ARRAY
-Zeilen festzulegen, welche Ihre Hardwarekonfiguration widerspiegeln.
Anmerkung
Im Gegensatz zum vorherigen RAID-Beispiel (wobei jedes Gerät, das in
/etc/mdadm.conf
festgelegt ist, verschiedene physikalische Plattenlaufwerke darstellen muss) verweist jedes Gerät in dieser Datei auf dasselbe gemeinsam benutzte Plattenlaufwerk.
Der Befehl, der zur Erstellung eines Multipath-Geräts benutzt wird, ist ähnlich dem Befehl zur Erstellung eines RAID-Geräts. Der Unterschied besteht im Austausch eines Raid-Level-Parameters mit dem
multipath
-Parameter:
mdadm -C /dev/md0 --level=multipath --raid-devices=4 /dev/sda1 /dev/sdb1 /dev/sdc1 /dev/sdd1 Continue creating array? yes mdadm: array /dev/md0 started.
Due to the length of the mdadm command line, it has been broken into two lines.
In diesem Beispiel besteht die Hardware aus einer SCSI LUN, dargestellt als vier separate SCSI-Geräte, wobei jedes einzelne Gerät auf denselben Speicher über verschiedene Pfade zugreift. Ist das Multipath-Gerät
/dev/md0
einmal erstellt, so werden alle entsprechenden I/O-Operationen auf /dev/sda1
, /dev/sdb1
, /dev/sdc1
oder /dev/sdd1
gerichtet (abhängig davon, welcher Pfad gegenwärtig aktiv und betriebsbereit ist).
Die Konfiguration von
/dev/md0
kann mittels mdadm --detail /dev/md0
eingehender betrachtet werden, um sicher zu stellen, dass es sich dabei um ein Multipath-Gerät handelt:
/dev/md0: Version : 00.90.00 Creation Time : Tue Mar 2 10:56:37 2004 Raid Level : multipath Array Size : 3905408 (3.72 GiB 3.100 GB) Raid Devices : 1 Total Devices : 4 Preferred Minor : 0 Persistence : Superblock is persistent Update Time : Tue Mar 2 10:56:37 2004 State : dirty, no-errors Active Devices : 1 Working Devices : 4 Failed Devices : 0 Spare Devices : 3 Number Major Minor RaidDevice State 0 8 49 0 active sync /dev/sdd1 1 8 17 1 spare /dev/sdb1 2 8 33 2 spare /dev/sdc1 3 8 1 3 spare /dev/sda1 UUID : 4b564608:fa01c716:550bd8ff:735d92dc Events : 0.1
Ein anderes Merkmal von
mdadm
ist die Fähigkeit, das Entfernen eines Geräts von einer Betriebskonfiguration zu erzwingen (egal, ob es dabei um ein Mitglied eines RAID-Arrays oder um einen Pfad in einer Multipath-Konfiguration handelt). Im folgenden Beispiel ist /dev/sda1
als fehlerhaft gekennzeichnet, wird anschließend entfernt, um schließlich wieder zur Konfiguration hinzugefügt zu werden. Auf eine Multipath-Konfiguration hätte dies zu diesem Zeitpunkt in puncto I/O-Aktivitäten keine Auswirkungen:
# mdadm /dev/md0 -f /dev/sda1 mdadm: set /dev/sda1 faulty in /dev/md0 # mdadm /dev/md0 -r /dev/sda1 mdadm: hot removed /dev/sda1 # mdadm /dev/md0 -a /dev/sda1 mdadm: hot added /dev/sda1 #