Configuring Linux
July 2008 28

Виртуализация Linux с помощью OpenVZ

Часто возникает необходимость разнесения различных сервисов по разным физическим серверам. Но что делать если физический сервер один? Выход есть — виртуализация. В этой статье я расскажу о технологии виртуализации , которая базируется на ядре Linux. Рассматривать будем на дистрибутиве Debian, т.к. недавно OpenVZ патч был включен в репозиторий etch. Будем считать, что ОС у нас уже установлена.

P.S.: Сильно не пинайте, это моя первая статья на Хабре.

Итак,

Сборка и установка ядра


Для начала установим исходники ядра и патч:
aptitude update
aptitude install kernel-patch-openvz
aptitude install linux-source-2.6.18


Также нам понадобятся утилиты для работы и управления виртуальными машинами:
aptitude install vzctl vzquota


Распакуем ядро:
cd /usr/src
tar xjvf linux-source-2.6.18.tar.bz2
cd linux-source-2.6.18


Скопируем конфиг:
cp /boot/config-2.6.18-4-686 .config


Исправим в конфиге параметр CONFIG_SECURITY он должен быть установлен в n. Вот так:

CONFIG_SECURITY=n

Установим пакет kernel-package, он нам поможет собрать пакет с пропатченным ядром:
aptitude install kernel-package


Соберем и установим новое ядро:

make-kpkg --append_to_version=-1-openvz --added_patches=openvz --revision=1 kernel_image
cd…
dpkg -i linux-image-2.6.18-1-openvz_1_i386.deb
update-initramfs -c -k 2.6.18-1-openvz
update-grub


Редактируем /boot/grub/menu.lst так, чтобы у нас грузилось новое ядро. Перезагружаемся.

Если вы все сделали верно, то после перезагрузки у вас появится новый сетевой интерфейс venet.

Создание виртуальных машин.



Для начала поменяем параметры ядра:
sysctl -w net.ipv4.conf.eth0.proxy_arp=1
sysctl -w net.ipv4.ip_forward = 1


Далее нам понадобится хотя бы один шаблон ОС(шаблоны вы найдете на сайте OpenVZ).

cd /var/lib/vz/template/cache
wget download.openvz.org/template/precreated/debian-4.0-i386-minimal.tar.gz


Непосредственно создаем новую машину с VEID 101:
vzctl create 101 --ostemplate debian-4.0-minimal --config vps.basic
vzctl set 101 --onboot yes --save
vzctl set 101 --hostname hostname1.example.com --save
vzctl set 101 --ipadd 192.168.5.1 --save
vzctl set 101 --numothersock 120 --save
vzctl set 101 --nameserver 192.168.0.1 --save
vzctl set 101 --privvmpages 500000:750000 --save
vzctl start 101
vzctl exec 101 passwd


Заходим внутрь:

vzctl enter 101


Проверяем, все ли работает, и наслаждаемся:)

Прочие полезности:



Конфигурационные файлы находятся в /etc/vz/
команда vzctl start — запускает виртуальную машину.
команда vzctl stop — останавливает виртуальную машину.
команда vzctl restart — перезапускает виртуальную машину.

cat /proc/user_beancounters покажет используемые ресурсы и покажет их нехватку.

vzlist покажет запущенные виртуальные машины
vzlist -a покажет все сконфигурированые виртуальные машины
vzpid $PID По pid процесса покажет VEID в которой запущен процесс.


+1
9.9k 30
Comments 7
Top of the day