Установка и использование OpenVZ в Debian
Что такое OpenVZ
OpenVZ позволит Вам запустить еще один (или несколько) экземпляр Linux (в нашем случае Debian) на вашем хосте.
Установка в Debian
Для нормальной работы OpenVZ требуется ядро с vz-патчами. В Debian такие ядра имеют суффикс -openvz и для архитектуры i386 собраны с поддержкой памяти более 4 гигабайт. Установим ядро:
apt-get install linux-image-2.6.26-2-openvz-686
Все дальнейшие работы будем вести перезагрузившись в это ядро.
Дополнительно
Для работы с VZ необходимы:
утилита управления vzctl
утилита для создания образа системы debootstrap
- произвольный текстовый редактор
apt-get install vzctl debootstrap vim
Подготовка гостевой системы
Для начала выберите место, где будет находиться Ваша гостевая OS. В данном руководстве будем считать, что гостевая система будет расположена в каталоге /vz/guest. Создадим базовый образ гостевой системы:
mkdir /vz/guest
debootstrap lenny /vz/guestПримечание: Необходимо отметить, что создание образа гостевой системы в OpenVZ предполагается осуществлять при помощи скачивания и распаковки tgz-шаблона операционной системы. Однако в случае Debian совсем необязательно качать сотни мегабайт данных: в Debian имеется утилита debootstrap, которая прекрасно справляется с задачей создания минимальной системы.
Подготовка гостевой системы традиционным для VZ способом
Этот способ стоит применять, если Вы хотите в гостевой системе установить не Debian, а другую операционную систему. Для этого нужно скачать шаблон интересующей нас системы с сайта. Затем можно распаковать этот шаблон в каталог /vz/guest, либо положить шаблон в каталог /var/lib/vz/template/cache. Во втором случае, для того, чтобы создать гостевую систему необходимо выдать команду:
vzctl create 10 --ostemplate имя_шаблона --private /vz/guest
где, 10 - идентификатор создаваемой системы, имя_шаблона - имя скачанного шаблона, /vz/guest - путь куда будет установлена гостевая система (распакован шаблон). В случае создания системы из шаблона файл 10.conf в /etc/vz/conf будет создан автоматически.
Выбор идентификатора Вашей гостевой системы
OpenVZ различает гостевые системы по их номеру. Хороший способ задания номера гостевой системы -- последний октет её ip-адреса. К сожалению, сейчас не имеется общепринятого способа отображения номеров VZ в человекочитаемые имена. Утилита vzctl может назначать синонимы для номеров VZ и работать с ними. Однако некоторые из других утилит для VZ могут их не понимать.
Для задания имени-синонима гостю с номером 256 можно создать симлинк:
/etc/vz/names/guestname -> /etc/vz/conf/256.conf
либо использовать для этой цели vzctl:
vzctl set 256 --name guestname --save
В дальнейшем можно будет использовать вместо номера VZ его имя (для данного примера - guestname), но это уже после того как гость создан и номер ему назначен, а пока будем считать, что мы создаем гостя с номером 10.
Начало работы с гостем
Идем в каталог /etc/vz/conf и копируем файл-шаблон конфига ve-light.conf-sample в файл с именем 10.conf, где 10 - выбранный нами идентификатор системы. В этом файле мы исправим всего один параметр (вернее, добавим):
OSTEMPLATE="debian"
Это необходимо потому, что утилита vzctl, которой мы будем пользоваться далее, не умеет вносить изменения в это поле, а создание гостя из шаблона мы, по описанным выше причинам, пропустили.
Дальнейшее конфигурирование системы мы будем вести при помощи утилиты vzctl. Для того, чтобы изменить какой-то из параметров гостя, используется команда
vzctl set <номер гостя> --параметр значение --параметр значение --save
Открываем man vzctl и идем по параметрам сверху вниз, попутно собирая одну большую конфигурационную команду:
vzctl set 10 \
--onboot yes \
--private /vz/private \
--ipadd 1.2.3.4 \
--nameserver 4.3.2.1 \
--searchdomain mydomain.ru \
--numproc 100 \
--privvmpages 32768
--saveБольшинство параметров, указанных здесь, можно опустить, а некоторые из них -- указать прямо во время создания гостя (смотрите вывод vzctl --help). Единственный необходимый на данный момент параметр -- --private: с его помощью мы укажем vztcl, где искать файлы гостевой системы. Более подробно некоторые параметры будут рассмотрены ниже, а пока, выполнив вышеприведенную команду, мы можем уже запустить гостя:
vzctl start 10
Для того, чтобы остановить гостя, наберите
vzctl stop 10
Ну и самое интересное -- зайти в запущенного гостя рутом:
vzctl enter 10
На этом шаге Вы можете приступить к собственно конфигурированию гостя: установке сервера ssh, любимого редактора, шелла и т.п. Скорее всего, Вы сразу наткнетесь на ограничения, выставленные гостю по умолчанию, например "слишком маленький диск" или "слишком мало памяти", ниже мы рассмотрим (а выше мы частично уже рассмотрели), как изменять эти ограничения, добавлю лишь, что изнутри гостя всегда можно посмотреть, какие ограничения у Вас установлены:
cat /proc/user_beancounters
Эта команда работает и на хост-системе, выведя ограничения для всех гостей, а также максимальные значения параметров (контейнер с номером 0).
Перезапускать гостя после изменения каких-то из его параметров чаще всего необязательно, например, параметры, связанные с ограничениями памяти, дисковой квоты, количеством процессов и сетевые параметры этого не требуют. Если перезагрузка гостя всё-таки понадобилась, то сделать это можно с использованием той же утилиты:
vzctl restart 10
Параметры гостя
VZ позволяет устанавливать множество параметров для гостевой системы. На этом вики вы можете найти подробное описание параметров конфигурирования контейнеров, а вот некоторые из них:
Параметр |
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] |
Объем дискового пространства, выделенный гостю |
Необходимо отметить, что во многих случаях вместо просто числа можно писать два числа через двоеточие. Первое число будет означать "барьер" лимита параметра. А второе собственно лимит. При прохождении гостем "барьера" будет срабатывать счетчик, значение которого Вы можете посмотреть в файле /proc/user_beancounters в последней графе.
Многие параметры можно вводить несколько раз (с разными значениями), например, для добавления двух сетевых интерфейсов в гостя можно ввести два раза --netif_add с разными значениями.
Важно: Необходимо отметить, что некоторые параметры собственно гостевой системы нельзя или бессмысленно менять из гостевой системы. Это касается всех параметров, которые изменяются при помощи утилиты vzctl: при каждом новом старте гостя VZ изменяет его настройки на установленные в конфиг-файле этого гостя.
Вместо использования утилиты vzctl можно использовать традиционный способ правки конфигурационного файла. Каждый из параметров, изменяемых vzctl отображается в параметр вида
имя=значение
конфигурационного файла. Значения этих параметров можно посмотреть в man vz.conf и man vps.conf. После изменения произвольного параметра этим способом гостя необходимо перезапустить.
Оптимизации
Утилита debootstrap создает минимальный Debian для использования его в произвольном месте (не только в виртуальной системе), поэтому некоторые вещи во вновь созданной системе могут показаться Вам лишними. Например процессы getty явно не нужны в гостевой системе. Чтобы выключить их, откройте на редактирование файл /etc/inittab, найдите в нем строки, содержащие /sbin/getty и закоментируйте их. Затем выдайте внутри гостя команду telinit q, либо перезапустите гостя для уничтожения ненужных процессов.
Ссылки
На этом вики
