Настройка значения 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, автор Волнянский Виталий

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

  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», причем таким образом, чтобы все хосты кластера ходили до одного и того же луна через один и тот же контроллер СХД (до другого луна можно и через другой контроллер настроить :))

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *