Multipath devices в Linux — это технология, которая позволяет использовать несколько физических путей к одному и тому же блочному устройству для повышения отказоустойчивости и производительности системы. Это особенно полезно в средах хранения данных, где у устройства хранения (например, SAN) может быть несколько путей для доступа к одному и тому же дисковому массиву.
Проблема и необходимость в multipath
Если физическое устройство хранения доступно через несколько путей, каждый из которых представлен как отдельное блочное устройство (например, /dev/sda, /dev/sdb, и т.д.), то это может привести к путанице и неэффективному использованию системы. В случае отказа одного пути, доступ к устройству будет потерян, если не настроена система multipath.
Multipath решает эту проблему, объединяя несколько физических путей в одно логическое устройство, что позволяет:
- Увеличить отказоустойчивость: если один из путей выходит из строя, другие остаются доступными.
- Повысить производительность: за счёт балансировки нагрузки между путями.
Основные компоненты multipath в Linux
- Драйвер Device Mapper: Это уровень абстракции, позволяющий управлять множеством путей как одним устройством.
- Утилита multipath-tools: Она предоставляет набор инструментов для настройки и управления множеством путей. Основные компоненты:
multipath: управляет и создает multipath устройства.
multipathd: демон, следящий за состоянием путей и управляющий ими в реальном времени.
Основные термины
- Path: Физический путь к устройству хранения через определённый адаптер или контроллер.
- WWID (World Wide Identifier): Уникальный идентификатор устройства хранения.
- Group: Набор путей, которые ведут к одному и тому же устройству.
Установка и настройка multipath
Шаг 1: Установка multipath-tools
Для настройки multipath в Linux необходимо установить пакет multipath-tools:
sudo apt install multipath-tools # Для Ubuntu/Debian
sudo yum install device-mapper-multipath # Для RHEL/CentOS
Шаг 2: Проверка состояния multipath
После установки можно проверить, включён ли multipath по умолчанию:
sudo multipath -ll
Если multipath не настроен, команда не покажет активных устройств.
Шаг 3: Настройка файла конфигурации /etc/multipath.conf
Файл /etc/multipath.conf используется для настройки multipath. Он может включать следующие параметры:
defaults {
user_friendly_names yes # Для удобочитаемых имён устройств
path_grouping_policy multibus # Для балансировки нагрузки между всеми путями
path_checker tur # Метод проверки доступности пути (tur – Test Unit Ready)
}
blacklist {
devnode "^sd[a-z]" # Исключение локальных дисков из multipath
}
multipaths {
multipath {
wwid 36005076303ffc56600000000000010aa
alias mydisk
}
}
Шаг 4: Запуск и управление multipathd
После настройки конфигурации можно запустить или перезапустить демон multipathd:
sudo systemctl restart multipathd
Теперь демон будет отслеживать состояние всех путей и управлять ими.
Шаг 5: Просмотр устройств multipath
Чтобы посмотреть список всех multipath-устройств:
sudo multipath -ll
Команда покажет список устройств, их идентификаторы, доступные пути и их статус.
Работа с устройствами multipath
Проверка доступных путей
Команда multipath -ll выводит всю информацию о доступных путях и их статусе.
mpathb (36005076303ffc56600000000000010aa) dm-0 HP,HSV300
size=200G features='1 queue_if_no_path' hwhandler='0' wp=rw
|-+- policy='round-robin 0' prio=50 status=active
| `- 3:0:0:1 sdb 8:16 active ready running
`-+- policy='round-robin 0' prio=10 status=enabled
`- 2:0:0:1 sdc 8:32 active ready running
Удаление путей
Иногда может понадобиться удалить путь, если он вышел из строя или больше не нужен:
sudo multipath -f [mpathX]
Где mpathX — имя multipath устройства.
Добавление и сканирование путей
Для сканирования новых путей и обновления информации о путях:
sudo multipath
Управление multipath устройствами
Для управления устройствами multipath можно использовать следующие команды:
- multipath -r: Перезагрузка конфигурации multipath.
- multipath -F: Очистка всех существующих multipath устройств.
- multipath -f <device>: Удаление конкретного multipath устройства.
Режимы работы Multipath
Multipath может использовать различные политики для управления путями:
- failover: Используется только один путь, остальные в режиме ожидания. При отказе основного пути переключается на резервный.
- multibus: Используются все доступные пути для балансировки нагрузки.
- round-robin: Переключение между путями по очереди для равномерного распределения нагрузки.
- priority-based: Выбор пути на основе приоритетов, заданных администратором.
Пример сценария
1. Устройство хранения доступно через два пути:
Путь 1: /dev/sda
Путь 2: /dev/sdb
2. Настраиваем multipath, объединяя пути в одно устройство:
WWID устройства: 36005076303ffc56600000000000010aa
Логическое устройство multipath: /dev/mapper/mpatha
3. Проверяем состояние:
sudo multipath -ll
4. Если один из путей отключается, multipathd автоматически перенаправит трафик на другой путь.
Технология multipath в Linux предоставляет надёжное и гибкое решение для работы с устройствами хранения такими, как СХД, обеспечивая как отказоустойчивость, так и улучшенную производительность за счёт балансировки нагрузки между путями.