Multipath: различия между версиями

Материал из ALT Linux Wiki
(Добавлены включение multipathd и конфигурация /etc/initrd.mk)
Нет описания правки
Строка 8: Строка 8:
#: PUT_FILES += $(shell ls /lib64/multipath/*.so)
#: 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]]

Версия от 18:18, 17 мая 2024

Для поддержки multipath-устройств стоит воспользоваться стартеркитом server (20161212 или новее) либо вручную:

  1. apt-get install make-initrd-multipath;
  2. service multipathd enable; service multipathd start;
  3. исправить устройства в /etc/fstab по /dev/disks/by-id/wwn-*, /dev/mapper/* или /dev/dm-* (т.к. uuid тот же);
  4. добавить в /etc/initrd.mk следующие строки (актуально для Альт СП релиз 10):
    FEATURES += multipath
    PUT_FILES += $(shell ls /lib64/multipath/*.so)
  5. перегенерировать 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/.

Примечание: Устройства /dev/dm-X предназначены только для внутреннего использования и не должны использоваться напрямую.


Настройки 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, имя не будет автоматически согласовано на всех узлах кластера.

ОС при загрузке определяет пути к устройствам в изменяющейся среде выполнения (например, при новой загрузке в среде выполнения ОС появились новые устройства хранения или исчезли старые, и т.п.) по отношению к предыдущей загрузке или по отношению к заданной ранее конфигурации. Это может приводить к противоречиям при именовании устройств. Для того чтобы избежать такого поведения, рекомендуется:

  1. Сделать явное исключение для устройства (раздела) хранения (например, для 3600c0ff00014f56ee9f3cf6301000000, которое в настоящее время определяется как /dev/mapper/mpatha). Для этого в файл /etc/multipath.conf добавить секции:
    blacklist {
            wwid .*
    }
    
    blacklist_exceptions {
            wwid "3600c0ff00014f56ee9f3cf6301000000"
    }
    
    Данная настройка предписывается внести в черный список любые найденные устройства хранения данных, за исключением нужного.
  2. Создать еще одну секцию:
    multipaths {
      multipath {
            wwid "3600c0ff00014f56ee9f3cf6301000000"
            alias mpatha
      }
    }
    
    В этом случае устройство всегда будет доступно только по имени /dev/mapper/mpatha. Вместо mpatha можно вписать любое желаемое имя устройства.

В файл /etc/multipath.conf может также потребоваться внести рекомендованные производителем СХД параметры.

После внесения изменений в файл /etc/multipath.conf необходимо перезапустить службу multipathd для активации настроек:

# systemctl restart multipathd.service

{{Note|Проверить файл /etc/multipath.conf на наличие ошибок можно, выполнив команду:

# multipath -t