cdomingos.multipath

Rola Ansible: Multipath (DM Multipath)

Dobra rola Ansible, która prawidłowo wdraża i konfiguruje natywne oprogramowanie multipath dla systemów Linux (DM Multipath) w scenariuszach Boot from SAN lub Local Boot.

Ta rola multipath jest w stanie:

  • skonfigurować DM Multipath zgodnie z dokumentacją produktu i najlepszymi praktykami przemysłowymi
  • skonfigurować parametry sterowników

Ostrzeżenie

Ta rola zastępuje konfigurację DM Multipath
Poprzednie ustawienia zostaną nadpisane, sprawdź multipath_backup_permanent w sekcji Zmienne Roli.

Ta konfiguracja wpływa na następujące katalogi i pliki konfiguracyjne:

  • /etc/multipath/
  • /etc/multipath.conf

Jeśli po ponownym uruchomieniu zarządzanego hosta pojawią się błędy, niektóre błędy w initramfs mogą prowadzić do Kernel panic on boot following "dracut Warning: LVM rootvg/rootlv not found"

W takim przypadku zalecam:

  1. uruchom system za pomocą obrazu ISO Rescue
  2. przywróć główne pliki:
    • /boot/<original-initramfs>.img.ansible_multipath
    • /etc/fstab.ansible_multipath
    • /etc/lvm/lvm.conf.ansible_multipath

UWAGA: istnieje wiele sposobów przywrócenia systemu do stanu operacyjnego, parametry rozruchowe jądra, takie jak rdshell lub rd.shell oraz usunięcie rhgb i quiet, mogą pomóc w rozwiązywaniu problemów z zepsutym initramfs.

Jak to działa?

Są dwie główne fazy: pre-setup i setup.

W fazie pre-setup rola ta wykonuje (bez zmian w systemie, z wyjątkiem instalacji pakietów, jeśli zadeklarowane):

  • sprawdzanie, czy pakiet device-mapper-multipath jest zainstalowany (możesz go zainstalować lub zaktualizować. Zobacz zmienne)
  • pobieranie właściwości urządzenia dla systemu plików zamontowanego w /boot, również dla /boot/efi
  • pobieranie właściwości i odkrywanie rzeczywistego urządzenia dyskowego dla zamontowanego systemu plików /boot
  • ładowanie sterowników modprobe zgodnie z producentem i modelem odkrytego rzeczywistego urządzenia dyskowego
  • automatyczny wybór typu konfiguracji (Boot from SAN?) na podstawie sterownika urządzenia dyskowego
  • pobieranie domyślnego jądra GRUB i initramfs
  • ładowanie weryfikacji dla scenariuszy Boot from SAN lub Local Boot
  • definiowanie pseudonimu dla rzeczywistego urządzenia dyskowego
  • definiowanie filtru LVM

W fazie setup rola ta dokonuje zmian w systemie:

  • tworzenie kopii zapasowej niektórych plików systemowych, takich jak /etc/fstab, obecny initramfs i /etc/lvm/lvm.conf
  • usuwanie aktualnych plików konfiguracyjnych DM Multipath
  • tworzenie początkowego pliku /etc/multipath.conf
  • konfigurowanie pliku /etc/multipath.conf i sprawdzanie składni lub błędów
  • konfigurowanie /etc/fstab
  • konfigurowanie filtru LVM i sprawdzanie składni lub błędów
  • konfigurowanie plików modprobe i sprawdzanie składni lub błędów
  • konfigurowanie initramfs i sprawdzanie błędów
  • w przypadku błędów usuwanie dodatkowych plików i przywracanie plików systemowych z wcześniejszej kopii zapasowej
  • ponowne uruchomienie systemu
  • usunięcie wcześniejszych plików systemowych kopii zapasowej

Wymagania

Playbook musi być uruchomiony z become: yes lub równoważnymi uprawnieniami roota oraz gather_facts: yes.

  • Ansible Engine 2.7.1+

Zmienne Roli

Rola multipath jest konfigurowana za pomocą zmiennych rozpoczynających się od multipath_ jako prefiksu.

Lista zmiennych:

Zmienna Typ Opis
multipath_setup_pseudodevname ciąg (m) Definiuje pseudonim urządzenia (alias) dla zarządzanego dysku startowego przez DM Multipath
multipath_package_install boolean (o) Instaluj pakiet device-mapper-multipath, jeśli nie jest obecny
multipath_package_upgrade boolean (r) Aktualizuj (także zainstaluj) pakiet device-mapper-multipath
multipath_preserve_currentfiles boolean (r) Przed fazą setup utwórz trwałą kopię aktualnych plików konfiguracyjnych DM Multipath
multipath_reboot_allow boolean (r) Zezwól na ponowne uruchomienie zarządzanego węzła przez tę rolę
multipath_reboot_timeoutguest całkowita (o) Maksymalny czas (s) na ponowne uruchomienie oczekując na powrót systemu gościa online
multipath_reboot_timeoutbaremetal całkowita (o) Maksymalny czas (s) na ponowne uruchomienie oczekując na powrót systemu Bare Metal online
multipath_modprobe_custom lista (o) Ładowanie i definiowanie parametrów sterowników związanych z producentem lub modelem dysku rozruchowego
multipath_configfile_commentlines boolean (o) Komentuj wszystkie linie w /etc/multipath.conf
multipath_configfile_bybasic boolean (o) Nadpisuje plik /etc/multipath.conf używając podstawowej i funkcjonalnej konfiguracji
multipath_configfile_bytemplate boolean (o) Nadpisuje plik /etc/multipath.conf używając wstępnie zdefiniowanych szablonów ról
multipath_configfile_byusertemplate ciąg (o) Nadpisuje plik /etc/multipath.conf używając własnego szablonu pliku
multipath_configfile_bysections ciąg (o) Dołącza niestandardowe sekcje do pliku /etc/multipath.conf
multipath_configfile_defaults lista (o) Dołącza dodatkowe parametry w sekcji "defaults {" dla /etc/multipath.conf
multipath_debug_sysfilecontent boolean (o) Przed zadaniami po setupie (np. ponownym uruchomieniem), pokazuje zawartość zmodyfikowanych plików systemowych
multipath_debug_showvariables boolean (r) Pokazuje zmienne roli i ich wartości

(m) - obowiązkowe
(r) - zalecane
(o) - opcjonalne
* - wartość domyślna jest stosowana (zobacz defaults/main.yml)

Wyjaśniona lista zmiennych:

  • multipath_setup_pseudodevname: definiuje pseudonim urządzenia (alias) dla zarządzanego dysku startowego przez DM Multipath (np. /dev/mapper/bootLUN)

    typ: ciąg

    dotknięte pliki:

    • /etc/fstab
    • /etc/multipath.conf

    przykład:

    multipath_setup_pseudodevname: bootLUN
    

    UWAGA: nie używaj "p" ani znaków numerycznych


  • multipath_package_install: zainstaluj pakiet device-mapper-multipath, jeśli nie jest obecny

    typ: boolean

    dotknięte pliki: brak

    przykład:

    multipath_package_install: yes
    

  • multipath_package_upgrade: zaktualizuj (także zainstaluj) pakiet device-mapper-multipath

    typ: boolean

    dotknięte pliki: brak

    przykład:

    multipath_package_upgrade: yes
    

  • multipath_preserve_currentfiles: przed fazą setup utwórz trwałą kopię aktualnych plików konfiguracyjnych DM Multipath, takich jak /etc/multipath.conf i /etc/multipath/

    typ: boolean

    dotknięte pliki: brak

    przykład:

    multipath_preserve_currentfiles: yes
    

    UWAGA: zachowane pliki będą przechowywane jako /etc/multipath.conf.ansible_multipath i /etc/multipath.ansible_multipath/, po skopiowaniu tych plików rola nie dotknie ich więcej, dla katalogu działa w trybie doklejania.


  • multipath_reboot_allow: zezwól tej roli na ponowne uruchomienie zarządzanego węzła

    typ: boolean

    dotknięte pliki: brak

    przykład:

    multipath_reboot_allow: yes
    

  • multipath_reboot_timeoutguest: maksymalny czas (s) na ponowne uruchomienie oczekując na powrót systemu gościa online

    typ: całkowita liczba

    dotknięte pliki: brak

    przykład:

    multipath_reboot_timeoutguest: 300
    

  • multipath_reboot_timeoutbaremetal: maksymalny czas (s) na ponowne uruchomienie oczekując na powrót systemu Bare Metal online

    typ: całkowita liczba

    dotknięte pliki: brak

    przykład:

    multipath_reboot_timeoutbaremetal: 1800
    

  • multipath_modprobe_custom: ładowanie i definiowanie parametrów sterowników związanych z producentem lub modelem dysku rozruchowego, generując plik modprobe zgodnie z nazwą modułu - proszę sprawdzić przewodnik po łączności dla producenta macierzy pamięci masowej

    typ: lista

    dotknięte pliki:

    • /etc/modprobe.d/<module-name>.conf

    przykład:

    multipath_modprobe_custom:
      - module: lpfc
        params: lpfc_max_luns=65535 lpfc_devloss_tmo=10
        vendor: EMC
        model: any
      - module: lpfc
        params: lpfc_max_luns=65535 lpfc_devloss_tmo=14 lpfc_lun_queue_depth=16 lpfc_discovery_threads=32
        vendor: 3PARdata
        model: VV
      - module: qla2xxx
        params: ql2xmaxlun=65535 qlport_down_retry=14 ql2xmaxqdepth=16
        vendor: 3PARdata
        model: VV
      - module: scsi_transport_fc
        params: dev_loss_tmo=10
        vendor: any
        model: any
    

    UWAGA: użycie wartości "any" dostosuje parametry sterowników bez dopasowywania/walidacji sterownika urządzenia dyskowego, pełną listę urządzeń możesz uzyskać przez multipath -t


  • multipath_configfile_commentlines: komentuje wszystkie linie w /etc/multipath.conf po utworzeniu początkowego pliku konfiguracyjnego przez narzędzie mpathconf

    typ: boolean

    dotknięte pliki:

    • /etc/multipath.conf

    przykład:

    multipath_configfile_commentlines: yes
    

  • multipath_configfile_bybasic: nadpisuje plik /etc/multipath.conf używając podstawowej i funkcjonalnej konfiguracji (komentarze w oryginalnym pliku nie są zachowywane)

    typ: boolean

    dotknięte pliki:

    • /etc/multipath.conf

    zależności:

    • multipath_configfile_commentlines: yes

    przykład:

    multipath_configfile_bybasic: yes
    

  • multipath_configfile_bytemplate: nadpisuje plik /etc/multipath.conf używając wstępnie zdefiniowanych szablonów rol, (np. templates/bootfromsan_multipath.conf.j2) z podstawową funkcjonalną konfiguracją (komentarze w oryginalnym pliku są zachowywane)

    typ: boolean

    dotknięte pliki:

    • /etc/multipath.conf

    przykład:

    multipath_configfile_bytemplate: yes
    

  • multipath_configfile_byusertemplate: nadpisuje plik /etc/multipath.conf używając własnego szablonu pliku, plik musi znajdować się na poziomie katalogu playbook lub w folderze 'templates', możesz również użyć faktów roli, patrz plik 'templates/bootfromsan_multipath.conf.j2'

    typ: ciąg (ścieżka do pliku)

    dotknięte pliki:

    • /etc/multipath.conf

    przykład:

    multipath_configfile_byusertemplate: mymultipath.conf.j2
    

  • multipath_configfile_bysections: dołącza niestandardowe sekcje do pliku /etc/multipath.conf

    typ: ciąg (wieloliniowy)

    dotknięte pliki:

    • /etc/multipath.conf

    przykład:

    multipath_configfile_bysections: |
    
      devices {
              device {
                      vendor                   "COMPAQ  "
                      product                  "HSV110 (C)COMPAQ"
                      path_grouping_policy     multibus
                      path_checker             readsector0
                      path_selector            "round-robin 0"
                      hardware_handler         "0"
                      failback                 15
                      rr_weight                priorities
                      no_path_retry            queue
              }
      }
    

    UWAGA: opcjonalnie w połączeniu z multipath_configfile_commentlines: yes


  • multipath_configfile_defaults: dołącza dodatkowe parametry w sekcji "defaults {" dla /etc/multipath.conf

    typ: lista

    dotknięte pliki:

    • /etc/multipath.conf

    przykład:

    multipath_configfile_defaults:
      - detect_prio no
      - failback "manual"
      - max_fds 1048576
      - max_polling_interval 20
    

  • multipath_debug_sysfilecontent: przed zadaniami po setupie (np. ponownym uruchomieniem), pokazuje zawartość zmodyfikowanych plików systemowych w strumieniu playbooka jak zadanie, pliki: /etc/fstab, /etc/lvm/lvm.conf i /etc/multipath.conf

    typ: boolean

    dotknięte pliki: brak

    przykład:

    multipath_debug_sysfilecontent: yes
    

  • multipath_debug_showvariables: pokazuje zmienne roli i ich wartości

    typ: boolean

    dotknięte pliki: brak

    przykład:

    multipath_debug_showvariables: yes
    

Zależności

Brak

Tagi

Dostępne są dwa tagi:

  • role:multipath:prereqs: wymagania wstępne roli, sprawdzanie zmiennych roli, bez zmian w systemie

    ansible-playbook multipathing.yml --tags role:multipath:prereqs
    
  • role:multipath:presetup: walidacje wstępne, bez zmian w systemie (z wyjątkiem żądania instalacji lub aktualizacji pakietu DM Multipath przy użyciu zmiennych multipath_package_install lub multipath_package_upgrade)

    ansible-playbook multipathing.yml --tags role:multipath:presetup
    

Przykład Playbooka

Podstawowy playbook powinien wyglądać tak:

- hosts: servers
  become: yes
  gather_facts: yes

  roles:
    - cdomingos.multipath

Lista przykładowych playbooków znajduje się w katalogu tests/ w strukturze katalogów roli.

Licencja

MIT

Informacje o autorze

Ta rola została stworzona w 2019 roku przez Cláudio Domingos

Dodatkowe informacje

Testowano na:

  • HP ProLiant BL460c Gen9 (UEFI)
  • Macierz pamięci masowej 3PAR
  • HP ProLiant BL460c G7
  • Macierz pamięci masowej VMAX
  • RHEL 8
  • RHEL 7
  • RHEL 6
  • Fedora 31

Bardzo odpowiednia do użycia tej roli w maszynach Bare Metal, goście nie mają sensu, ponieważ oprogramowanie multipathing wysokiej dostępności musi być na poziomie hypervisora.

Czy chcesz zastosować konfigurację najlepszych praktyk DM Multipath z użyciem konkretnej macierzy pamięci masowej? Skontaktuj się z dostawcą macierzy pamięci masowej, możesz także poszukać Host Connectivity Guide for Linux i sprawdzić, co zaleca dostawca Twojej macierzy pamięci masowej.

Ta rola jest inspirowana:

TODO

Rozwiązanie krytycznego problemu, takiego jak dracut Warning: LVM rootvg/rootlv not found

a. Implementacja skryptu do przywracania w etapie rozruchu initramfs/dracut, когда системный крах в процессе перезагрузки
b. Włączenie sieci i usługi sshd w etapie rozruchu initramfs/dracut oraz wykonanie niezbędnych operacji ratunkowych w celu naprawy za pomocą Ansible

O projekcie

Configure native linux multipathing (DM Multipath) for Boot from SAN or Local Boot

Zainstaluj
ansible-galaxy install cdomingos.multipath
Licencja
mit
Pobrania
1.7k
Właściciel