У меня есть Celerra NX4, в рекомендациях к ней указано, что IOOperationLimit (число команд, которое будет отправлено по одному пути, до переключения на следующий) для виртуальных хранилищ при включенном алгоритме multipath RoundRobin стоит выставлять в значение равное 1 (единице).
Все бы ничего, кроме того что у меня этих виртуальных хранилищ больше десятка и 8 хостов. Итого более 80 раз вбивать однотипные команды? Ну уж нет – это не unix way.
Подготовка
Для начала проверим какое значение у этого параметра уже выставлено:
for i in
ls /vmfs/devices/disks/ | grep naa.6006
; do esxcli nmp roundrobin getconfig –device $i ;done
Этот скрипты показывает список всех виртуальных хранилищ, с названиями начиняющимися на naa.6006 и показывает настройки RoundRobin.
Как и ожидалось – 1000, значит нужно изменить его на рекомендованное.
Меняем настройки RoundRobin
Для одного виртуального хранилища это можно сделать следующим способом:
esxcli nmp roundrobin setconfig –type “iops” –iops=1 –device naa.далее_ваш_id
Но как я уже говорил, у меня хранилищ много
Этот скрипт указывает нужные значение сразу на все заданные виртуальные хранилища на одном сервере ESXi:
for i in
ls /vmfs/devices/disks/ | grep naa.6006
; do esxcli nmp roundrobin setconfig –type “iops” –iops=1 –device $i ;done
Он выбирает все хранилища с названием, начинающимся на naa.6006 (а это моя Celerra) и выставляет значение IOOperationLimit равным 1.
Но прочитав вотэту запись, пришлось задуматься о том как сделать так, чтобы настройки сохранялись после перезагрузки хостов. Решение пришло быстро, хоть оно и не совсем идеальное (идеальное – полечить этот баг).
Мы добавляем строку с нашей командой в файл /etc/rc.local на каждом ESX хосте и тогда, при загрузке, rc.local запустит скрипт и выставит нужные мне значения.
Всё. После выхода патча на этот баг, нужно не забыть убрать эти настройки из rc.local 😉
Запись первоначально опубликована в блоге volnyanskiy.ru, автор Волнянский Виталий
Для массового переключения на Round Robin я использовал следующую команду:
for i in
ls /vmfs/devices/disks/ | fgrep naa.6006
; do esxcli nmp device setpolicy –psp VMW_PSP_RR –device $i;doneЕще у меня ругнулось на кавычки вокруг iops. Без кавычек сработало.
Конкретно для NX4, при подключении хостов в стоящий у нее на backend AX4, или просто для AX4 (до сих пор много этих СХД живет на официальной поддержке EMC) переключение на RR вредный совет. Системы старые и в силу ограничения firmware не умеют ALUA. А значит при включении RR со стороны ESXi будет возникать большое количество переключений LUN между контроллерами на стороне СХД. Так называемый trespass или смена владельца луна. А значит СХД вместо обработки ввода/вывода с хостов будет играть в “пинг-понг” луном между контроллерами. Что сильно скажется на общей производительности. С такими старыми системами лучше жить на MPIO выставленном в “Fixed”, причем таким образом, чтобы все хосты кластера ходили до одного и того же луна через один и тот же контроллер СХД (до другого луна можно и через другой контроллер настроить :))