multipath
Ansible Роль: Мультипутевое соединение (DM Multipath)
Это хорошая ansible роль, которая корректно настраивает программное обеспечение для мультипутевого соединения Linux (DM Multipath) для сценариев Загрузка с SAN или Локальная загрузка.
Эта мультипутевая ansible роль может:
- Настроить DM Multipath в соответствии с документацией продукта и лучшими практиками отрасли.
- Настроить параметры драйвера.
Внимание
Эта роль заменяет конфигурацию DM Multipath
Предыдущие настройки будут перезаписаны, проверьте multipath_backup_permanent
в разделе переменных роли.
Эта конфигурация влияет на следующие каталоги и файлы конфигурации:
/etc/multipath/
/etc/multipath.conf
Если после перезагрузки управляемого хоста возникнут проблемы, ошибки в initramfs могут привести к Kernel panic при загрузке с сообщением "dracut Warning: LVM rootvg/rootlv не найден"
В этом случае я рекомендую:
- Перезагрузить систему, используя образ Rescue ISO.
- Вернуть обратно основные файлы:
- /boot/<оригинальный-initramfs>.img.ansible_multipath
- /etc/fstab.ansible_multipath
- /etc/lvm/lvm.conf.ansible_multipath
ПРИМЕЧАНИЕ: существует множество способов вернуть систему в рабочее состояние, такие параметры загрузки ядра, как rdshell
или rd.shell
, плюс удаление rhgb
и quiet
, могут помочь вам устранить неполадки вашего поврежденного initramfs.
Как это работает?
Существует два основных этапа: предварительная настройка и настройка.
На этапе предварительной настройки эта роль выполняет (без изменений в системе, кроме установки пакетов, если это указано):
- Проверяет, установлен ли пакет device-mapper-multipath (вы можете установить или обновить его. Смотрите переменные).
- Получает свойства устройства для файловой системы, смонтированной на /boot, также для /boot/efi.
- Получает свойства и находит реальное дисковое устройство для файловой системы, смонтированной на /boot.
- Загружает драйверы модулей в зависимости от производителя и модели обнаруженного реального дискового устройства.
- Автоматически выбирает тип конфигурации (Загрузка с SAN?) в зависимости от драйвера дискового устройства загрузки.
- Получает стандартное ядро GRUB и initramfs.
- Загружает проверки для сценариев Загрузки с SAN или Локальной Загрузки.
- Определяет псевдоним для реального дискового устройства.
- Определяет фильтр LVM.
На этапе настройки эта роль выполняет (изменения в системе):
- Резервирует некоторые системные файлы, такие как /etc/fstab, текущий initramfs и /etc/lvm/lvm.conf.
- Удаляет текущие файлы конфигурации DM Multipath.
- Создает начальный файл /etc/multipath.conf.
- Настраивает файл /etc/multipath.conf и проверяет на наличие синтаксических ошибок.
- Настраивает /etc/fstab.
- Настраивает фильтр LVM и проверяет на наличие синтаксических ошибок.
- Настраивает файлы modprobe и проверяет на наличие синтаксических ошибок.
- Настраивает initramfs и проверяет на наличие ошибок.
- В случае ошибок удаляет лишние файлы и выполняет откат системных файлов, используя предыдущую резервную копию.
- Перезагружает систему.
- Удаляет предыдущие резервные системные файлы.
Требования
Плейбук должен выполняться с become: yes
или эквивалентными правами root и gather_facts: yes
.
- Ansible Engine 2.7.1+
Переменные роли
Роль multipath настраивается с помощью переменных, начинающихся с multipath_
как префикса имени.
Список переменных:
Переменная | Тип | Описание |
---|---|---|
multipath_setup_pseudodevname |
строка (m) * | Определяет псевдоним устройства (алиас) для загрузочного диска, управляемого DM Multipath |
multipath_package_install |
логическое (o) | Установить пакет device-mapper-multipath, если он не установлен |
multipath_package_upgrade |
логическое (r) | Обновить (также установить) пакет device-mapper-multipath |
multipath_preserve_currentfiles |
логическое (r) | Перед этапом настройки сделать постоянную копию текущих файлов конфигурации DM Multipath |
multipath_reboot_allow |
логическое (r) | Разрешить этой роли перезагрузить управляемый узел |
multipath_reboot_timeoutguest |
целое число (o) | Максимальное время (сек) для 'перезагрузки', ожидая, пока управляемая система Guest снова станет онлайн |
multipath_reboot_timeoutbaremetal |
целое число (o) | Максимальное время (сек) для 'перезагрузки', ожидая, пока управляемая Bare Metal система снова станет онлайн |
multipath_modprobe_custom |
список (o) | Загружает и определяет параметры драйверов, относящиеся к производителю или модели загрузочного диска |
multipath_configfile_commentlines |
логическое (o) * | Закомментировать все строки в /etc/multipath.conf |
multipath_configfile_bybasic |
логическое (o) * | Перезаписывает файл /etc/multipath.conf, используя базовую и функциональную конфигурацию |
multipath_configfile_bytemplate |
логическое (o) | Перезаписывает файл /etc/multipath.conf, используя предварительно определенные шаблоны роли |
multipath_configfile_byusertemplate |
строка (o) | Перезаписывает файл /etc/multipath.conf, используя пользовательский шаблон файла |
multipath_configfile_bysections |
строка (o) | Включает пользовательские секции в файл /etc/multipath.conf |
multipath_configfile_defaults |
список (o) | Включает дополнительные параметры в секцию "defaults {" для /etc/multipath.conf |
multipath_debug_sysfilecontent |
логическое (o) | Перед пост-настройкой (например, перезагрузкой) показать содержимое измененных системных файлов |
multipath_debug_showvariables |
логическое (r) | Показать переменные роли и их значения |
(m) - обязательный
(r) - рекомендуемый
(o) - необязательный
* - применяется значение по умолчанию ( см. defaults/main.yml
)
Объясненный список переменных:
multipath_setup_pseudodevname
: определяет псевдоним устройства (алиас) для загрузочного диска, управляемого DM Multipath (например, /dev/mapper/bootLUN)тип: строка
затронутые файлы:
- /etc/fstab
- /etc/multipath.conf
пример:
multipath_setup_pseudodevname: bootLUN
ПРИМЕЧАНИЕ: не используйте "p" или числовые символы
multipath_package_install
: установить пакет device-mapper-multipath, если он не установлентип: логическое
затронутые файлы: нет
пример:
multipath_package_install: yes
multipath_package_upgrade
: обновить (также установить) пакет device-mapper-multipathтип: логическое
затронутые файлы: нет
пример:
multipath_package_upgrade: yes
multipath_preserve_currentfiles
: перед этапом настройки сделать постоянную копию текущих файлов конфигурации DM Multipath, таких как /etc/multipath.conf и /etc/multipath/тип: логическое
затронутые файлы: нет
пример:
multipath_preserve_currentfiles: yes
ПРИМЕЧАНИЕ: сохраненные файлы будут храниться как /etc/multipath.conf.ansible_multipath и /etc/multipath.ansible_multipath/, как только эти файлы будут скопированы, роль больше никогда к ним не будет обращаться, для каталога это работает в режиме добавления.
multipath_reboot_allow
: разрешить этой роли перезагрузить управляемый узелтип: логическое
затронутые файлы: нет
пример:
multipath_reboot_allow: yes
multipath_reboot_timeoutguest
: максимальное время (сек) для 'перезагрузки', ожидая, пока управляемая система Guest снова станет онлайнтип: целое число
затронутые файлы: нет
пример:
multipath_reboot_timeoutguest: 300
multipath_reboot_timeoutbaremetal
: максимальное время (сек) для 'перезагрузки', ожидая, пока управляемая Bare Metal система снова станет онлайнтип: целое число
затронутые файлы: нет
пример:
multipath_reboot_timeoutbaremetal: 1800
multipath_modprobe_custom
: загружает и определяет параметры драйверов, относящиеся к производителю или модели загрузочного диска, создавая файл modprobe в зависимости от имени модуля. - пожалуйста, обратитесь к вашему руководству по подключению о производителе системы хранения данных.тип: список
затронутые файлы:
- /etc/modprobe.d/<имя-модуля>.conf
пример:
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
ПРИМЕЧАНИЕ: использование значения "any" будет регулировать параметры драйвера, не проверяя/не валидируя драйвер дискового устройства загрузки, вы можете получить полный список устройств через
multipath -t
.
multipath_configfile_commentlines
: закомментировать все строки в /etc/multipath.conf после создания инструмента mpathconf начального конфигурационного файлатип: логическое
затронутые файлы:
- /etc/multipath.conf
пример:
multipath_configfile_commentlines: yes
multipath_configfile_bybasic
: перезаписывает файл /etc/multipath.conf, используя базовую и функциональную конфигурацию (оригинальные комментарии в файле не сохраняются)тип: логическое
затронутые файлы:
- /etc/multipath.conf
зависимости:
multipath_configfile_commentlines: yes
пример:
multipath_configfile_bybasic: yes
multipath_configfile_bytemplate
: перезаписывает файл /etc/multipath.conf, используя заранее определенные шаблоны роли (например, templates/bootfromsan_multipath.conf.j2) с основной функциональной конфигурацией (оригинальные комментарии в файле сохраняются)тип: логическое
затронутые файлы:
- /etc/multipath.conf
пример:
multipath_configfile_bytemplate: yes
multipath_configfile_byusertemplate
: перезаписывает файл /etc/multipath.conf, используя файл пользовательского шаблона, файл должен находиться на уровне каталога плейбука или 'templates', вы также можете использовать факты роли, см. файл 'templates/bootfromsan_multipath.conf.j2'тип: строка (путь к файлу)
затронутые файлы:
- /etc/multipath.conf
пример:
multipath_configfile_byusertemplate: mymultipath.conf.j2
multipath_configfile_bysections
: включает пользовательские секции в файл /etc/multipath.confтип: строка (многострочная)
затронутые файлы:
- /etc/multipath.conf
пример:
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 } }
ПРИМЕЧАНИЕ: опционально в сочетании с
multipath_configfile_commentlines: yes
.
multipath_configfile_defaults
: включает дополнительные параметры в секцию "defaults {" для /etc/multipath.conf.тип: список
затронутые файлы:
- /etc/multipath.conf
пример:
multipath_configfile_defaults: - detect_prio no - failback "manual" - max_fds 1048576 - max_polling_interval 20
multipath_debug_sysfilecontent
: перед выполнением пост-настройки (например, перезагрузки), показать содержимое измененных системных файлов в потоке плейбука, как задачу, файлы: /etc/fstab, /etc/lvm/lvm.conf и /etc/multipath.conf.тип: логическое
затронутые файлы: нет
пример:
multipath_debug_sysfilecontent: yes
multipath_debug_showvariables
: показать переменные роли и их значениятип: логическое
затронутые файлы: нет
пример:
multipath_debug_showvariables: yes
Зависимости
Нет
Теги
Существует два доступных тега:
role:multipath:prereqs
: предварительные условия роли, проверить переменные роли, без изменений в системе.ansible-playbook multipathing.yml --tags role:multipath:prereqs
role:multipath:presetup
: проверки перед настройкой, без изменений в системе (кроме запроса на установку или обновление пакета DM Multipath с помощью переменных multipath_package_install или multipath_package_upgrade).ansible-playbook multipathing.yml --tags role:multipath:presetup
Пример Плейбука
Базовый плейбук должен выглядеть так:
- hosts: servers
become: yes
gather_facts: yes
roles:
- cdomingos.multipath
Список примерных плейбуков можно найти в tests/
в структуре каталога роли.
Лицензия
MIT
Информация об авторе
Эта роль была создана в 2019 году Cláudio Domingos
Дополнительная информация
Протестировано на:
- HP ProLiant BL460c Gen9 (UEFI)
- 3PAR Storage Array
- HP ProLiant BL460c G7
- VMAX Storage Array
- RHEL 8
- RHEL 7
- RHEL 6
- Fedora 31
Эта роль очень подходит для Bare Metal машин, использование виртуальных машин не имеет смысла, так как программное обеспечение для высокодоступного мультипутевого соединения должно находиться на уровне гипервизора.
Хотите применить лучшие практики конфигурации DM Multipath, используя конкретный массив хранения? Свяжитесь с вашим поставщиком массива хранения, а также вы можете поискать Руководство по подключению хостов для Linux и проверить, что рекомендует ваш поставщик массива хранения.
Эта роль вдохновлена:
- Red Hat Enterprise Linux 8: Конфигурация Device Mapper Multipath
- Red Hat Enterprise Linux 7: Конфигурация Device Mapper Multipath
- Red Hat Enterprise Linux 6: Конфигурация Device Mapper Multipath
Список задач
Решение критической проблемы, такой как dracut Warning: LVM rootvg/rootlv не найден
.
a. Реализация скрипта для отката на этапе загрузки initramfs/dracut, когда система выходит из строя во время цикла перезагрузки.
b. Включение сетевой и sshd службы на этапе загрузки initramfs/dracut и выполнение необходимых спасательных задач с помощью Ansible.
Configure native linux multipathing (DM Multipath) for Boot from SAN or Local Boot
ansible-galaxy install cdomingos/ansible-role-multipath