Назад | Перейти на главную страницу

Конфигурация Dell PowerVault MD3200i dm-multipath и проблемы производительности в Debian 6.0 (сжатие)

Я буду использовать эту цель 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.