Ограничиваем дисковые I/O ресурсы для конкретной виртуальной машины

Ограничиваем дисковые I/O ресурсы для конкретной виртуальной машины

Источник: KB Article: 1038241


Все мы, наверное, наслышаны о том, что в VMware vSphere 4.1 появилась такая замечательная технология, как Storage I/O Control (SIOC). Если вы еще не знаете, что такое SIOC и зачем он нужен, то вам прямая дорога к прочтению следующих статей: 1 2 3. Так вот, SIOC - это конечно хорошо, но эта технология становится доступной, только если у вас имеется в наличии лицензия Enterprise Plus, а она (в смысле лицензия) имеется далеко не у каждого. Так что делать, если лицензии Enterprise Plus нет, а задать, например, ограничение на количество вырабатываемых IOps для конкретной виртуальной машины, необходимо. Как оказалось, решение существует. И оно достаточно простое. Всего лишь нужно добавить одну строчку в конфигурационный файл ВМ. Какую строчку и как добавить, показано чуть ниже.


Переходим в папку c нужной нам ВМ:

# cd /vmfs/volumes/ESXi-01-Local/Debian/

и добавляем (виртуальная машина к этому моменту должна находиться в выключенном состоянии) в конфигурационный файл ВМ строчку, которая ограничит количество операций ввода/вывода в секунду для данной ВМ до 50:

# echo "sched.scsi0:0.throughputCap = 50IOps" >> Debian.vmx

Если нам нужно ограничить не количество IOps, генерируемых данной ВМ, а полосу пропускания, то в конфигурационный файл данной ВМ добавляем следующую строку:

# echo "sched.scsi0:0.bandwidthCap = 10KBps" >> Debian.vmx

Вместо 10KBps вам нужно подставить своё, более подходящее значение.


Практикум

Первым делом на тестовом сервере под управлением ESXi я остановил все запущенные на нем виртуальные машины. Затем я запустил только одну ВМ (ей оказалась Debian) и посмотрел, сколько IOps она генерирует без каких-либо явным образом заданных ограничений. Затем я остановил ВМ и задал для нее ограничение на количество IOps, равное пятидесяти (50). Далее я снова запустил эту виртуальную машину. И вот, что я увидел на графике:

disk-iops-limit-1.jpg

Как видно на графике, виртуальная машина без каких-либо установленных ограничений может генерировать до трёхсот (300) IOps (примерное время на графике c 14:11 по 14:12). При этом ВМ с установленным ограничением (примерное время на графике: c 14:27 по 14:31), как и положено, в среднем, генерирует около 50 IOps. Точнее будет сказать, что ВМ генерирует больше IOps, но установленное ранее ограничение не дает выйти ВМ за рамки дозволенного. А это значит, что ограничение, как таковое, работает, что и требовалось доказать/подтвердить.

Tags (2)
Comments

Если не ошибаюсь ограничить vm по операциям дискового ввода/вывода (IOPs) можно и через vSphere Client, закладка Resource в свойствах виртуальной машины.

По полосе пропускания там вроде такого нету.

Если лицензия энтрэйпраз плюс, где есть SIOC, то да, из vSphere клиента можно ограничить. Во всех других случаях простого способа нет.

Понятно. Спасибо за информацию!

Version history
Revision #:
1 of 1
Last update:
‎06-14-2011 02:28 AM
Updated by: