Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

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
#