В практической эксплуатации гипервизора Proxmox мы столкнулись с ограничением производительности аппаратного ресурса, вызванного постоянным ростом количества пользователей и предоставляемых сервисов (виртуальных машин). Балансировка IOPS методом дросселирования применена, но ее возможности тоже уже исчерпаны.
Для начала несколько терминов чтобы было понятно.
IOPS — это input/output operations per second, числа операций ввода/ вывода в систему хранения в секунду.
Система хранения является подсистемой системы виртуализации Proxmox для одновременного доступа к ним множества устройств или узлов кластера. Вообще говоря, совместное используемое хранилище не является чем-то абсолютно необходимым, однако все прелесть Proxmox конечно же появляются при его использовании.
Одна из важнейших причин для перехода на совместно используемые системы хранения — миграция в реальном времени (Live migration). Т.е. некая виртуальная машина может перемещаться на другой узел без её предварительного останова.
Вторая важная причина — пространство хранения может расти по запросу без отключения или прерывания работы критически важных узлов или виртуальных машин.
Третья причина — многоуровневость данных. Различные файлы могут содержаться в различных пулах хранения на основе их требований к производительности (допустим, виртуальный файловый сервер может предоставлять очень быстрое обслуживание если его ВМ содержатся в некотором пуле на SSD).
Proxmox имеет исключительные встраиваемые модули для вариантов хранилищ из основных направлений развития. В нашем случае использовался LVM. Мы вывели часть физических дисков из RAID и собрали на них новый деградированный RAID средствами ZFS. После этого, не останавливая виртуальные машины, перенесли их в новое ZFS-хранилище. Освободившийся RAID размонтировали, а физические диски добавили в новый RAID.
Таким образом, дисковая подсистема была перемонтирована полностью, без останова виртуальных машин и пользовательских сервисов. В результате был получен более чем двойной прирост производительности.