Multipath
Для поддержки multipath-устройств стоит воспользоваться стартеркитом server (20161212 или новее) либо вручную:
- apt-get install make-initrd-multipath;
- service multipathd enable; service multipathd start;
- исправить устройства в /etc/fstab по /dev/disks/by-id/wwn-*, /dev/mapper/* или /dev/dm-* (т.к. uuid тот же);
- добавить в /etc/initrd.mk следующие строки (актуально для Альт СП релиз 10):
- FEATURES += multipath
- PUT_FILES += $(shell ls /lib64/multipath/*.so)
- перегенерировать initrd командой make-initrd и перезагрузиться.
Информация о multipath-устройстве
После подключения, устройство хранения данных должно автоматически определиться как multipath-устройство:
# multipath -ll
mpatha (3600c0ff00014f56ee9f3cf6301000000) dm-0 HP,P2000 G3 FC
size=931G features='1 queue_if_no_path' hwhandler='1 alua' wp=rw
|-+- policy='service-time 0' prio=50 status=active
| |- 7:0:1:1 sde 8:64 active ready running
| `- 16:0:1:1 sdc 8:32 active ready running
`-+- policy='service-time 0' prio=10 status=enabled
|- 7:0:0:1 sdd 8:48 active ready running
`- 16:0:0:1 sdb 8:16 active ready running
Вывод этой команды можно разделить на три части. В каждой части отображается информация для следующей группы:
- Информация о multipath-устройстве:
- mpatha (3600c0ff00014f56ee9f3cf6301000000) — алиас
- dm-0 — имя устройства dm
- HP,P2000 G3 FC — поставщик, продукт
- size=931G — размер
- features='1 queue_if_no_path' — функции
- hwhandler='01 alua' — аппаратный обработчик
- wp=rw — права на запись
- Информация о группе маршрутов:
- policy='service-time 0' — политика планирования
- prio=50 — приоритет группы маршрутов
- status=active — статус группы маршрутов
- Информация о маршруте:
- 7:0:1:1 — хост:канал:идентификатор:Lun
- sde — диск
- 8:80 — номера major:minor
- active — статус dm
- ready — статус маршрута
- running — online статус
Статус маршрута:
- ready, ghost — путь открыт и готов к вводу-выводу;
- faulty, shaky — путь отключён;
- i/o pending — средство проверки активно проверяет этот путь, и состояние будет обновлено в ближайшее время;
- i/o timeout — средство проверки не вернуло успех/неуспех до истечения таймаута (рассматривается так же, как faulty);
- removed — маршрут был удален из системы и вскоре будет удален из multipath-устройства (рассматривается так же, как faulty);
- wild — multipathd не смог запустить проверку пути из-за внутренней ошибки или проблемы конфигурации (рассматривается так же, как faulty за исключением того, что multipath пропускает многие действия на пути);
unchecked — средство проверки не запускалось по этому пути либо потому, что он только что был обнаружен, либо ему не назначено средство проверки пути, либо в средстве проверки пути возникла ошибка (рассматривается так же, как wild);
- delayed — средство проверки сообщает, что путь открыт, но multipath задерживает восстановление маршрута, поскольку в последнее время путь несколько раз выходил из маршрут, и в этом случае multipath режим настроен на задержку путей (рассматривается так же, как faulty).
Статус dm (аналогичен статусу маршрута, но только с точки зрения ядра):
- active — аналогичен статусам ready и ghost маршрута;
- failed — аналогичен всеми другим состояниям маршрута, за исключением i/o pending, который не имеет эквивалентного состояния dm.
Online статус:
- running — устройство включено;
- offline — устройство отключено.
Для получения дополнительной информации об используемых устройствах можно выполнить команду:
# multipath -v3
Другие команды multipath, которые используются для просмотра, создания или перезагрузки multipath-устройств, также отображают топологию устройства, но при этом некоторая информация может быть неизвестной и отображаться в выводе как undef.
Некоторые параметры команды multipath:
- -l — отобразить текущую multipath-топологию, полученную из sysfs и устройства сопоставления устройств;
- -ll — отобразить текущую multipath-топологию, собранную из sysfs, устройства сопоставления устройств и всех других доступных компонентов системы;
- -f device — удалить указанное multipath-устройство;
- -F — удалить все неиспользуемые multipath-устройства;
- -w device — удалить WWID указанного устройства из файла wwids;
- -W — сбросить файл wwids, чтобы включить только текущие multipath-устройства;
- -r — принудительная перезагрузка multipath-устройства.
Идентификаторы multipath-устройств
Если устройство находится под контролем Multipath, то для этого устройства создаётся каталог в каталогах /dev/mapper/ и /dev/.
Настройки multipath содержатся в файле /etc/multipath.conf:
defaults {
find_multipaths yes
user_friendly_names yes
}
Если для параметра конфигурации user_friendly_names установлено значение no, для имени multipath-устройства задается значение World Wide Identifier (WWID). Имя устройства будет /dev/mapper/WWID:
# ls /dev/mapper/
3600c0ff00014f56ee9f3cf6301000000
# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 59G 0 disk
sdb 8:16 0 931,3G 0 disk
└─3600c0ff00014f56ee9f3cf6301000000 253:0 0 931,3G 0 mpath
sdc 8:32 0 931,3G 0 disk
└─3600c0ff00014f56ee9f3cf6301000000 253:0 0 931,3G 0 mpath
sdd 8:48 0 931,3G 0 disk
└─3600c0ff00014f56ee9f3cf6301000000 253:0 0 931,3G 0 mpath
sde 8:64 0 931,3G 0 disk
└─3600c0ff00014f56ee9f3cf6301000000 253:0 0 931,3G 0 mpath
Если для параметра user_friendly_names установлено значение yes, то для имени multipath-устройства задаётся алиас (псевдоним), в форме mpathХ. Имя устройства будет /dev/mapper/mpathХ:
# ls /dev/mapper/
mpatha
# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 59G 0 disk
sdb 8:16 0 931,3G 0 disk
└─mpatha 253:0 0 931,3G 0 mpath
sdc 8:32 0 931,3G 0 disk
└─mpatha 253:0 0 931,3G 0 mpath
sdd 8:48 0 931,3G 0 disk
└─mpatha 253:0 0 931,3G 0 mpath
sde 8:64 0 931,3G 0 disk
└─mpatha 253:0 0 931,3G 0 mpath
Однако не гарантируется, что имя устройства будет одинаковым на всех узлах, использующих данное multipath-устройство. Аналогично, если вы установите параметр псевдонима в файле /etc/multipath.conf, имя не будет автоматически согласовано на всех узлах кластера.
ОС при загрузке определяет пути к устройствам в изменяющейся среде выполнения (например, при новой загрузке в среде выполнения ОС появились новые устройства хранения или исчезли старые, и т.п.) по отношению к предыдущей загрузке или по отношению к заданной ранее конфигурации. Это может приводить к противоречиям при именовании устройств. Для того чтобы избежать такого поведения, рекомендуется:
- Сделать явное исключение для устройства (раздела) хранения (например, для 3600c0ff00014f56ee9f3cf6301000000, которое в настоящее время определяется как /dev/mapper/mpatha). Для этого в файл /etc/multipath.conf добавить секции:
blacklist { wwid .* } blacklist_exceptions { wwid "3600c0ff00014f56ee9f3cf6301000000" }
- Данная настройка предписывается внести в черный список любые найденные устройства хранения данных, за исключением нужного.
- Создать еще одну секцию:
multipaths { multipath { wwid "3600c0ff00014f56ee9f3cf6301000000" alias mpatha } }
- В этом случае устройство всегда будет доступно только по имени /dev/mapper/mpatha. Вместо mpatha можно вписать любое желаемое имя устройства.
В файл /etc/multipath.conf может также потребоваться внести рекомендованные производителем СХД параметры.
После внесения изменений в файл /etc/multipath.conf необходимо перезапустить службу multipathd для активации настроек:
# systemctl restart multipathd.service
# multipath -t