Организация OpenVZ на Debian Lenny 5.0.x

В предисловии хочу сказать – в этой статьей я бы хотел сделать для себя памятку по установке данной системы виртуализации. Мощная система, с возможностями по разграничению ресурсов компьютера между множеством виртуальных ОС семейства Linux (имеет много шаблонов).

Вот что Wiki говорит:

OpenVZ — это реализация технологии виртуализации на уровне операционной системы, которая базируется на ядре Linux. OpenVZ позволяет на одном физическом сервере запускать множество изолированных копий операционной системы, называемых Виртуальные Частные Серверы (Virtual Private Servers, VPS) или Виртуальные Среды (Virtual Environments, VE).

Поскольку OpenVZ базируется на ядре Linux, в отличие от виртуальных машин (напр. VMware) или паравиртуализационных технологий (напр. Xen), в роли «гостевых» систем могут выступать только дистрибутивы GNU/Linux. Однако, виртуализация на уровне операционной системы в OpenVZ даёт лучшую производительность, масштабируемость, плотность размещения, динамическое управление ресурсами, а также лёгкость в администрировании, чем у альтернативных решений. Согласно сайту OpenVZ, накладные расходы на виртуализацию очень малы, и падение производительности составляет всего 1-3 %, по сравнению с обычными Linux-системами.

OpenVZ состоит из модифицированного ядра Linux и пользовательских утилит.

ШАГ1. Подготовка “материнской системы”.

Для нормальной работы OpenVZ требуется ядро с vz-патчами. В Debian такие ядра имеют суффикс -openvz и для архитектуры i386 собраны с поддержкой памяти более 4 гигабайт.

Добавляем в /etc/apt/sources.list репозиторий с OpenVZ:

echo "deb http://download.openvz.org/debian-systs etch openvz" >> /etc/apt/source.list

Далее:

wget -q http://download.openvz.org/debian-systs/dso_archiv_signing_key.asc -O- | apt-key add -
apt-get update

Устанавливаем ядро с поддержкой OpenVZ:

aptitude install linux-image-openvz-686

Все дальнейшие работы будем вести перезагрузившись в это ядро.

Устанавливаем дополнительное ПО, необходимое для работы с VZ:

aptitude install vzctl vzquota vzprocps vzdump

ШАГ2. Подготовка гостевой системы.

Для этого надо скачать отсюда образ интересующей системы и положить шаблон в каталог /var/lib/vz/template/cache. Чтобы создать гостевую систему необходимо выдать команду:

vzctl create 10 --ostemplate имя_шаблона --private /home/ovz/guestos/test

где, 10 – идентификатор создаваемой системы, имя_шаблона – имя скачанного шаблона, /home/ovz/guestos/test – путь куда будет установлена гостевая система (распакован шаблон). В случае создания системы из шаблона файл 10.conf в /etc/vz/conf будет создан автоматически.

Дальнейшее конфигурирование системы мы будем вести при помощи утилиты vzctl. Для того, чтобы изменить какой-то из параметров гостя, используется команда:

vzctl set <идентификатор гостя> --параметр значение --параметр значение --save

Настроим некоторые параметры, необходимые для запуска гостевой ОС.

1) Включаем автоматический запуск созданного VPS на стадии загрузки системы:

vzctl set 10 --onboot yes --save

2) Открываем man vzctl и идем по параметрам сверху вниз, попутно собирая одну большую конфигурационную команду:

vzctl set 10 \
--ipadd   1.2.3.4 \
--nameserver 4.3.2.1 \
--numproc 100 \
--cpus 1 \
--cpulimit 100% \
--save

Определяем объем памяти, который будет выделен контейнеру (например, 256Mb гарантированно и 512Mb максимально):

vzctl set 10 --vmguarpages $((256*256)) --privvmpages $((256*512)) --save
  • –vmguarpages – гарантированный объем памяти * 256
  • –privvmpages – максимальный объем памяти * 256

Более подробно некоторые параметры будут рассмотрены ниже, а пока, выполнив вышеприведенную команду, мы можем уже запустить гостя:

vzctl start 10

Для того чтобы гостя остановить:

vzctl stop 10

Зайти в гостевую ОС:

vzctl enter 10

Изнутри гостя всегда можно посмотреть, какие ограничения для него установлены:

cat /proc/user_beancounters

Перезапускать гостя после изменения каких-то из его параметров чаще всего необязательно, например, параметры, связанные с ограничениями памяти, дисковой квоты, количеством процессов и сетевые параметры этого не требуют. Если перезагрузка гостя всё-таки понадобилась, то сделать это можно с использованием той же утилиты:

vzctl restart 10

Параметры, применяемые для гостевой ОС:

Параметр vps.conf Значение Описание
Общие и сетевые параметры
–name NAME слово Задает имя гостевой системе, которое можно использовать вместо числового идентификатора
–private VE_PRIVATE путь Путь к расположению гостя в файловой системе
–root VE_ROOT путь Путь отображения файловой системы гостя при старте
–onboot ONBOOT yes/no Запускать ли гостя при загрузке системы
–ipadd IP_ADDRESS IP Добавить IP адрес к гостевой системе
–ipdel IP_ADDRESS IP Удалить IP адрес из гостевой системы
–hostname HOSTNAME имя Установить hostname гостевой системе
–nameserver NAMESERVER IP Установить используемый DNS-сервер гостевой системе
–searchdomain SEARCHDOMAIN домен Установить домен поиска гостевой системе
–netif_add интерфейс,параметры установить сетевой интерфейс в гостевой системе
–netif_del интерфейс удалить сетевой интерфейс из гостевой системы
–netdev_add интерфейс передать гостевой системе интерфейс из хостовой системы
–netdev_del интерфейс удалить из гостевой системы интерфейс
Лимиты
–numproc NUMPROC число Число одновременно запущенных процессов
–numtcpsock NUMTCPSOCK число Число TCP-сокетов
–numothersock NUMOTHERSOCK число Число не-TCP-сокетов
–privvmpages PRIVVMPAGES страниц Количество 4096-байтных блоков памяти выделенных гостю
–numfile NUMFILE число Количество одновременно открытых файлов
–numflock NUMFLOCK число Количество возможных файловых блокировок
–cpus CPUS число Количество CPU делегируемых гостю
–cpulimit CPULIMIT число% Максимальная загрузка CPU гостем
–diskspace DISKSPACE число[GMK] Объем дискового пространства, выделенный гостю

Подробное описание конфигурируемых параметров можно найти здесь.

И в заключении нужно обязательно упомянуть, что для работы сети в гостевых ОС, нужно добавить следующие параметры в файл /etc/sysctl.conf на материнской системе:

net.ipv4.conf.default.forwarding=1
net.ipv4.conf.default.proxy_arp = 0
net.ipv4.ip_forward=1
net.ipv4.conf.all.rp_filter = 1
kernel.sysrq = 1
net.ipv4.conf.default.send_redirects = 1
net.ipv4.conf.all.send_redirects = 0

И применить:

sysctl -p

Ну вот и все. Теперь можно прокачивать систему:)

Add Comment

Required fields are marked *. Your email address will not be published.