Dm-multipath

Материал из sysadm
Перейти к навигации Перейти к поиску

Обзор

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

Сопровождение

Увеличение размера диска

  1. составьте список всех устройств, представляющих разные пути к диску
  2. обновите информацию о размере этих устройств
  3. дайте команду 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

Ссылки по теме