Настройка значения IOOperationLimit для RoundRobin на нескольких виртуальных хранилищ одновременно

У меня есть 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.

image

Как и ожидалось – 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, автор Волнянский Виталий

2 thoughts on “Настройка значения IOOperationLimit для RoundRobin на нескольких виртуальных хранилищ одновременно”

  1. Для массового переключения на 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. Без кавычек сработало.

  2. Конкретно для NX4, при подключении хостов в стоящий у нее на backend AX4, или просто для AX4 (до сих пор много этих СХД живет на официальной поддержке EMC) переключение на RR вредный совет. Системы старые и в силу ограничения firmware не умеют ALUA. А значит при включении RR со стороны ESXi будет возникать большое количество переключений LUN между контроллерами на стороне СХД. Так называемый trespass или смена владельца луна. А значит СХД вместо обработки ввода/вывода с хостов будет играть в “пинг-понг” луном между контроллерами. Что сильно скажется на общей производительности. С такими старыми системами лучше жить на MPIO выставленном в “Fixed”, причем таким образом, чтобы все хосты кластера ходили до одного и того же луна через один и тот же контроллер СХД (до другого луна можно и через другой контроллер настроить :))

Leave a Reply

Your email address will not be published. Required fields are marked *