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