Multipath: различия между версиями
м (нач) |
|||
(не показано 5 промежуточных версий 5 участников) | |||
Строка 2: | Строка 2: | ||
# {{cmd|apt-get install make-initrd-multipath}}; | # {{cmd|apt-get install make-initrd-multipath}}; | ||
# {{cmd|service | # {{cmd|service multipathd enable; service multipathd start}}; | ||
# исправить устройства в {{path|/etc/fstab}} | # исправить устройства в {{path|/etc/fstab}} по {{path|/dev/disks/by-id/wwn-*}}, {{path|/dev/mapper/*}} или {{path|/dev/dm-*}} (т.к. uuid тот же); | ||
# добавить в {{path|/etc/initrd.mk}} следующие строки (актуально для Альт СП релиз 10): | |||
#: FEATURES += multipath | |||
#: PUT_FILES += $(shell ls /lib64/multipath/*.so) | |||
# перегенерировать initrd командой {{cmd|[[make-initrd]]}} и перезагрузиться. | # перегенерировать initrd командой {{cmd|[[make-initrd]]}} и перезагрузиться. | ||
== | === Информация о multipath-устройстве === | ||
< | После подключения, устройство хранения данных должно автоматически определиться как multipath-устройство: | ||
<syntaxhighlight lang="bash"> | |||
# 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 | |||
</syntaxhighlight> | |||
Вывод этой команды можно разделить на три части. В каждой части отображается информация для следующей группы: | |||
* Информация о 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 — устройство отключено. | |||
Для получения дополнительной информации об используемых устройствах можно выполнить команду: | |||
<syntaxhighlight lang="bash"># multipath -v3</syntaxhighlight> | |||
Другие команды 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, то для этого устройства создаётся каталог в каталогах {{path|/dev/mapper/}} и {{path|/dev/}}. | |||
{{Note|Устройства {{path|/dev/dm-X}} предназначены только для внутреннего использования и не должны использоваться напрямую.}} | |||
Настройки multipath содержатся в файле {{path|/etc/multipath.conf}}: | |||
<syntaxhighlight lang="ini"> | |||
defaults { | |||
find_multipaths yes | |||
user_friendly_names yes | |||
}</syntaxhighlight> | |||
Если для параметра конфигурации ''user_friendly_names'' установлено значение ''no'', для имени multipath-устройства задается значение World Wide Identifier (WWID). Имя устройства будет {{path|/dev/mapper/WWID}}: | |||
<syntaxhighlight lang="bash"> | |||
# 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 | |||
</syntaxhighlight> | |||
Если для параметра ''user_friendly_names'' установлено значение ''yes'', то для имени multipath-устройства задаётся алиас (псевдоним), в форме mpathХ. Имя устройства будет {{path|/dev/mapper/mpathХ}}: | |||
<syntaxhighlight lang="bash"> | |||
# 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 | |||
</syntaxhighlight> | |||
Однако не гарантируется, что имя устройства будет одинаковым на всех узлах, использующих данное multipath-устройство. Аналогично, если вы установите параметр псевдонима в файле /etc/multipath.conf, имя не будет автоматически согласовано на всех узлах кластера. | |||
ОС при загрузке определяет пути к устройствам в изменяющейся среде выполнения (например, при новой загрузке в среде выполнения ОС появились новые устройства хранения или исчезли старые, и т.п.) по отношению к предыдущей загрузке или по отношению к заданной ранее конфигурации. Это может приводить к противоречиям при именовании устройств. Для того чтобы избежать такого поведения, рекомендуется: | |||
# Сделать явное исключение для устройства (раздела) хранения (например, для 3600c0ff00014f56ee9f3cf6301000000, которое в настоящее время определяется как /dev/mapper/mpatha). Для этого в файл {{path|/etc/multipath.conf}} добавить секции: | |||
#:<syntaxhighlight lang="ini"> | |||
blacklist { | |||
wwid .* | |||
} | |||
blacklist_exceptions { | |||
wwid "3600c0ff00014f56ee9f3cf6301000000" | |||
}</syntaxhighlight> | |||
#:Данная настройка предписывается внести в черный список любые найденные устройства хранения данных, за исключением нужного. | |||
# Создать еще одну секцию: | |||
#:<syntaxhighlight lang="ini"> | |||
multipaths { | |||
multipath { | |||
wwid "3600c0ff00014f56ee9f3cf6301000000" | |||
alias mpatha | |||
} | |||
}</syntaxhighlight> | |||
#: В этом случае устройство всегда будет доступно только по имени {{path|/dev/mapper/mpatha}}. Вместо mpatha можно вписать любое желаемое имя устройства. | |||
В файл {{path|/etc/multipath.conf}} может также потребоваться внести рекомендованные производителем СХД параметры. | |||
После внесения изменений в файл {{path|/etc/multipath.conf}} необходимо перезапустить службу multipathd для активации настроек: | |||
<syntaxhighlight lang="bash"># systemctl restart multipathd.service</syntaxhighlight> | |||
{{Note|Проверить файл {{path|/etc/multipath.conf}} на наличие ошибок можно, выполнив команду: | |||
<syntaxhighlight lang="bash"># multipath -t</syntaxhighlight> }} | |||
[[Категория:Admin]] | [[Категория:Admin]] |
Текущая версия от 10:24, 20 мая 2024
Для поддержки 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