Я буду использовать эту цель iSCSI для пары хостов виртуальных машин KVM на базе Debian. Каждый из резервных контроллеров цели имеет 4 порта Ethernet; так же и для инициаторов. Я использую два коммутатора (ZyXEL GS-2200-24) с транком между ними, и VLAN изолируют каждый путь. Я также включил большие кадры и управление потоком.
Система MPIO в этом выпуске Debian великолепна: пока dm-multipath загружается до входа в систему iSCSI target, все просто работает.TM без какого-либо файла конфигурации, при условии, что я заранее загрузил scsi_dh_rdac.
Это первая загвоздка: я могу изменить некоторые значения по умолчанию, если предоставлю /etc/multipath.conf
файл. Я тестировал с use_friendly_names yes
, что успешно создает mpath0
ссылка в /dev/mapper/
- вместо использования недружелюбного WWID. Но если я попытаюсь изменить rr_min_io
со значения по умолчанию 1000 до 8, меня игнорируют; так что я танцую этот красивый танец:
dmsetup suspend mpath0
dmsetup table mpath0 | sed 's, 1000, 8,g' | dmsetup reload mpath0
dmsetup resume mpath0
Это изменяет количество запросов, отправленных по одному из четырех каналов до того, как сработает циклический перебор, и отправляет его на следующий, с 1000 по умолчанию до 8. Это фактически изменяет таблицу многопутевости (согласно multipath -v3 | grep params
). Как настроить это значение по умолчанию в новом коде multipath? Я предполагаю, что это сработало до того, как multipath стал динамическим и самонастраивающимся ... По крайней мере, все документы поставщиков, которые я читал, и другие обсуждения в Интернете предполагают, что это сработало.
Простая последовательная запись с использованием dd bs=100M count=50 if=/dev/zero of=/dev/mapper/mpath0-part1 & sync
изменяется с ~ 135 МБ / с до ~ 260 МБ / с с этим изменением. И это вторая загвоздка: это примерно 2 Гбит / с вместо 4 Гбит / с, которые у меня фактически есть между инициатором и целью. Бег iostat -kd 1
для текущих обновлений за 1 секунду отображаются только 2 из 4 путей.
Этот LUN имеет короткий ход: его 16 ГБ находятся в самом начале 12-шпиндельного массива RAID10 из 600 дисков SAS 6 Гбит / с, вращающихся со скоростью 15 000 об / мин. Я ожидал, что этого будет достаточно для насыщения имеющихся у меня 4 Гбит / с; я прав?
Техника, которую вы использовали для изменения rr_min_io
это то, что multipathd делает за вас. Удобный способ настройки значений на бегущей карте: echo reconfigure | multipathd -k
Например: вот NetApp, который rr_min_io
сейчас 128
# dmsetup table 360a98000534b504d6834654d53793373: 0 33484800 multipath 0 1 alua 2 1 round-robin 0 2 1 8:16 128 8:32 128 round-robin 0 2 1 8:64 128 8:48 128 360a98000534b504d6834654d53793373-part1: 0 33484736 linear 251:0 64
/etc/multipath.conf
был изменен так rr_min_io
было сейчас 1000
. Затем,
# echo reconfigure | multipathd -k multipathd> reconfigure ok
Чтобы проверить изменение:
# dmsetup table 360a98000534b504d6834654d53793373: 0 33484800 multipath 0 1 alua 2 1 round-robin 0 2 1 8:16 1000 8:32 1000 round-robin 0 2 1 8:48 1000 8:64 1000 360a98000534b504d6834654d53793373-part1: 0 33484736 linear 251:0 64
Я согласен, что multipathd может лучше справиться с рекламой и сообщением о дополнительных переменных, которые он использует. Независимо от того, что delta multipathd не сообщает, dmsetup делает, но это не обязательно означает, что использование dmsetup напрямую - лучшая идея для перенастройки этих параметров. Reconfigure работает практически для всего.
В руководстве по развертыванию говорится, что ваша SAN активна-активна, но этот термин используется неправильно в отрасли, на практике он может быть «двойным активным», что означает, что к LUN может получить доступ только один процессор хранения одновременно, но оба контроллера могут быть активными и управлять разными LUN, они просто не могут балансировать нагрузку на один и тот же LUN.
Здесь на p79 в разделе балансировки нагрузки.
Two sessions with one TCP connection are configured from the host to each controller (one session per port), for a total of four sessions. The multi-path failover driver balances I/O access across the sessions to the ports on the same controller. In a duplex configuration, with virtual disks on each controller, creating sessions using each of the iSCSI data ports of both controllers increases bandwidth and provides load balancing
Обратите внимание на множественное использование виртуальные диски в контексте дуплексная конфигурация, он не вызывает тот же диск. Это похоже на двойное активное развертывание. Истинно активные-активные сети SAN обычно зарезервированы для развертываний Fibre Channel. Возможно, существуют сети хранения данных iSCSI, которые выполняют это, но я не встречал ни одной, хотя я также не развертываю iSCSI широко.
Настоящая проблема игнорируемого значения rr_min_io - это простое и скрытое несоответствие ABI между работающим ядром и средствами multipath.