Dm-multipath
Перейти к навигации
Перейти к поиску
Обзор
dm-multipath (Device Mapper Multipath) - менеджер, управляющий путями подключения СХД дисков через Fiber Channel сеть SAN (Storage Area Network)
Включает в себя
- multipathd - управляющий сервис
- dm_multipath - модуль ядра
Схема работы
+--------------------------+ | HOST | | | | [Application] | | | | | /dev/mapper/mpathN | | | | | multipathd | | | | | +-----+-----+ | | | | | | /dev/sdc /dev/sdf | | путь1 путь2 | | | | | +--------------------------+ | | | | ~~~~~~~~~~~~~~~~~ { сеть SAN } ~~~~~~~~~~~~~~~~~ | | | | +----------+ | СХД | | | | | [disk] | +----------+
Типы резервирования путей
- Active/Active - одновременно используются все маршруты, выбор осуществляется по round-robin или динамический load-balancing
- Active/Passive (standby failover) - трафик всегда идет по активному пути, в случае сбоя активным становится резервный путь
Термины
- WWID (World Wide Identificator) - идентификатор диска в сети SAN
- WWPN (World Wide Port Number) - идентификатор порта со стороны хоста
- Initiator (инициатор) - то что подключается к диску СХД со стороны хоста через определенный порт
- ctrl (контроллер СХД) - в СХД обычно два резервирующих друг-друга контроллера A и B
Альтернативы
Некоторые вендоры СХД предоставляют собственные реализации, аналогичные dm-multipath, оптимизированные под соответствующие СХД
Примеры:
- UltraPath, вендор HUAWEI
Настройка
# установка (обычно уже установлен) dnf install device-mapper-multipath # утилита конфигурации dm-multipath, без параметров выводит текущую конфигурацию mpathconf # файл конфигурации multipath (вручную лучше не изменять) /etc/multipath.conf # динамически создаваемые рабочие файлы сервиса multipathd /etc/multipath/bindings /etc/multipath/wwids # включение демона multipathd, загрузка в ядро модуля, создание файла конфигурации /etc/multipath.conf # перед включением, убедитесь, что hostname совпадает с именем хоста на СХД (регистр имеет значение) mpathconf --enable --with_multipathd y # список обнаруженных дисков и путей к ним multipath -ll
Так выглядит конфигурация по умолчанию до включения dm-multipath
[root@myhost]# mpathconf multipath is enabled find_multipaths is yes user_friendly_names is enabled default property blacklist is enabled enable_foreign is set (no foreign multipath devices will be shown) dm_multipath module is not loaded multipathd is not running
Так может выглядеть информация о путях и подключенных дисках
[root@myhost]# multipath Aug 24 15:48:51 | sdb: prio = const (setting: emergency fallback - alua failed) Aug 24 15:48:51 | sdc: prio = const (setting: emergency fallback - alua failed) Aug 24 15:48:51 | sdd: prio = const (setting: emergency fallback - alua failed) Aug 24 15:48:51 | sde: prio = const (setting: emergency fallback - alua failed) [root@myhost]# multipath -l1 mpatha (3614230a100246bd65678de1200000006) dm-3 HUAWEI,XSG1 size=400G features='0' hwhandler='0' wp=rw `-+- policy='service-time 0' prio=0 status=active |- 11:0:0:1 sdb 8:16 active undef running |- 11:0:1:1 sdc 8:32 active undef running |- 12:0:0:1 sdd 8:48 active undef running `- 12:0:1:1 sde 8:64 active undef running
Сопровождение
Увеличение размера диска
- составьте список всех устройств, представляющих разные пути к диску
- обновите информацию о размере этих устройств
- дайте команду multipathd обновить информацию о размере
# определение списка устройств представляющих разные пути к соответствующему диску lsblk | grep -B1 mpath # обновление информации о размере устройств for dev_name in sdb sdc sdd sde; do echo 1 > /sys/block/$dev_name/device/rescan; done # команда multipathd перечитать размер LUN multipathd -k'resize map mpath<N>' # здесь <N> - это номер или литера, определяющая общее имя устройства
# добавление еще одного диска на СХД без перезагрузки хоста # просто так мультипас не увидит новый диск созданный в СХД # проверяем, что мы не видим новый диск multipath -l1 # смотрим список hba на вашем хосте ls /sys/class/fc_host # говорим ядру перечитать каждый echo "1" > /sys/class/fc_host/host11/issue_lip echo "1" > /sys/class/fc_host/host12/issue_lip # после этого система должна увидеть новый диск multipath -l1