Часто возникает необходимость разнесения различных сервисов по разным физическим серверам. Но что делать если физический сервер один? Выход есть — виртуализация. В этой статье я расскажу о технологии виртуализации , которая базируется на ядре Linux. Рассматривать будем на дистрибутиве Debian, т.к. недавно OpenVZ патч был включен в репозиторий etch. Будем считать, что ОС у нас уже установлена.
P.S.: Сильно не пинайте, это моя первая статья на Хабре.
Итак,
Сборка и установка ядра
Для начала установим исходники ядра и патч:
Также нам понадобятся утилиты для работы и управления виртуальными машинами:
Распакуем ядро:
Скопируем конфиг:
Исправим в конфиге параметр CONFIG_SECURITY он должен быть установлен в n. Вот так:
CONFIG_SECURITY=n
Установим пакет kernel-package, он нам поможет собрать пакет с пропатченным ядром:
Соберем и установим новое ядро:
Редактируем /boot/grub/menu.lst так, чтобы у нас грузилось новое ядро. Перезагружаемся.
Если вы все сделали верно, то после перезагрузки у вас появится новый сетевой интерфейс venet.
Для начала поменяем параметры ядра:
Далее нам понадобится хотя бы один шаблон ОС(шаблоны вы найдете на сайте OpenVZ).
Непосредственно создаем новую машину с VEID 101:
Заходим внутрь:
Проверяем, все ли работает, и наслаждаемся:)
Конфигурационные файлы находятся в /etc/vz/
команда vzctl start — запускает виртуальную машину.
команда vzctl stop — останавливает виртуальную машину.
команда vzctl restart — перезапускает виртуальную машину.
cat /proc/user_beancounters покажет используемые ресурсы и покажет их нехватку.
vzlist покажет запущенные виртуальные машины
vzlist -a покажет все сконфигурированые виртуальные машины
vzpid $PID По pid процесса покажет VEID в которой запущен процесс.
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 в которой запущен процесс.