GNU/Linux >> LINUX-Kenntnisse >  >> Cent OS

Grundlegendes zu Linux Multipath (dm-multipath)

Was ist Multipathing?

Multipathing ermöglicht die Kombination mehrerer physischer Verbindungen zwischen einem Server und einem Speicher-Array zu einem virtuellen Gerät. Dies kann getan werden, um eine widerstandsfähigere Verbindung zu Ihrem Speicher bereitzustellen (ein Pfad, der nach unten geht, behindert die Konnektivität nicht) oder um die Speicherbandbreite für eine verbesserte Leistung zu aggregieren.

Als Beispiel hat der Server im folgenden Diagramm zwei HBAs, die jeweils mit einem separaten Fibre Channel-Switch verbunden sind, die wiederum mit separaten Controllern auf dem Speicher-Array verbunden sind.

Red Hat Enterprise Linux 7 unterstützt Multipathing unter Verwendung von dm-multipath Teilsystem. Dabei wird das Kernel-Device-Mapper-System verwendet, um virtuelle Geräte zu generieren, die vom multipathd-Daemon und dem multipath-Befehlszeilentool verwaltet werden.

Die erforderlichen Binärdateien, Daemons und Kernelmodule sind im Paket device-mappermultipath verfügbar. Sobald Device-Mapper-Multipath installiert, konfiguriert und gestartet ist, werden Geräteknoten für Multipath-Geräte an zwei verschiedenen Orten erstellt.

Zu Verwaltungszwecken werden Multipath-Geräte unter /dev/mapper erstellt . Sie können mpathN[pM] genannt werden wenn benutzerfreundliche Namen gewählt werden, oder sie können nach der World Wide ID (WWID) des Speichergeräts benannt werden. Ein Administrator kann auch benutzerdefinierte Namen für Multipath-Geräte festlegen. Diese benutzerdefinierten Namen werden mithilfe der Option alias im Abschnitt multipaths der Multipath-Konfigurationsdatei erstellt.

Multipath-Geräte werden auch unter /dev erstellt in Form von /dev/dm-N mit denen übereinstimmen, die unter /dev/mapper erstellt wurden. Diese Geräte sind ausschließlich für den internen Gebrauch des Systems bestimmt und sollten daher niemals direkt für administrative Zwecke verwendet werden.

Hinweis :Multipathing bietet Schutz vor einem Ausfall des Speicherzugriffspfads. Wenn der Speicher selbst nicht mehr verfügbar ist, geht der Zugriff auf den Speicher verloren.

Um ein Multipath-Gerät zu erstellen, werden verschiedene Pfade in Gruppen zusammengefasst, basierend auf den Einstellungen in /etc/multipath.conf Konfigurationsdatei. Normalerweise ist jeweils nur eine Gruppe aktiv, aber eine Gruppe kann aus mehreren Pfaden bestehen. Wenn eine Gruppe ausfällt, leitet der Multipath-Daemon den Speicherverkehr auf eine andere Gruppe um.

Multipathing konfigurieren

Um Multipathing zu konfigurieren, stellen Sie zunächst sicher, dass das Paket device-mapper-multipath installiert ist.

# yum -y install device-mapper-multipath

Sobald das Paket device-mapper-multipath installiert ist, muss eine Konfigurationsdatei für den Multipath-Daemon erstellt werden, /etc/multipath.conf. Der einfachste Weg, diese Datei zu erstellen, ist die Verwendung von mpathconf Dienstprogramm.

Wenn bereits eine Datei namens /etc/multipath.conf vorhanden ist, bearbeitet der Befehl mpathconf diese Datei. Wenn keine solche Datei existiert, kopiert mpathconf die Standardkonfiguration aus /usr/share/doc/device-mapper-multipath-*/multipath.conf . Wenn diese Datei nicht existiert, erstellt mpathconf eine neue Konfigurationsdatei von Grund auf neu.

Um eine Standardkonfiguration zu erstellen und dann den multipathd-Daemon zu starten und zu aktivieren, verwenden Sie den folgenden Befehl:

# mpathconf --enable --with_multipathd y --with_chkconfig y
Hinweis Hinweis:In der von mpathconf erstellten Standardkonfigurationsdatei werden benutzerfreundliche Namen mit der Option user_friendly_names aktiviert. Benutzerfreundliche Namen führen dazu, dass Multipath-Geräte mpathN genannt werden. Während dies nützlich sein kann, wenn nur ein Multipath-Gerät vorhanden ist, kann es verwirrend werden, wenn mehrere Multipath-Geräte vorhanden sind. Um benutzerfreundliche Namen zu deaktivieren, verwenden Sie –user_friendly_names n Option zu mpathconf. Dies führt dazu, dass Multipath-Geräte nach ihren WWIDs benannt werden.

Wenn vor dem Starten des multipathd-Daemons eine Feinabstimmung der Multipath-Konfiguration gewünscht wird, verwenden Sie den Befehl mpathconf nur mit der Option –enable:

# mpathconf --enable

Nachdem Sie die Konfigurationsdatei bearbeitet haben, aktivieren und starten Sie den multipathd-Daemon wie gewohnt mit dem Befehl systemctl.

Die Konfigurationsdatei multipath.conf

Die Konfigurationsdatei multipath.conf besteht aus fünf Abschnitten:

multipath.conf-Abschnitt Beschreibung
Schwarze Liste'{} Dieser Abschnitt definiert, welche Geräte von der Multipath-Topologie-Erkennung ausgeschlossen werden sollen.
Blacklist_Exceptions {} Dieser Abschnitt definiert, welche Geräte in die Multipath-Topologie-Erkennung aufgenommen werden sollen, obwohl sie im Abschnitt „Blacklist“ aufgeführt sind.
Standards {} Dieser Abschnitt definiert die Standardeinstellungen, die für alle Multipaths verwendet werden sollen, es sei denn, sie werden explizit im Abschnitt "devices {}" oder "multipaths {}" überschrieben.
Geräte {} Dieser Abschnitt enthält Überschreibungen für den Abschnitt defaults {} für bestimmte Gerätetypen, es sei denn, sie werden vom Abschnitt multipaths {} überschrieben. Geräte werden basierend auf ihren Hersteller-, Produkt- und Revisionsschlüsselwörtern (reguläre Ausdrücke, die mit Informationen aus sysfs übereinstimmen) identifiziert.
Multipaths {} Dieser Abschnitt enthält Einstellungen für bestimmte Multipaths. Dieser Abschnitt überschreibt die Definitionen in den Abschnitten defaults {} und devices {}. Multipaths werden basierend auf ihren WWIDs identifiziert (erhalten mit der Funktion getuid_callout).

Eine einfache Möglichkeit, sich Überschreibungen zu merken, ist:Multipaths> Geräte> Standards .

Schwarze Liste

Geräte können in der Konfigurationsdatei mithilfe der Blacklist {} auf die schwarze Liste gesetzt werden Abschnitt von multipath.conf. Beim Blacklisting mit Platzhaltern können einzelne Geräte mithilfe des Abschnitts blacklist_exceptions {} von der Blacklist ausgenommen werden. Geräte können entweder anhand ihres Geräteknotens oder ihrer WWID auf die schwarze Liste gesetzt werden. Das folgende Beispiel zeigt ein Beispiel für beides:

blacklist {
    devnode "^cciss" 
    wwid 1234567890abcde
}

Um die WWID eines Plattengeräts zu ermitteln, verwenden Sie das Dienstprogramm scsi_id.

/usr/lib/udev/scsi_id -g -u /dev/sdN 
360014053bd9ea2a35914e39a556051cf

Standards

Standardwerte für alle Multipaths können in den Standardeinstellungen{} festgelegt werden Abschnitt von multipath.conf. Die vollständige Liste aller eingebauten Standardwerte finden Sie in der Datei /usr/share/doc/devicemapper-multipath-*/multipath.conf.defaults. Einige der interessantesten Einstellungen sind:

  • path_selector :Der Algorithmus, der bestimmt, welcher Pfad innerhalb einer Prioritätsgruppe für die nächste E/A verwendet werden soll. Der Standardwert von „Round-Robin 0 ” verteilt I/O über alle Pfade in der Gruppe. Die Anzahl der Anfragen, die über einen Pfad gesendet werden, bevor zum nächsten gewechselt wird, wird durch rr_min_io_rq bestimmt Einstellung. Die Alternativen sind „Warteschlangenlänge 0 “, wodurch die nächste E/A-Anforderung an den Pfad mit der kürzesten Warteschlange ausstehender Anforderungen gesendet wird, und „Servicezeit 0 “, wodurch die nächste 1/0-Anfrage an den Pfad mit der kürzesten geschätzten Servicezeit gesendet wird.
  • path_grouping_policy :Diese Einstellung definiert, wie mehrere Pfade zu Prioritätsgruppen zusammengefasst werden. Standardmäßig Failover , wird jeder Pfad in eine separate Gruppe gestellt. Zum anderen mit dem Multibus werden alle möglichen Pfade in einer einzigen Gruppe zusammengefasst. Bevor Sie ein Multipath-Gerät für die Verwendung der Multibus-Richtlinie konfigurieren, stellen Sie sicher, dass der Speichercontroller Aktiv-Aktiv-Verbindungen unterstützt.
  • path_checker :Diese Einstellung legt fest, wie der multipathd-Daemon bestimmt, ob ein Pfad fehlerfrei ist. Abgesehen von den hardwareunabhängigen Optionen von directio und readsector0 , gibt es eine Reihe von hardwareunabhängigen Prüfprogrammen. Obwohl die Voreinstellung für diese Option directio ist, wird sie normalerweise in einem der Standardgeräte überschrieben, die im Abschnitt "Geräte {}" angegeben sind.
  • Funktionen :Diese Option gibt die zu aktivierenden Multipath-Funktionen an. Syntax ist die Form einer Zahlenliste , wobei num die Anzahl der aktivierten Features und list die Liste der aktivierten Features darstellt. Die beiden verfügbaren Funktionen sind queue_if_no_path und no_partitions .
  • benutzerfreundliche_Namen :Diese Einstellung legt fest, ob Multipaths ohne definierten Alias ​​mpathN (wenn auf yes gesetzt) ​​oder nach ihrer WWID benannt werden.
Hinweis :Wenn die Funktion queue_if_no_path mit der Einstellung „1 queue_if_no_path“ aktiviert ist und Pfade fehlschlagen, bleiben Prozesse, die I/O ausgeben, hängen, bis die Pfade wiederhergestellt sind. Dieses Verhalten ist in Clusterimplementierungen unerwünscht, da ein Knoten, der auf 1/0 zu einem ausgefallenen Speichergerät blockiert, den Rest des Clusters daran hindern kann, auf die Speicherressource zuzugreifen. Um diese Situation zu vermeiden, geben Sie für den Parameter no-path_retry den Wert fail an. Andernfalls schlägt die E/A sofort fehl und wird auf höheren Ebenen gesichert, anstatt auf unbestimmte Zeit auf 1/0 zu blockieren, bis die Pfade wiederhergestellt sind.Hinweis :Der kommentierte defaults-Abschnitt {} in der multipath.conf, die von mpathconf erstellt wurde, spiegelt nicht die tatsächlich eingebauten Standardwerte des Multipath-Daemons wider.

Der Bereich Geräte {}

In den Geräten {} Abschnitt können die Standardwerte für bestimmte Geräte überschrieben werden. Innerhalb des Geräteabschnitts {} gibt es einzelne Unterabschnitte für Geräte {}, in denen die Einstellungen für bestimmte Geräte aufgeführt sind. Die gängigste Speicherhardware hat bereits einen eigenen Abschnitt, der in den integrierten Standardeinstellungen für den Multipath-Daemon definiert ist. Wenn eine Hardware (noch) nicht aufgeführt ist, kann manuell ein Abschnitt für die Hardware hinzugefügt werden. Im Folgenden finden Sie eine Beispieldefinition für eine nicht vorhandene Speicherhardware. Das Gerät selbst wird über eine Kombination aus Vendor ausgewählt , Produkt , und Überarbeitung .

devices { 
    device { 
        vendor "MegaHyperSuperStorage" 
        product "BAS" 
        revision "513/B" 
        features "1 queue_if_no_path" 
        path_grouping_policy multibus 
        path_checker tur 
    }
}

In den vorangegangenen Beispielen gibt die Zeile „features“ an, dass neue E/A-Anforderungen akzeptiert und in die Warteschlange gestellt werden, auch wenn derzeit keine Pfade verfügbar sind.

Der Abschnitt multipaths {}

In den Multipaths {} Abschnitt können Außerkraftsetzungen für bestimmte Multipaths definiert werden. Dies kann verwendet werden, um verschiedene path_grouping-Richtlinien für einen bestimmten Multipath festzulegen. Eine der anderen häufigen Verwendungen des Abschnitts multipaths {} besteht darin, einen Alias ​​für einen Multipath zu definieren. Wenn ein Alias ​​festgelegt ist. der Name für den Geräteknoten in /dev/mapper/ für diesen Multipath basiert auf dem Alias, wodurch es einfacher wird, zwischen verschiedenen Multipaths zu unterscheiden.

Als Beispiel wird die folgende Konfiguration einen Clusterstorage-Alias ​​für den Multipath mit einer WWID von „1234567890abcdef“ sowie einen path_selector von queue-length festlegen.

multipaths { 
    multipath { 
        wwid "1234567890abcdef" 
        alias "clusterstorage" 
        path_selector "queue-length 0"
    }
}

Partitionen hinzufügen

Führen Sie die folgenden Schritte aus, um eine Partition auf einem Multipath-Gerät hinzuzufügen:

  1. Erstellen Sie die Partition auf dem Multipath-Gerät mit einem Partitionseditor, z. B. fdisk /dev/mapper/mpath0 .
  2. Führen Sie die partprobe aus Befehl zum Aktualisieren der Kernel-Ansicht der Partitionstabelle auf allen Geräten (einschließlich der Geräte, die in einem Multipath zusammengefasst sind).
  3. Führen Sie den Befehl kpartx -a aus , auf dem Multipath-Gerät, um Device-Mapper-Geräte für die neu erstellte(n) Partition(en) zu erstellen.

Entfernen eines Multipaths

Nachdem Sie alle Pfade für einen Multipath entfernt haben, entfernen Sie das Multipath-Gerät, indem Sie den Befehl multipath -f [device] ausführen . Wenn der multipathd-Daemon gestoppt wurde und noch Geräteknoten für Multipath-Geräte vorhanden sind, leeren Sie alle Multipath-Geräte, indem Sie multipath -F ausführen . Dies kann nützlich sein, wenn Sie verschiedene Konfigurationen testen und Überreste alter Konfigurationen herumliegen sehen.


Cent OS
  1. Verständnis des Multipath-Dienstprogramms zum Konfigurieren von DM-Multipath

  2. Verständnis von dm-Multipath-Identifikatoren in Linux

  3. Verstehen der dm-multipath-Konfigurationsdatei /etc/multipath.conf

  4. Grundlegendes zum DM-Multipath-Daemon (multipathd)

  5. Verstehen der Linux-SCSI-Reservierung

Grundlegendes zu Linux-Dateiberechtigungen

Die Hosts-Datei unter Linux

Prozesse unter Linux verstehen

Grundlegendes zu Linux-Dateiberechtigungen

Grundlegende Dateiberechtigungen und Eigentumsrechte in Linux verstehen

Verstehen der /etc/fstab-Datei unter Linux