Устройства множественного связывания

Без DM-Multipath каждый канал от серверного узла к контроллеру накопителя рассматривается системой как отдельное устройство, даже когда канал ввода/вывода соединяет тот же сервер с тем же контроллером накопителя. DM-Multipath предоставляет возможность организации каналов ввода/вывода локально через создание единого устройства множественного связывания поверх основных устройств.

Идентификаторы устройств множественного связывания

Каждое устройство множественного связывания имеет международный идентификатор (WWID), который гарантирует глобальную уникальность и неизменность. По умолчанию в имя устройства множественного связывания вставляется его WWID. В качестве альтернативы вы можете установить опцию user_frendly_names в конфигурационном файле, который предписывает DM-Multipath использовать алиас node-unique формы mpathn в качестве имени. Например, узел с двумя адаптерами шины (HBA) подключенными к контроллеру накопителя с двумя портами через единый беззоновый волоконный канал (FC) увидит четыре устройства: /dev/sda, /dev/sdb, /dev/sdc и /dev/sdd. DM-Multipath создает единое устройство с уникальным WWID, которое перенаправляет ввод/вывод на эти четыре зависимых устройства в зависимости от конфигурации. Когда настроечная опция user_friendly_names установлена в yes, имя множественного устройства устанавливается в mpathn. Когда новые устройства попадает под управление DM-Multipath, их можно увидеть в двух разных местах в каталоге /dev: /dev/mapper/mpathn и /dev/dm-n.

  1. Устройства в /dev/mapper создаются раньше в процессе загрузки. Используйте эти имена для доступа к множественным устройствам, например, при создании логических томов.

  2. Устройства в виде /dev/dm-n только для внутреннего использования и никогда не должны использоваться.

Для информации о настройках по умолчанию для множественных устройств, включая опцию настройки user_friendly_names, смотрите секцию Конфигурационный файл DM-Multipath.

Согласованные имена множественных устройств в кластере

Когда опция user_friendly_names установлена в yes, имя множественного устройства уникально для узла, но не гарантируется то же самое на всех узлах, использующих это устройство. Также, если вы установили опцию алиаса для устройства в секции multipaths конфигурационного файла multipath.conf, имя не будет автоматически согласовано со всеми узлами кластера. Это не вызовет сложностей при использовании LVM для создания логических устройств на множественном устройстве, но если вам требуется согласовать имена множественных устройств на всех узлах, рекомендуется оставить user_friendly_names значение no и не настраивать алиасы для устройств. По умолчанию, если у вас не установлено user_friendly_names в yes и не настроен алиас для устройства, имя для этого устройства будет совпадать с WWID, которое всегда одно и то же. Если же вы хотите согласованные дружественные имена, определяемые системой для всех узлов в кластере, следуйте данной процедуре:

  • Установите все множественные устройства на одной машине.

  • Заблокируйте все ваши множественные устройства на других машинах, выполнив команды:

# service multipath-tools stop
# multipath -F
  • Скопируйте файл /etc/multipath/bindings с первой машины на все остальные в кластере.

  • Восстановите работу сервиса multipathd на всех остальных машинах командой:

# service multipath-tools start

Если вы добавляете новое устройство, вам потребуется повторить этот процесс.

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

  • Настройте алиасы для множественных устройств в файле multipath.conf на одной машине.

  • Заблокируйте все ваши множественные устройства на других машинах, выполнив команды:

# service multipath-tools stop
# multipath -F
  • Скопируйте файл multipath.conf с первой машины на все остальные в кластере.

  • Восстановите работу сервиса multipathd на всех остальных машинах командой:

# service multipath-tools start

Если вы добавляете новое устройство , вам потребуется повторить процесс.

Атрибуты множественных устройств

В дополнение к опциям user_friendly_names и alias, множественные устройства имеют ряд атрибутов. Вы можете изменить эти атрибуты для определенных множественных устройств, создавая секции этих устройств в секции multipath конфигурационного файла. Для информации по секции multipath конфигурационного файла смотрите секцию Конфигурационный файл DM-Multipath.

Множественные устройства в логических томах

После создания множественных устройств вы можете использовать их имена так же как и имя физического устройства при создании физических томов LVM. Например, если /dev/mapper/mpatha имя множественного устройства, следующая команда пометит /dev/mapper/mpatha как физический том:

# pvcreate /dev/mapper/mpatha

Вы можете использовать полученный физический том LVM при создании группы томов LVM так же, как вы использовали бы другое физическое устройство.

Если вы пытаетесь создать физический том LVM на все устройство, на котором у вас сконфигурированы разделы, команда pvcreate приведет к ошибке.

Когда вы создаете логический том LVM, который использует массив носителей как активно/пассивное множественное устройство в качестве зависимых физических устройств, вы должны включить фильтры в lvm.conf для исключения дисков, на которых основано множественное устройство. Это нужно для ситуации, когда массив автоматически меняет активный маршрут на пассивный при получении [ошибки] ввода/вывода и множественное устройство будет обходить ошибку и восстанавливаться после сбоя всякий раз как LVM сканирует пассивный маршрут, если устройство не отфильтровано. Для активно/пассивных массивов, которые требуют команду для перевода пассивного маршрута в активное состояние, LVM каждый раз выводит предупреждение. Для фильтрования всех SCSI устройств в конфигурационном файле LVM (lvm.conf), включите следующий фильтр в секцию devices файла:

filter = [ "r/block/", "r/disk/", "r/sd.*/", "a/.*/" ]

После изменений в /etc/lvm.conf необходимо обновить initrd так, чтобы этот файл был скопирован туда, где фильтры имеют максимальную важность, во время загрузки. Выполните:

update-initramfs -u -k all
Каждый раз, как меняется /etc/lvm.conf или /etc/multipath.conf, initrd должен быть создан заново для отражения этих изменений. Это обязательно когда «черные списки» и фильтры необходимы для поддержания стабильной настройки хранилища.