Установка OpenVZ на CentOS

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

Конечно можно пропатчить ядро самим, но для быстроты воспользуемся официальным репозитарием OpenVZ - устанавливаем репозитарий, а затем ядро заточеное под виртуалки:

cd /etc/yum.repos.d
wget http://download.openvz.org/openvz.repo
yum install vzkernel -y

Теперь необходимо отредактировать файл /etc/sysctl.conf, для исправления или добавления требуемых параметров, если какие-либо строки отсутсвуют - смело их добавляйте. В случае CentOS необходимо исправить параметры:

net.ipv4.ip_forward = 1
kernel.sysrq = 1

и добавить следующие:

net.ipv4.conf.default.proxy_arp =  0
net.ipv4.conf.default.send_redirects = 1
net.ipv4.conf.all.send_redirects = 0

Обязательно проверьте, что отключен SELinux в файле /etc/sysconfig/selinux:

SELINUX=disabled

Далее нам необходимо поставить утилиты для работы с виртуальной машинкой: vzctl - утилита для управления OpenVZ VPS (create, destroy, start, stop, set parameters etc.) и vzquota - утилита для управления квотами для VPSs.

yum install vzctl vzquota -y

Перегружаем сервер и вуаля, система готова к созданию виртуалок. Для запуска гостевой системы, загружаем готовый образ системы с офсайта в каталог /vz/template/cache

Для задания доступных ресурсов для каждого сервера, я использую небольшой скрипт, который делит всю доступную мощность на заданное количество виртуальных серверов, причем ограничение по ресурсам мягкое, то есть: если имеются свободные ресурсы от других виртуальных серверов, то мы можем их занять до тех пор, пока они не потребуются по гарантийным параметрам этим виртуалкам. Сам скрипт принимает в качестве параметра количество необходимых нам виртуальных серверов, производит разбивку и заносит данные в конфиг вида ve-vps.VPSCOUNT-to-1.conf-sample, где VPSCOUNT - количество виртуальных серверов. Так же скрипт проверяет, что параметры конфигурационного файла верны, имеют соответствующие значение и не противоречат соседним. Вот собственно сам скрипт:

#!/bin/sh
 
if [ $1 ]; then
    VPSCOUNT=$1
    cd /etc/sysconfig/vz-scripts/
    vzsplit -n $VPSCOUNT -f vps.$VPSCOUNT-to-1
    vzcfgvalidate ve-vps.$VPSCOUNT-to-1.conf-sample
else
    echo Enter argument!
fi

А это пример его работы:

[root@ovz]# ./vz-split.sh 100
Config /etc/vz/conf/ve-vps.100-to-1.conf-sample was created
Validation completed: success