OpenVZ · 2 min read · Jan 04, 2026
Равномерное распределение ресурсов между OpenVZ VMs с помощью vzsplit
Равномерное распределение ресурсов между OpenVZ VMs с помощью vzsplit
Версия 1.0
Автор: Фалько Тимме
Этот краткий гид показывает, как вы можете равномерно распределить ресурсы вашего хоста OpenVZ между несколькими виртуальными машинами с помощью vzsplit. vzsplit генерирует файл конфигурации контейнера с определенным набором параметров управления системными ресурсами, которые вы затем можете применить к вашим виртуальным машинам.
Я не даю никаких гарантий, что это сработает для вас!
Использование vzsplit
Посмотрите на
man vzsplitчтобы узнать больше о его использовании.
Теперь предположим, что мы хотим запустить 5 виртуальных машин на хосте OpenVZ. Мы вызываем vzsplit следующим образом:
vzsplit -n 5 -f max-limits-n 5 указывает количество виртуальных машин.
server1:~# vzsplit -n 5 -f max-limits
Оптимальный размер пространства подкачки составляет 2022 Мб, в два раза больше размера ОЗУПРЕДУПРЕЖДЕНИЕ: Рекомендуемый минимальный размер раздела, содержащего /var/lib/vz/private/, составляет 20 Гб!
Конфигурация /etc/vz/conf/ve-max-limits.conf-sample была создана
server1:~#Как вы видите, был создан файл /etc/vz/conf/ve-max-limits.conf-sample, который содержит максимальные значения параметров конфигурации для каждой из 5 виртуальных машин. Посмотрите на этот файл:
vi /etc/vz/conf/ve-max-limits.conf-sample| # Файл конфигурации, сгенерированный vzsplit для 5 контейнеров # на HN с общим объемом физической памяти 1011 Мб # низкая память 883 Мб, размер подкачки 2047 Мб, Максимальные потоки 8000 # Уровень обязательства ресурсов 0: # Свободное распределение ресурсов. Любые параметры могут быть увеличены # Основные параметры NUMPROC="1600:1600" AVNUMPROC="452:452" NUMTCPSOCK="1600:1600" NUMOTHERSOCK="1600:1600" VMGUARPAGES="135985:2147483647" # Вторичные параметры KMEMSIZE="37052743:40758017" TCPSNDBUF="5797314:12350914" TCPRCVBUF="5797314:12350914" OTHERSOCKBUF="2898657:9452257" DGRAMRCVBUF="2898657:2898657" OOMGUARPAGES="135985:2147483647" PRIVVMPAGES="155342:170876" # Вспомогательные параметры LOCKEDPAGES="1809:1809" SHMPAGES="15534:15534" PHYSPAGES="0:2147483647" NUMFILE="14464:14464" NUMFLOCK="1000:1100" NUMPTY="160:160" NUMSIGINFO="1024:1024" DCACHESIZE="8088605:8331264" NUMIPTENT="200:200" DISKSPACE="117286:129015" DISKINODES="110065:121072" CPUUNITS="8587" |
Как вы видите, этот файл не содержит специфичных для ВМ настроек, таких как имя хоста, IP-адрес, серверы имен и т.д., что имеет смысл, потому что мы не хотим перезаписывать эти настройки.
Теперь предположим, что мы хотим применить эти настройки к нашей ВМ с ID 101. Вот как мы это делаем:
vzctl set 101 --applyconfig max-limits --saveПосле этого вы можете запустить/перезапустить ВМ 101:
vzctl start 101Вы можете увидеть что-то вроде этого:
server1:~# vzctl start 101
Запуск контейнера ...
vzquota : (предупреждение) block_hard_limit [129115] < block_current_usage [139856]
Контейнер смонтирован
Добавление IP-адреса(ов): 192.168.0.101
bash: строка 402: printf: ошибка записи: Превышен лимит дискового квоты
bash: строка 416: printf: ошибка записи: Превышен лимит дискового квоты
bash: строка 421: echo: ошибка записи: Превышен лимит дискового квоты
bash: строка 447: printf: ошибка записи: Превышен лимит дискового квоты
Установка единиц ЦП: 8587
Настройка meminfo: 155342
Установка имени хоста: test.example.com
awk: ошибка закрытия файла /dev/stdout (Превышен лимит дискового квоты)
ОШИБКА: Невозможно изменить файл /etc/hosts
vzquota : (предупреждение) block_hard_limit [129015] < block_current_usage [139856]
Запуск контейнера в процессе...
server1:~#По какой-то причине vzsplit рассчитала неправильный размер диска. Вы можете исправить это следующим образом (это установит размер диска с мягким лимитом 10 ГБ и жестким лимитом 11 ГБ - отрегулируйте это по вашим потребностям):
vzctl set 101 --diskspace "10000000:11000000" --saveЗатем перезапустите ВМ:
vzctl restart 101Вы можете посмотреть новые настройки для ВМ следующим образом:
vzctl exec 101 cat /proc/user_beancountersserver1:/etc/vz/conf# vzctl exec 101 cat /proc/user_beancounters
Версия: 2.5
uid ресурс занято максимум барьер лимит failcnt
101: kmemsize 340278 580635 37052743 40758017 0
lockedpages 0 0 1809 1809 0
privvmpages 796 1655 155342 170876 0
shmpages 0 0 15534 15534 0
dummy 0 0 0 0 0
numproc 5 9 1600 1600 0
physpages 486 1060 0 2147483647 0
vmguarpages 0 0 135985 2147483647 0
oomguarpages 486 1060 135985 2147483647 0
numtcpsock 1 2 1600 1600 0
numflock 1 2 1000 1100 0
numpty 0 1 160 160 0
numsiginfo 0 2 1024 1024 0
tcpsndbuf 8928 0 5797314 12350914 0
tcprcvbuf 16384 0 5797314 12350914 0
othersockbuf 2232 3624 2898657 9452257 0
dgramrcvbuf 0 0 2898657 2898657 0
numothersock 1 3 1600 1600 0
dcachesize 0 0 8088605 8331264 0
numfile 129 193 14464 14464 0
dummy 0 0 0 0 0
dummy 0 0 0 0 0
dummy 0 0 0 0 0
numiptent 10 10 200 200 0
server1:/etc/vz/conf#Столбец failcnt очень важен, он должен содержать только нули; если это не так, это означает, что ВМ нуждается в большем количестве ресурсов, чем в настоящее время выделено ВМ.
Чтобы узнать о памяти, выделенной ВМ, выполните
vzctl exec 101 freeserver1:~# vzctl exec 101 free
всего использовано свободно общий буферы кэш
Mem: 621368 3268 618100 0 0 0
-/+ буферы/кэш: 3268 618100
Swap: 0 0 0
server1:~#Ссылки
- OpenVZ: http://openvz.org
Get new posts in your inbox
No spam. Unsubscribe anytime.