Конфигурационный файл DM-Multipath

По умолчанию DM-Multipath предоставляет конфигурации для большинства множественных устройств. В дополнение к этому DM-Multipath включает поддержку большинства массивов хранения, которые поддерживают DM-Multipath. Значения конфигураций по умолчанию и поддерживаемые устройства можно найти в файле multipath.conf.defaults.

Вы можете переопределить настроенные значения по умолчанию для DM-Multipath, изменив конфигурационный файл /etc/multipath.conf. Если необходимо, вы можете также добавить массив хранения, который не поддерживается по умолчанию, в конфигурационный файл. Эта глава предоставляет информацию по разбору и изменению файла multipath.conf. Она содержит следующие секции:

В файле конфигурации multipath вам нужно определить только те секции, которые вам потребуются для ваших настроек или те, для которых вы захотите изменить значения по умолчанию, определенные в multipath.conf.defaults. Если в файле присутствуют секции не относящиеся к вашему оборудованию или для которых вы не хотите менять значения по умолчанию, вы можете оставить их закомментированными, как в изначальном файле.

Файл конфигурации допускает синтаксис регулярных выражений.

Версию конфигурационного файла с комментариями можно найти в [архиве] /usr/share/doc/multipath-tools/examples/multipath.conf.annotated.gz.

Обзор файла конфигурации

Конфигурационный файл multipath разделяется на следующие секции:

blacklist
Перечисляет специфические устройства, которые не принимаются во внимание multipath.

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

defaults
Общие настройки по умолчанию для DM-Multipath.

multipath
Параметры настроек по характеристикам отдельных множественных устройств. Эти значения переопределяют те, что определены в секциях defaults и devices.

devices
Параметры настроек для отдельных контроллеров хранилищ. Эти значения переопределяют те, что определены в секции defaults. Если вы используете дисковый массив, который не поддерживается по умолчанию, вам может потребоваться создать для него подсекцию в разделе devices.

Когда система определяет атрибут множественного устройства, сначала она ищет совпадения в секции multipath, потом в devices, и только затем использует значения по умолчанию.

"Черный список" в файле конфигурации

Секция blacklist конфигурационного файла multipath определяет устройства, которые не будут использоваться, когда система настраивает множественные устройства. Устройства, внесенные в список блокировки, не будут группироваться в множественные устройства.

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

  1. По WWID, как описано в секции Блокировка по WWID

  2. По имени устройства, как описано в секции Блокировка по имени устройства

  3. По типу устройства, как описано в секции Блокировка по типу устройства

По умолчанию множество типов устройств блокируются даже если вы комментируете изначальную секцию blacklist конфигурационного файла. Для информации смотрите Блокировка по имени устройства.

Блокировка по WWID

Вы можете задать определенные устройства для блокирования по их международному идентификатору (WWID) с использованием метки wwid в секции blacklist конфигурационного файла.

Следующий пример показывает строки конфигурационного файла, которые будут блокировать устройство с WWID 26353900f02796769.

blacklist {
       wwid 26353900f02796769
}

Блокировка по имени устройства

Вы можете заблокировать типы устройств по их именам так, что они не будут использоваться для группировки в множественные устройства, задав метку devnode в секции blacklist.

Следующий пример показывает строки конфигурационного файла, которые заблокируют все SCSI устройства, поскольку они блокируют все устройства sd*.

blacklist {
       devnode "^sd[a-z]"
}

Вы можете использовать метку devnode в секции blacklist для определения отдельных блокируемых устройств вместо всех устройств определенного типа. Тем не менее, это не рекомендуется, поскольку, несмотря на то, что они статично определены в правилах udev, нет гарантии что определенное устройство будет иметь то же имя после перезагрузки. Например, после перезагрузки имя устройства может поменяться с /dev/sda на /dev/sdb.

По умолчанию следующие метки devnode включены в список blacklist. Устройства, определяемые в этой секции, как правило не поддерживают DM-Multipath. Чтобы разрешить любое из перечисленного при создании множественных устройств, вы можете определить их в секции blacklist_exceptions как показано в секции Исключения блокировки.

blacklist {
       devnode "^(ram|raw|loop|fd|md|dm-|sr|scd|st)[0-9]*"
       devnode "^hd[a-z]"
}

Блокировка по типу устройства

Вы можете определить отдельные типы устройств в секцию blacklist файла конфигурации с помощью секций device. Следующий пример блокирует все устройства IBM DS4200 и любые производства HP.

blacklist {
       device {
               vendor  "IBM"
               product "3S42"       #DS4200 Product 10
       }
       device {
               vendor  "HP"
               product "*"
       }
}

Исключения блокировки

Вы можете использовать секцию blacklist_exceptions конфигурационного файла для разрешения множественных устройств, заблокированных по умолчанию.

Например, если у вас множество устройств и вы хотите разрешить только одно из них (с WWID 3600d0230000000000e13955cc3757803), вместо того, чтобы блокировать каждое из них отдельно за исключением требуемого, можно заблокировать все и затем разрешить только одно, добавив следующие строки в файл /etc/multipath.conf:

blacklist {
        wwid "*"
}

blacklist_exceptions {
        wwid "3600d0230000000000e13955cc3757803"
}

Когда добавляете устройства в секцию blacklist_exceptions конфигурационного файла, вы должны указывать исключения тем же способом, что и в секции blacklist. Например, исключение по WWID не сработает для устройств, определенных в blacklist с помощью devnode, даже если заблокированное устройство ассоциируется с данным WWID. Точно так же исключения по devnode применимы только к меткам devnode, а исключения по device - к меткам device.

Значения по умолчанию в файле конфигурации

Файл конфигурации /etc/multipath.conf включает секцию defaults, которая устанавливает параметр user_friendly_names в yes, как показано ниже:

defaults {
        user_friendly_names yes
}

Это переопределяет значение параметра user_friendly_names по умолчанию.

Конфигурационный файл содержит шаблоны настроек по умолчанию. Эта секция комментируется как показано ниже:

#defaults {
#       udev_dir                /dev
#       polling_interval        5
#       selector                "round-robin 0"
#       path_grouping_policy    failover
#       getuid_callout          "/lib/dev/scsi_id --whitelisted --device=/dev/%n"
#	prio			const
#	path_checker		directio
#	rr_min_io		1000
#	rr_weight		uniform
#	failback		manual
#	no_path_retry		fail
#	user_friendly_names	no
#}

Для переопределения значения по умолчанию любого настраиваемого параметра вы можете скопировать соответствующую строку из этого шаблона в секцию defaults и снять комментарий. Например, чтобы переустановить параметр path_grouping_policy в multibus вместо определенного по умолчанию failover, скопируйте соответствующую строку из шаблона и раскомментируйте ее, как показано ниже:

defaults {
        user_friendly_names     yes
        path_grouping_policy    multibus
}

Таблица настроек Multipath по умолчанию определяет атрибуты, которые устанавливаются в секции defaults файла multipath.conf. Эти значения используются DM-Multipath пока они не переопределены атрибутами, заданными в секциях devices и multipaths в этом же файле.

Настройки Multipath по умолчанию
Атрибут Описание
polling_interval Определяет интервал между двумя проверками маршрутов в секундах. Для правильной работы маршрутов, проверки постепенно увеличиваются до значения (4 * polling_interval). Значение по умолчанию 5.
udev_dir Каталог, где создаются узлы устройств udev. По умолчанию /dev.
multipath_dir Каталог, где сохраняются динамические объекты общего доступа. Значение по умолчанию зависит от системы, обычно /lib/multipath.
verbosity Значение уровня комментариев по умолчанию. Большее значение увеличивает количество комментариев. Допустимые значения от 0 до 6. Значение по умолчанию 2.
path_selector Определяет алгоритм определения следующего маршрута ввода/вывода по умолчанию. Возможные значения:
1. round-robin 0: Цикл по всем маршрутам в группе маршрутов, посылая одинаковый поток в каждый.
2. queue-length 0: Посылать следующую порцию данных по маршруту с наименьшим количеством невыполненных запросов.
3. service-time 0: Посылать следующую порцию данных по маршруту с наименьшими задержками, которые определяются делением общего объема невыполненного ввода/вывода на каждом маршруте на их относительную пропускную способность.
Значение по умолчанию round-robin 0.
path_grouping_policy Определяет политику группирования маршрутов по умолчанию для заранее неопределенных множественных устройств. Допустимые значения:
1. failover = 1 маршрут на приоритетную группу
2. multibus = все доступные маршруты на 1 приоритетную группу
3. group_by_serial = 1 приоритетная группа на обнаруженный серийный номер
4. group_by_prio = 1 приоритетная группа на значение приоритета маршрута
5. group_by_node_name = 1 приоритетная группа на целевое имя узла
Значение по умолчанию failover.
getuid_callout Определяет программу и аргументы для получения уникальный идентификатор маршрута. Требуется абсолютный адрес маршрута.
значение по умолчанию /lib/udev/scsi_id --whitelisted --device=/dev/%n.
prio Определяет функцию вызова для определения значения приоритета маршрута. Например, биты ALUA в спецификации SPC-3 обеспечивают приемлемое значение prio.
Возможные значения:
1. const: Устанавливает приоритет 1 для всех маршрутов.
2. emc: Генерирует приоритет маршрута для массивов EMC.
3. alua: Генерирует приоритет маршрута на основе установок ALUA для SCSI-3.
4. netapp: Генерирует приоритет маршрута для массивов NetApp.
5. rdac: Генерирует приоритет маршрута для контроллеров LSI/Engenio RDAC.
6. hp_sw: Генерирует приоритет маршрута для контроллеров Compaq/HP в активно/резервном режиме.
7. hds: Генерирует приоритет маршрута для дисковых массивов Hitachi HDS Modular.
Значение по умолчанию const.
prio_args Строка аргументов, передаваемая в функцию prio. Большинство функций prio не требуют аргументов. Установщик приоритетов datacore требует один. Например, "timeout=1000 preferredsds=foo". Значение по умолчанию (null) "".
features Дополнительные особенности множественных устройств. Единственная существующая опция - это queue_if_no_path, аналогичная установке no_path_retry для queue. Для дополнительной информации по проблемам, которые могут возникнуть при использовании этой опции, смотрите секцию Администрирование DM-Multipath и устранение проблем.
path_checker Определяет метод по умолчанию для получения статуса маршрута. Возможные значения:
1. readsector0: Читает первый сектор устройства.
2. tur: Передает TEST UNIT READY устройству.
3. emc_clariion: Запрашивает у EMC Clariion специфическую страницу EVPD 0xC0.
4. hp_sw: Определяет статус маршрута массива носителей HP с использованием микропрограммного статуса Активный/Резервный.
5. rdac: Определяет статус маршрута для контроллера хранилища LSI/Engenio RDAC.
6. directio: Использует прямое чтение первого сектора.
Значение по умолчанию directio.
failback Управляет восстановлением после сбоя на группе маршрутов.
1. Значение immediate определяет немедленное восстановление приоритета до высшего у группы маршрутов, которая содержит активные маршруты.
2. manual предписывает, что не нужно немедленно восстанавливаться после сбоя и что восстановление может произойти только при вмешательстве оператора.
3. Числовое значение больше 0 определяет восстановление после указанного количества секунд.
Значение по умолчанию manual.
rr_min_io Определяет количество запросов ввода/вывода для переключения маршрута на другой в текущей группе маршрутов.
Значение по умолчанию 1000.
rr_weight Если указано priorities, то вместо отправки rr_min_io запросов до переключения маршрута, количество запросов определяется rr_min_io, умноженное на приоритет маршрута, определяемый функцией prio. Если указано uniform, то все маршруты имеют одинаковый вес.
Значение по умолчанию uniform.
no_path_retry Числовое значение для этого атрибута определяет количество попыток системы использовать поврежденный маршрут до отключения. Значение fail указывает на немедленное отключение, без запросов. Значение queue указывает на безостановочный опрос маршрута до его восстановления.
Значение по умолчанию 0.
user_friendly_names Если установлено yes, означает, что система использует файл /etc/multipath/bindings для назначения постоянного и уникального псевдонима (alias) для множественного устройства в виде mpathn. Если указано no, система будет использовать WWID в качестве псевдонима для устройства. В обоих случаях то, что указано здесь может быть переопределено в секции multipaths конфигурационного файла.
Значение по умолчанию no.
queue_without_daemon Если установлено no, сервис multipathd отключит опрос всех устройств, когда они выключены.
Значение по умолчанию yes.
flush_on_last_del Если установлено yes, то multipath отключит опрос устройства, когда последний маршрут к нему будет удален.
Значение по умолчанию no.
max_fds Устанавливает максимальное количество дескрипторов, которое может быть открыто multipath и сервисом multipathd. Это эквивалент команде ulimit -n. Значение максимума установится в качестве системного ограничения в файле /proc/sys/fs/nr_open. Если значение не установлено, максимальное количество дескрипторов открытых файлов берется из вызывающего процесса, обычно значение равно 1024. Для безопасности, стоит установить значение по максимальному количеству путей + 32, если это значение больше 1024.
checker_timer Ограничение по времени для проверок маршрутов, которое выдают SCSI команды с заданным таймаутом, в секундах.
Значение по умолчанию берется из /sys/block/sdx/device/timeout, которое установлено в 30 сек. для выпуска Ubuntu 12.04 LTS.
fast_io_fail_tmo Количество секунд, которое интерфейс SCSI будет ждать после обнаружения проблемы на удаленном порту оптического канала (FC) до установки состояния падения устройства ввода/вывода по этому порту. Это значение должно быть меньше, чем значение dev_loss_tmo. Установка значения off выключает ограничение по времени.
Значение по умолчанию зависит от операционной системы.
dev_loss_tmo Количество секунд, которое интерфейс SCSI будет ждать после обнаружения проблемы на удаленном порту оптического канала (FC) до удаления его из системы. При установке значения infinity будет использован интервал в 2147483647 сек. (68 лет).
Значение по умолчанию зависит от операционной системы.

Атрибуты множественности в файле конфигурации

Таблица Атрибуты множественности показывает атрибуты, которые вы можете устанавливать в секции multipaths конфигурационного файла multipath.conf для каждого отдельного множественного устройства. Эти атрибуты применяются только к одному конкретному множественному устройству. Эти значения по умолчанию используются DM-Multipath и переопределяют атрибуты, установленные в секциях defaults и devices файла multipath.conf.

Атрибуты множественности
Атрибут Описание
wwid Указывает WWID множественного устройства, для которого применяется атрибут множественности. Этот параметр обязательный для этой секции файла multipath.conf.
alias Определяет символическое имя для множественного устройства, для которого применяется атрибут множественности. Если вы используете user_friendly_names, не устанавливайте это значение в mpathn. Это может привести к конфликту с автоматически присвоенным дружественным именем и предоставить вам некорректные имена устройств.

В дополнение следующие параметры могут быть переопределены в секции multipath:

  1. path_grouping_policy

  2. path_selector

  3. failback

  4. prio

  5. prio_args

  6. no_path_retry

  7. rr_min_io

  8. rr_weight

  9. flush_on_last_del

Следующий пример показывает множественные атрибуты, определенные в конфигурационном файле для двух отдельных множественных устройств. Первое устройство имеет WWID 3600508b4000156d70001200000b0000 и символическое имя yellow.

Второе устройство в примере имеет WWID 1DEC_321816758474 и символическое имя red. В этом примере атрибут rr_weight установлен в значение priorities.

multipaths {
       multipath {
              wwid                  3600508b4000156d70001200000b0000
              alias                 yellow
              path_grouping_policy  multibus
              path_selector         "round-robin 0"
              failback              manual
              rr_weight             priorities
              no_path_retry         5
       }
       multipath {
              wwid                  1DEC_____321816758474
              alias                 red
              rr_weight             priorities
        }
}

Устройства в файле конфигурации

Таблица Атрибуты устройств показывает атрибуты, которые вы можете поставить для каждого отдельного дискового массива в секции devices конфигурационного файла multipath.conf. Эти атрибуты используются DM-Multipath пока не будут переопределены в секции multipaths файла multipath.conf для маршрутов, которые включают это устройство. Эти атрибуты переопределяют наборы атрибутов в секции defaults файла multipath.conf.

Многие устройства, поддерживающие множественные маршруты, включены по умолчанию в настройки multipath. Значения для устройств, поддерживаемых по умолчанию, перечислены в файле multipath.conf.defaults. Возможно вам не потребуется изменять значения для этих устройств, но если потребуется, вы можете переопределить значения по умолчанию, включив метки в файл конфигурации для устройства, которые переопределят эти значения. Вы можете скопировать значения по умолчанию из multipath.conf.annotated.gz или, если предпочитаете короткий конфигурационный файл, из файла multipath.conf.synthetic для нужного устройства и перезаписать значения, которые вы хотите изменить.

Для добавления устройства в эту секцию конфигурационного файла, который не настроился автоматически по умолчанию, вы должны установить параметры vendor и product. Вы можете найти эти значения, просматривая /sys/block/device_name/device/vendor и /sys/block/device_name/device/model, где device_name - это устройство, требующее настройки множественности, как в следующем примере:

# cat /sys/block/sda/device/vendor
WINSYS  
# cat /sys/block/sda/device/model
SF2372

Дополнительные параметры для определения зависят от специфических устройств. Если устройство активно/активное, вам, как правило, не требуется устанавливать дополнительные параметры. Возможно вы захотите установить path_grouping_policy в multibus. Другие параметры, которые вы возможно захотите определить, это no_path_retry и rr_min_io, как описано в таблице Атрибуты множественности.

Если устройство активно/пассивное, но автоматически переключает маршруты ввода/вывода на пассивный маршрут, вам потребуется изменить функцию проверки на ту, которая не посылает поток ввода/вывода для проверки работоспособности (иначе ваше устройство будет постоянно находиться в состоянии сбоя). Это также всегда подразумевает, что вы установили path_checker в tur; это работает для всех SCSI устройств, которые поддерживают команду Test Unit Ready, которых большинство.

Если устройство требует специальной команды для переключения маршрутов, то настройка этого устройства требует модуля ядра для управления оборудованием. Доступный в данное время обработчик - это emc. Если это не подходит для вашего устройства, то возможно у вас не получится настроить устройство для multipath.

Атрибуты устройств
Атрибут Описание
vendor Определяет имя производителя устройства хранения, для которого применяют атрибуты, например, COMPAQ.
product Определяет название продукта устройства хранения, для которого применяют атрибуты, например, HSV110 (C)COMPAQ.
revision Определяет идентификатор версии устройства хранения.
product_blacklist Определяет регулярное выражение для блокировки устройства по его названию.
hardware_handler Определяет модуль, который будет использован для выполнения специфических действий, когда переключается группа маршрутов или обнаруживается ошибка ввода/вывода. Возможные значения включают:
1. 1 emc: обработчик для массивов хранения EMC.
2. 1 alua: обработчик для SCSI-3 массивов ALUA.
3. 1 hp_sw: обработчик для контроллеров Compaq/HP.
4. 1 rdac: обработчик для контроллеров LSI/Engenio RDAC.

В дополнение следующие параметры могут быть переопределены в секции device:

  1. path_grouping_policy

  2. getuid_callout

  3. path_selector

  4. path_checker

  5. features

  6. failback

  7. prio

  8. prio_args

  9. no_path_retry

  10. rr_min_io

  11. rr_weight

  12. fast_io_fail_tmo

  13. dev_loss_tmo

  14. flush_on_last_del

Каждый раз, как определяется hardware_handler, ваша обязанность проверить, что соответствующий модуль ядра загружен для поддержки указанного интерфейса. Эти модули могут быть найдены в /lib/modules/`uname -r`/kernel/drivers/scsi/device_handler/ . Необходимый модуль должен быть интегрирован в initrd, чтобы гарантировать обязательное обнаружение и способность обхода-восстановления сбоев, доступные во время загрузки. Например,
# cat scsi_dh_alua >> /etc/initramfs-tools/modules  ## append module to file
# update-initramfs -u -k all

Следующий пример показывает device метку в конфигурационном файле multipath:

#devices {
#	device {
#		vendor			"COMPAQ  "
#		product			"MSA1000         "
#		path_grouping_policy	multibus
#		path_checker		tur
#		rr_weight		priorities
#	}
#}

Пробелы, оставленные в полях vendor, product и revision, имеют значение, поскольку multipath выполняет прямое сравнение этих атрибутов, чей формат определен в спецификациях SCSI, особенно команда Standard INQUIRY. Когда используются кавычки, поля vendor, product и revision будут интерпретироваться строго по спецификации. Регулярные выражения могут интегрироваться в закавыченные строки. Поля, будучи объявлены без требуемых пробелов, будут скопированы multipath в буфер правильного размера и дополнены требуемым количеством пробелов. Спецификация ожидает, что все поле будет заполнено печатаемыми символами или пробелами, как видно в примере выше:

  1. vendor: 8 символов

  2. product: 16 символов

  3. revision: 4 имвола

Для создания более крепкого файла конфигурации могут быть также использованы регулярные выражения. Операторы включают ^ $ [ ] . * ? +. Примеры работающих регулярных выражений могут быть найдены при исследовании примеров живой базы multipath и файла multipath.conf, находящихся в /usr/share/doc/multipath-tools/examples:

# echo 'show config' | multipathd -k