cdomingos.multipath
Ansible Rolle: Multipath (DM Multipath)
Eine gute Ansible-Rolle, die die Linux-eigene Multipathing-Software (DM Multipath) richtig für Boot von SAN oder Lokales Boot einrichtet.
Diese Multipath-Ansible-Rolle kann:
- DM Multipath gemäß Produktdokumentation und den besten Praktiken der Branche konfigurieren
- Treiberparameter konfigurieren
Warnung
Diese Rolle ersetzt die DM Multipath-Konfiguration
Frühere Einstellungen werden überschrieben, überprüfen Sie multipath_backup_permanent
im Abschnitt Rollenvariablen.
Diese Konfiguration betrifft die folgenden Verzeichnisse und Konfigurationsdateien:
/etc/multipath/
/etc/multipath.conf
Wenn nach dem Neustart des verwalteten Hosts etwas falsch ist, können Fehler im Initramfs zu einem Kernel panic beim Booten nach "dracut Warning: LVM rootvg/rootlv nicht gefunden"
führen.
In diesem Fall empfehle ich:
- Booten Sie das System mit einem Rescue ISO-Image.
- Stellen Sie die Hauptdateien wieder her:
- /boot/<original-initramfs>.img.ansible_multipath
- /etc/fstab.ansible_multipath
- /etc/lvm/lvm.conf.ansible_multipath
HINWEIS: Es gibt viele Möglichkeiten, um Ihr System wieder in einen betriebsbereiten Zustand zu versetzen. Kernel-Boot-Parameter wie rdshell
oder rd.shell
, sowie das Entfernen von rhgb
und quiet
, können Ihnen helfen, Ihr beschädigtes Initramfs zu beheben.
Wie funktioniert es?
Es gibt zwei Hauptphasen: Vorbereitung und Einrichtung.
In der Vorbereitungsphase führt diese Rolle Folgendes aus (keine Systemänderungen, außer der Paketinstallation, wenn angegeben):
- Überprüfen, ob das Paket device-mapper-multipath installiert ist (Sie können es installieren oder aktualisieren. Siehe Variablen)
- Eigenschaften des Geräts für das /boot gemountete Dateisystem abrufen, auch für /boot/efi
- Eigenschaften abrufen und das echte Festplattengerät für das /boot gemountete Dateisystem entdecken
- Modprobe-Treiber gemäß dem Anbieter und Modell des entdeckten echten Bootlaufwerks laden
- Den Typ der Konfiguration (Boot von SAN?) basierend auf dem Treiber des Bootlaufwerks automatisch auswählen
- Den Standard-Kernel und das Initramfs von GRUB abrufen
- Überprüfungen für Boot von SAN oder lokale Boot-Szenarien laden
- Einen Pseudonamen für das echte Festplattengerät festlegen
- Den LVM-Filter definieren
In der Einrichtungphase nimmt diese Rolle (Systemänderungen) vor:
- Sichern einiger Systemdateien, wie /etc/fstab, aktuelles Initramfs und /etc/lvm/lvm.conf
- Entfernen der aktuellen DM Multipath-Konfigurationsdateien
- Erstellen einer initialen /etc/multipath.conf-Datei
- Einrichten der /etc/multipath.conf-Datei und Überprüfung auf Syntax oder Fehler
- Einrichten der /etc/fstab
- Einrichten des LVM-Filters und Überprüfung auf Syntax oder Fehler
- Einrichten der Modprobe-Dateien und Überprüfung auf Syntax oder Fehler
- Einrichten des Initramfs und Überprüfung auf Fehler
- Im Falle von Fehlern werden zusätzliche Dateien entfernt und Systemdateien anhand des vorherigen Backups zurückgesetzt
- System neu starten
- Vorherige Sicherungsdateien entfernen
Anforderungen
Das Playbook muss mit become: yes
oder entsprechender Root-Berechtigung und gather_facts: yes
ausgeführt werden.
- Ansible Engine 2.7.1+
Rollenvariablen
Die Multipath-Rolle wird über Variablen konfiguriert, die mit multipath_
als Namenspräfix beginnen.
Liste der Variablen:
Variable | Typ | Beschreibung |
---|---|---|
multipath_setup_pseudodevname |
Zeichenfolge (m) * | Definieren Sie den Pseudogerätenamen (Alias) für das Bootlaufwerk, das von DM Multipath verwaltet wird |
multipath_package_install |
boolean (o) | Installieren Sie das Paket device-mapper-multipath, wenn es nicht vorhanden ist |
multipath_package_upgrade |
boolean (r) | Upgrade (auch installieren) des Pakets device-mapper-multipath |
multipath_preserve_currentfiles |
boolean (r) | Vor der Einrichtung eine permanente Kopie der aktuellen DM Multipath-Konfigurationsdateien erstellen |
multipath_reboot_allow |
boolean (r) | Erlauben Sie dieser Rolle, den verwalteten Knoten neu zu starten |
multipath_reboot_timeoutguest |
ganze Zahl (o) | Maximale Zeit (Sek.) für 'Neustart', während auf das Online-Werden eines verwalteten Gastsystems gewartet wird |
multipath_reboot_timeoutbaremetal |
ganze Zahl (o) | Maximale Zeit (Sek.) für 'Neustart', während auf das Online-Werden eines verwalteten Bare-Metal-Systems gewartet wird |
multipath_modprobe_custom |
Liste (o) | Laden und Definieren von Treiberparametern in Bezug auf den Hersteller oder das Modell des Bootlaufwerks |
multipath_configfile_commentlines |
boolean (o) * | Kommentieren Sie alle Zeilen in /etc/multipath.conf |
multipath_configfile_bybasic |
boolean (o) * | Überschreibt die Datei /etc/multipath.conf mit einer grundlegenden und funktionalen Konfiguration |
multipath_configfile_bytemplate |
boolean (o) | Überschreibt die Datei /etc/multipath.conf mit vordefinierten Rollenvorlagen |
multipath_configfile_byusertemplate |
Zeichenfolge (o) | Überschreibt die Datei /etc/multipath.conf mit einer benutzerdefinierten Vorlage |
multipath_configfile_bysections |
Zeichenfolge (o) | Beinhaltet benutzerdefinierte Abschnitte in der Datei /etc/multipath.conf |
multipath_configfile_defaults |
Liste (o) | Beinhaltet zusätzliche Parameter im "defaults {"-Abschnitt der Datei /etc/multipath.conf |
multipath_debug_sysfilecontent |
boolean (o) | Zeige vor Post-Setup-Aufgaben (z.B. Neustart) den Inhalt der modifizierten Systemdateien an |
multipath_debug_showvariables |
boolean (r) | Zeige Rollenvariablen und deren Werte |
(m) - obligatorisch
(r) - empfohlen
(o) - optional
* - Standardwert wird angewendet (siehe defaults/main.yml
)
Erklärte Liste der Variablen:
multipath_setup_pseudodevname
: definiert den Pseudogerätenamen (Alias) für das Bootlaufwerk, das von DM Multipath verwaltet wird (z.B. /dev/mapper/bootLUN)Typ: Zeichenfolge
Betroffene Dateien:
- /etc/fstab
- /etc/multipath.conf
Beispiel:
multipath_setup_pseudodevname: bootLUN
HINWEIS: Verwenden Sie keine "p" oder numerischen Zeichen
multipath_package_install
: installiert das Paket device-mapper-multipath, wenn es nicht vorhanden istTyp: boolean
Betroffene Dateien: k.A.
Beispiel:
multipath_package_install: ja
multipath_package_upgrade
: aktualisiert (auch installiert) das Paket device-mapper-multipathTyp: boolean
Betroffene Dateien: k.A.
Beispiel:
multipath_package_upgrade: ja
multipath_preserve_currentfiles
: macht vor der Einrichtung eine permanente Kopie der aktuellen DM Multipath-Konfigurationsdateien, wie z.B. /etc/multipath.conf und /etc/multipath/Typ: boolean
Betroffene Dateien: k.A.
Beispiel:
multipath_preserve_currentfiles: ja
HINWEIS: Bewahrte Dateien werden als /etc/multipath.conf.ansible_multipath und /etc/multipath.ansible_multipath/ gespeichert. Sobald diese Dateien kopiert sind, wird die Rolle sie nie wieder berühren; für das Verzeichnis wird im Anhangsmodus gearbeitet.
multipath_reboot_allow
: erlaubt dieser Rolle, den verwalteten Knoten neu zu startenTyp: boolean
Betroffene Dateien: k.A.
Beispiel:
multipath_reboot_allow: ja
multipath_reboot_timeoutguest
: maximale Zeit (Sek.) für 'Neustart', während auf das Wieder-online-werden eines verwalteten Gastsystems gewartet wirdTyp: ganze Zahl
Betroffene Dateien: k.A.
Beispiel:
multipath_reboot_timeoutguest: 300
multipath_reboot_timeoutbaremetal
: maximale Zeit (Sek.) für 'Neustart', während auf das Wieder-online-werden eines verwalteten Bare-Metal-Systems gewartet wirdTyp: ganze Zahl
Betroffene Dateien: k.A.
Beispiel:
multipath_reboot_timeoutbaremetal: 1800
multipath_modprobe_custom
: lädt und definiert Treiberparameter in Bezug auf den Hersteller oder das Modell des Bootlaufwerks, erstellt eine Modprobe-Datei gemäß dem Modulnamen. - bitte beachten Sie Ihren Leitfaden zur Verbindung bezüglich des Anbieters des Enterprise Storage ArraysTyp: Liste
Betroffene Dateien:
- /etc/modprobe.d/<module-name>.conf
Beispiel:
multipath_modprobe_custom: - modul: lpfc params: lpfc_max_luns=65535 lpfc_devloss_tmo=10 hersteller: EMC modell: any - modul: lpfc params: lpfc_max_luns=65535 lpfc_devloss_tmo=14 lpfc_lun_queue_depth=16 lpfc_discovery_threads=32 hersteller: 3PARdata modell: VV - modul: qla2xxx params: ql2xmaxlun=65535 qlport_down_retry=14 ql2xmaxqdepth=16 hersteller: 3PARdata modell: VV - modul: scsi_transport_fc params: dev_loss_tmo=10 hersteller: any modell: any
HINWEIS: die Verwendung des Wertes "any" passt die Treiberparameter an, ohne dass das Bootlaufwerksgerät validiert wird. Sie können eine vollständige Gerätesliste über
multipath -t
erhalten.
multipath_configfile_commentlines
: kommentiert alle Zeilen in /etc/multipath.conf, nachdem das mpathconf-Tool eine initiale Konfigurationsdatei erstellt hatTyp: boolean
Betroffene Dateien:
- /etc/multipath.conf
Beispiel:
multipath_configfile_commentlines: ja
multipath_configfile_bybasic
: überschreibt die Datei /etc/multipath.conf mit einer grundlegenden und funktionalen Konfiguration (ursprüngliche Dateikommentare werden nicht beibehalten)Typ: boolean
Betroffene Dateien:
- /etc/multipath.conf
Abhängigkeiten:
multipath_configfile_commentlines: ja
Beispiel:
multipath_configfile_bybasic: ja
multipath_configfile_bytemplate
: überschreibt die Datei /etc/multipath.conf mit vordefinierten Rollenvorlagen (z.B. templates/bootfromsan_multipath.conf.j2) mit grundlegender funktionaler Konfiguration (ursprüngliche Dateikommentare werden beibehalten)Typ: boolean
Betroffene Dateien:
- /etc/multipath.conf
Beispiel:
multipath_configfile_bytemplate: ja
multipath_configfile_byusertemplate
: überschreibt die Datei /etc/multipath.conf mit einer benutzerdefinierten Vorlage, die Datei muss auf derselben Ebene wie das Playbook oder in 'templates' liegen; ebenso können Sie Rollendaten verwenden, siehe 'templates/bootfromsan_multipath.conf.j2'Typ: Zeichenfolge (Dateipfad)
Betroffene Dateien:
- /etc/multipath.conf
Beispiel:
multipath_configfile_byusertemplate: mymultipath.conf.j2
multipath_configfile_bysections
: schließt benutzerdefinierte Abschnitte in die Datei /etc/multipath.conf einTyp: Zeichenfolge (mehrzeilig)
Betroffene Dateien:
- /etc/multipath.conf
Beispiel:
multipath_configfile_bysections: | geräte { gerät { hersteller "COMPAQ " produkt "HSV110 (C)COMPAQ" pfad_gruppierungspolitik multibus pfad_prüfer readsector0 pfad_wähler "round-robin 0" hardware_handler "0" failback 15 rr_weight priorities kein_pfad_wiederholung warteschlange } }
HINWEIS: optional in Kombination mit
multipath_configfile_commentlines: ja
multipath_configfile_defaults
: schließt zusätzliche Parameter im "defaults {"-Abschnitt für die Datei /etc/multipath.conf einTyp: Liste
Betroffene Dateien:
- /etc/multipath.conf
Beispiel:
multipath_configfile_defaults: - detect_prio no - failback "manual" - max_fds 1048576 - max_polling_interval 20
multipath_debug_sysfilecontent
: zeigt vor den Post-Setup-Aufgaben (z.B. Neustart) den Inhalt der modifizierten Systemdateien im Playbook-Stream an, wie eine Aufgabe; Dateien: /etc/fstab, /etc/lvm/lvm.conf und /etc/multipath.confTyp: boolean
Betroffene Dateien: k.A.
Beispiel:
multipath_debug_sysfilecontent: ja
multipath_debug_showvariables
: zeigt Rollenvariablen und deren WerteTyp: boolean
Betroffene Dateien: k.A.
Beispiel:
multipath_debug_showvariables: ja
Abhängigkeiten
k.A.
Tags
Es gibt zwei verfügbare Tags:
role:multipath:prereqs
: Rollenvoraussetzungen, Überprüfung der Rollenvariablen, keine Systemänderungenansible-playbook multipathing.yml --tags role:multipath:prereqs
role:multipath:presetup
: Vorbereitungsvalidierungen, keine Systemänderungen (außer wenn die Installation oder das Upgrade des DM Multipath-Pakets mit den Variablen multipath_package_install oder multipath_package_upgrade angefordert wird)ansible-playbook multipathing.yml --tags role:multipath:presetup
Beispiel-Playbook
Ein einfaches Playbook sollte wie folgt aussehen:
- hosts: servers
become: ja
gather_facts: ja
roles:
- cdomingos.multipath
Eine Liste der Beispiel-Playbooks finden Sie im Verzeichnis tests/
in der Rollendateistruktur.
Lizenz
MIT
Autoreninformation
Diese Rolle wurde 2019 von Cláudio Domingos erstellt.
Zusätzliche Informationen
Getestet auf:
- HP ProLiant BL460c Gen9 (UEFI)
- 3PAR Speicherarray
- HP ProLiant BL460c G7
- VMAX Speicherarray
- RHEL 8
- RHEL 7
- RHEL 6
- Fedora 31
Es ist sehr geeignet, diese Rolle für Bare-Metal-Maschinen zu verwenden; Gäste machen keinen Sinn, da hochverfügbare Multipathing-Software auf Hypervisorebene vorhanden sein muss.
Wollen Sie eine Konfiguration der besten Praktiken für DM Multipath mit einem bestimmten Storage Array anwenden? Wenden Sie sich an Ihren Storage Array-Anbieter, oder suchen Sie nach dem Host Connectivity Guide for Linux und überprüfen Sie, was Ihr Storage Array-Anbieter empfiehlt.
Diese Rolle ist inspiriert von:
- Red Hat Enterprise Linux 8 Konfigurieren von Device Mapper Multipath
- Red Hat Enterprise Linux 7 Konfigurieren von Device Mapper Multipath
- Red Hat Enterprise Linux 6 Konfigurieren von Device Mapper Multipath
TODO
Lösen Sie kritische Probleme wie dracut Warning: LVM rootvg/rootlv not found
a. Implementierung eines Skripts, um beim Initramfs/dracut-Bootprozess während des Neustarts bei einem Systemabsturz zurückgerollt zu werden
b. Aktivieren Sie das Netzwerk und den sshd-Dienst im Initramfs/dracut-Bootprozess und führen Sie erforderliche Rettungsaufgaben durch, um dies mit Ansible zu beheben.
Configure native linux multipathing (DM Multipath) for Boot from SAN or Local Boot
ansible-galaxy install cdomingos.multipath