Администрирование DM-Multipath и устранение проблем

Изменение размера работающего множественного устройства

Если вам требуется изменить размер работающего множественного устройства, используйте следующую процедуру:

  • Измените размер вашего физического устройства. Эта операция зависит от платформы хранилища.

  • Используйте следующую команду для поиска маршрутов для логического номера узла (LUN):

# multipath -l
  • Измените размер маршрутов. Для SCSI устройств, запись 1 в файл rescan для устройства заставляет SCSI драйвер обновить информацию, как в следующей команде:

# echo 1 > /sys/block/device_name/device/rescan
  • Изменить размер множественного устройства запуском команды multipathd:

# multipathd -k 'resize map mpatha'
  • Изменить размер файловой системы (предполагается, что не используется LVM и DOS разделы):

# resize2fs /dev/mapper/mpatha

Перенос корневой файловой системы с одиночного устройства на множественное

Это впечатляюще упрощено использованием UUID для идентификации устройств в качестве естественной метки. Просто установите multipath-tools-boot и перегрузитесь. Это перестроит изначальный ramdisk и предоставит multipath возможность построить маршруты до того как корневая система будет смонтирована по UUID.

Каждое обновление multipath.conf вынуждает initrd запустить update-initramfs -u -k all. Следствием этого является копирование multipath.conf на ramdisk и внедрение его для определения доступных устройств для группирования через их секции blacklist и device.

Перенос файловой системы подкачки с одиночного устройства на множественное

Процедура в точности такая же, как приведена в предыдущей секции Перенос корневой файловой системы с одиночного устройства на множественное.

Сервис Multipath

Если вы испытываете трудности в настройке multipath, вам надо убелиться, что сервис multipath запущен как описано в Обзоре установки DM-Multipath. Сервис multipathd должен быть запущен для того, чтобы использовать multipathd устройства. Также смотрите секцию Решение проблем с помощью интерактивной консоли multipathd касательно взаимодействия с multipathd как со средством отладки.

Проблемы с queue_if_no_path

Если установлены свойства "1 queue_if_no_path" в файле /etc/multipath.conf, то любой процесс, использующий ввод-вывод, будет сбрасываться пока восстанавливаются один или несколько маршрутов. Для предотвращения этого установите параметр no_path_retry N в /etc/multipath.conf.

Когда вы установите no_path_retry параметр, удалите также опции "1 queue_if_no_path" из файла /etc/multipath.conf. Однако если вы используете множественное устройство, для которого опция "1 queue_if_no_path" скомпилирована по умолчанию, как для множества устройств SAN, вам придется добавить значение "0" для переопределения этого умолчания. Вы можете это сделать копированием существующей секции devices, и только этой секции (а не всего файла), из /usr/share/doc/multipath-tools/examples/multipath.conf.annotated.gz в /etc/multipath.conf и редактированием ее по вашим потребностям.

Если вам требуется использовать опцию "1 queue_if_no_path" и вы испытываете отмеченные здесь проблемы, используйте команду для редактирования политики в процессе работы с определенным LUN (т.е. для каждого недоступного маршрута). Например, если вы хотите изменить политику для множественного устройства mpathc с "queue_if_no_path" на "fail_if_no_path" выполните следующую команду:

# dmsetup message mpathc 0 "fail_if_no_path"
Вы должны использовать псевдоним mpathN вместо пути.

Вывод команды multipath

Когда вы создаете, изменяете или просматриваете множественные устройства, вы получаете вывод текущих настроек устройства. Формат показан ниже.

Для каждого множественного устройства:

action_if_any: alias (wwid_if_different_from_alias) dm_device_name_if_known vendor,product
size=size features='features' hwhandler='hardware_handler' wp=write_permission_if_known

Для каждой группы маршрутов:

-+- policy='scheduling_policy' prio=prio_if_known
status=path_group_status_if_known

Для каждого маршрута:

`- host:channel:id:lun devnode major:minor dm_status_if_known path_status
online_status

Например, вывод команды multipath может выглядеть следующим образом:

3600d0230000000000e13955cc3757800 dm-1 WINSYS,SF2372
size=269G features='0' hwhandler='0' wp=rw
|-+- policy='round-robin 0' prio=1 status=active
| `- 6:0:0:0 sdb 8:16  active ready  running
`-+- policy='round-robin 0' prio=1 status=enabled
  `- 7:0:0:0 sdf 8:80  active ready  running

Если маршрут поднят и готов к вводу-выводу, статус маршрута ready(готов) или ghost(скрытый). Если маршрут погашен, статус faulty(дефектный) или shaky(шаткий). Статус маршрута обновляется периодически сервисом multipathd на основе интервала опросов, определенном в файле /etc/multipath.conf.

Статус dm аналогичен статусу маршрута, но только с точки зрения ядра. Статус dm имеет два состояния: failed, который аналогичен faulty, и active, который определяет все остальные состояния. Изредка статусы маршрута и dm бывают временно несогласованны.

Возможные значения online_status - running и offline. Статус offline означает, что SCSI устройство отключено.

Когда множественное устройство создается или изменяется, статус группы маршрутов, имя dm устройства, права на запись и dm статус неизвестны. Также значения бывают не всегда корректны.

Получение информации через команду multipath

Вы можете использовать опции -l и -ll команды multipath для показа текущей конфигурации multipath. Опция -l показывает топологию multipath, собранную из информации в sysfs и маршрутизаторе устройств. Опция -ll показывает ту же информацию, что и опция -l, в дополнение ко всем иным компонентам системы.

При выводе конфигурации multipath существуют три уровня детализации, которые вы можете задавать опцией -v команды multipath. Указание -v0 приводит к отсутствию вывода. Указание -v1 выводит только имена созданных или обновленных множественных устройств, которые вы можете затем использовать в других утилитах, таких как kpartx. Указание -v2 печатает все обнаруженные пути, множественные маршруты и маршрутизаторы устройств.

Уровень детализации multipath по умолчанию 2 и может быть изменен глобально заданием атрибутом verbosity в секции defaults файла multipath.conf.

Следующий пример показывает пример вывода команды multipath -l:

# multipath -l
  3600d0230000000000e13955cc3757800 dm-1 WINSYS,SF2372
  size=269G features='0' hwhandler='0' wp=rw
  |-+- policy='round-robin 0' prio=1 status=active
  | `- 6:0:0:0 sdb 8:16  active ready  running
  `-+- policy='round-robin 0' prio=1 status=enabled
    `- 7:0:0:0 sdf 8:80  active ready  running

А данный пример показывает вывод команды multipath -ll:

# multipath -ll
  3600d0230000000000e13955cc3757801 dm-10 WINSYS,SF2372
  size=269G features='0' hwhandler='0' wp=rw
  |-+- policy='round-robin 0' prio=1 status=enabled
  | `- 19:0:0:1 sdc 8:32  active ready  running
  `-+- policy='round-robin 0' prio=1 status=enabled
    `- 18:0:0:1 sdh 8:112 active ready  running
    3600d0230000000000e13955cc3757803 dm-2 WINSYS,SF2372
    size=125G features='0' hwhandler='0' wp=rw
    `-+- policy='round-robin 0' prio=1 status=active
      |- 19:0:0:3 sde 8:64  active ready  running
        `- 18:0:0:3 sdj 8:144 active ready  running

Опции команды multipath

Таблица Полезные опции команды multipath описывает некоторые опции команды multipath, которые вы можете посчитать полезными.

Полезные опции команды multipath
Опция Описание
-l Показывает текущую настройку multipath собранную из sysfs и маршрутизатора устройств.
-ll Показывает текущую конфигурацию multipath собранную из sysfs, маршрутизатора устройств и всех иных доступных компонентов в системе.
-f device Удалить именованное множественное устройство.
-F Удалить все неиспользуемые множественные устройства.

Определение меток маршрутизации устройств командой dmsetup

Вы можете использовать команду dmsetup для поиска какие метки маршрутизаторов устройств соответствуют каким множественным устройствам.

Следующая команда показывает все маршрутизаторы устройств и их старшие и младшие номера. Младшие номера определяют имя dm устройства. Например, младший номер 3 соответствует множественному устройству /dev/dm-3.

# dmsetup ls
mpathd  (253, 4)
mpathep1        (253, 12)
mpathfp1        (253, 11)
mpathb  (253, 3)
mpathgp1        (253, 14)
mpathhp1        (253, 13)
mpatha  (253, 2)
mpathh  (253, 9)
mpathg  (253, 8)
VolGroup00-LogVol01     (253, 1)
mpathf  (253, 7)
VolGroup00-LogVol00     (253, 0)
mpathe  (253, 6)
mpathbp1        (253, 10)
mpathd  (253, 5)

Решение проблем с помощью интерактивной консоли multipathd

Команда multipathd -k это интерактивный интерфейс к сервису multipathd. Ввод этой команды поднимает интерактивную консоль multipath. После ввода этой команды вы можете ввести help для получения списка доступных команд, интерактивную команду или нажать Ctrl-D для выхода.

Интерактивная консоль multipathd может быть использована для решения проблем, которые могут возникнуть на вашей системе. Например, следующая последовательность команд показывает конфигурацию multipath, включая умолчания, до выхода из консоли. Смотрите статью IBM Трюки с Multipathd для дополнительных примеров.

# multipathd -k
  > > show config
  > > CTRL-D

Следующая последовательность команд подтверждает что multipath подхватила все изменения в multipath.conf.

# multipathd -k
> > reconfigure
> > CTRL-D

Используйте следующую последовательность команд, чтобы убедиться что контроль маршрутов работает правильно.

# multipathd -k
> > show paths
> > CTRL-D

Команды могут также передаваться через поток stdin в multipathd как показано ниже:

# echo 'show config' | multipathd -k