Open VZ — технология «лёгкой» виртуализации, позволяющая на одной аппаратной системе держать несколько различных корней Linux с одним ядром (поддерживающим ovz и содержащимся, как правило, на небольшом корне с ограниченным доступом по ssh и без других сервисов). В отличие от «тяжёлых» вариантов вроде Xen, Qemu или VMware, накладные расходы обычно составляют единицы процентов.
NB: текущий сизиф весной 2007 плавно превращается в выпуск 4.0 со штатной поддержкой ovz.
В настоящий момент в репозитарии есть практически все компоненты для полноценной работы. Но на данный момент openvz не поддерживает систему управления пакетами apt, поэтому мы не можем воспользоваться утилитой vzpkg.
При этом установятся ядро с поддержкой openvz и необходимые утилиты, поэтому необходимо перегрузить компьютер и при загрузке выбрать ядро -ovz.
Если предполагается более-менее равномерное разделение HN между несколькими VE (или примерно можно означить ограничения как «1/10», «1/4»), то рекомендуется использовать vzsplit для создания заготовок конфигурации (не самих серверов! — получается меташаблон такой).
Заготовки окажутся в /etc/vz/conf/ve-ИМЯ.conf-sample и пригодны для использования в vzctl create $VEID --config ИМЯ. Имейте в виду, что штатный vps.basic весьма ограничен, а light — скорее непригоден к использованию.
(Адаптировано для spt-0.6.0-alt7)
Необходимо создать шаблон, который будет использоваться для создания виртуального сервера. На сайте находится много шаблонов. Для ALT шаблоны см. в contrib, altlinux-2.4.tar.gz и altlinux-3.0.tar.gz. Шаблон представляет собой запакованый в архив корневой раздел. Поэтому для создания шаблона можно использовать spt или hasher. Я воспользовался spt?, так как он содержит уже готовый профиль для ovz.
Устанавливаем spt:
На этом этапе необходимо получить работоспособный hasher. И лучший способ — это воспользоваться инструкцией: /usr/share/doc/hasher-1.*/QUICKSTART
Для правильной работы vzctl необходимо, чтобы в /dev находились следующие устройства: /dev/ptmx, /dev/tty и был смонтирован /dev/pts/. Для их создания требуется наличие параметра allow_ttydev=YES в /etc/hasher-priv/* (см. hasher-priv.conf(8), http://lists.altlinux.org/pipermail/devel/2006-July/034431.html)
Затем необходимо создать профиль, по которому spt будет строить шаблон. Возможно использовать готовый профиль. Готовые профили находятся в пакетах spt-profile-* или c самим spt в директории /usr/share/spt/profile-*. Одну из этих директорий можно указать при создании шаблона с опцией -p при запуске spt.
Далее создаем рабочий каталог:
Если не подходя готовые профили, то тогда нужно создать свой. Для этого копируем готовый профиль в ~/ovz/profile.
Можно поменять имя создаваемого образа в ~/ovz/profile/config. Заменим значение в OUT на altlinux-4.0.tar.gz .
Так же можно дополнить список пакетов — ~/ovz/profile/ovz/packages — например, добавить openssh-server и vim-console. В ovz-контейнер нет необходимости ставить пакет interactivesystem.
Минимальный список пакетов:
Или вместо попакетного списка можно указать один виртуальный пакет из:
Теперь необходимо создать сам образ:
Внимание: создание образов на i586-машине для архитектуры x86_64 не работает.
Если все прошло хорошо, то в ~/ovz/ будет находится файл altlinux-4.0.tar.gz. Его необходимо скопировать в /var/lib/vz/template/cache. Не забудьте поменять владельца и группу.
Внимание: ещё один момент, где лучше заранее почитать документацию, чем потом сожалеть: в PDF рекомендуется выдавать VEID'ы сообразно IP (например, для xxx.xxx.7.123 — 7123 или для 10.0.1.254 — #1254##). Это более удобно с точки зрения администрирования как мнемонически, так и при необходимости переноса контейнеров между физическими хостами — если везде есть VEID 101, перенос будет сильно затруднён (на forum.openvz.org в соответствующей теме встретился вариант решения — свернуть одноразовый template cache из переносимого VE (например с помощью vzdump) и создать на новом месте из этого темплейта; штатный способ изменения VEID мне на сейчас неизвестен). При создании из такого темплейта можно указать использовать старый конфиг и все работает хорошо.
Теперь мы можем создать сервер из шаблона.
Имя, которое Вы дали вашему шаблону (то что следует за
ostemplate), имеет важное значение. При создании VE это имя заносится в конфигурационный файл в переменную OSTEMPLATE. По этой переменной vzctl определяет какие скрипты использовать (разным OS нужны разные скрипты). Если вы используете ALT, то оно обязательно должно начинаться с altlinux (определяет нюансы настройки). Дальше разбор имени идет по такому алгоритму:
Начиная с версии 3.0.11, vzctl поддерживает именование виртуальных серверов. Это удобно, когда у вас их много, ибо помнить, что proxy это 103 — не очень удобно.
Теперь в командах vzctl вместо 101 можно использовать vps101.
Конфигурация включает такие пункты:
Установка имени сервера:
Установка nameserver:
Установка searchdomain:
В Open VZ в VE возможно настраивать 3 типа соединений:
1. venet
2. veth
3. Просто «пробросить» внутрь физический ethernet интерфейс. См. параметры netdev_add name/netdev_del name для vzctl.
Различия между venet и veth описаны тут. Кратко можно сказать, что чаще всего вам потребуется venet. Но в некоторых случаях, для запуска таких приложений внутри VE, которые требуют для своей работы: MAC address, Broadcasts inside VE, Traffic sniffing, (например dhcpd, samba) или вам нужен IPv6 – необходимо создавать veth. Также veth можно использовать в некоторых сложных случаях. Во всех остальных случаях (например, сложный роутинг или несколько ethx устройств с разными маршрутами/коммутацией, или когда нужно именно физическое ethernet устройство внутри VE), необходимо использовать netdev.
# modprobe vzethdev# vzctl set 101 --veth_add veth101.0,00:12:34:56:78:9A,eth0,00:12:34:56:78:9B --save/sbin/ifconfig eth0 0
/sbin/ip addr add 10.10.186.1 dev eth0
/sbin/ip route add default dev eth0# vzctl start 101$ /sbin/ip a
1: lo: <LOOPBACK,UP> mtu 16436 qdisc noqueue
3: venet0: <BROADCAST,POINTOPOINT,NOARP,UP> mtu 1500 qdisc noqueue
5: eth0: <BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue
191.255.255.0/24 dev venet0 scope host
default dev eth0 scope link
default via 191.255.255.1 dev venet0# echo 1 > /proc/sys/net/ipv4/conf/veth101.0/forwarding
# echo 1 > /proc/sys/net/ipv4/conf/veth101.0/proxy_arpip addr add 10.10.186.1 dev veth101.0 ip addr add 0 dev veth101.0# ip route add 10.10.186.1 dev veth101.0# vzctl set 101 --userpasswd root:test
Saved parameters for VPS 101
# vzctl start 101
Starting VPS ...
VPS is mounted
Adding IP address(es): 10.0.186.101
Hostname for VPS 101 set: test.my.org
VPS start in progress...
# vzctl exec 101 service sshd status
sshd is stopped
# vzctl exec 101 service sshd start
Starting sshd: [ OK ]
# vzctl exec 101 service sshd status
sshd is running
# vzctl enter 101
# vzctl enter 101
enter into VE 101 failed
Unable to open pty: No such file or directory
devpts /dev/pts devpts gid=5,mode=620 0 0
# vzctl destroy 101
# vzctl set 101 --capability sys_time:on --save
vzctl set 101 --devnodes ttyS0:rw --save
(email)
Date: Wed, 9 Aug 2006 02:07:06 +0400
From: “Dmitry V. Levin” <ldv@>
To: ALT Linux sysadmin discuss <sysadmins@>
Subject: Re: [Sysadmins] vserver -> openvz migrate?
Мигрировать контейнеры с linux-vserver на openvz достаточно легко.
Я недавно делал такую миграцию для контейнеров, сделанных на основе M24.
Могу отметить 4 момента:
1. vserver'ная конфигурация контейнеров беднее, чем openvz'шная; имеет
смысл сперва установить достаточно большие лимиты, потом на основе опыта
эксплуатации уменьшить их до рабочего уровня.
2. Имя файла template cache должно соответствовать имени системы, на основе
которой сделан контейнер. Например, если контейнер сделан на основе
чего-то ALT'ового с net-scripts, то имя должно начинаться с “altlinux-2.4-»,
если на основе ALT'ового с etcnet, то с “altlinux-», для FC – с
“fedora-core-».
3. С удивлением обнаружил, что внутри vserver'ных контейнеров выключена
служба network. Не забудьте выполнить “chkconfig network on”.
4. В пакете vzctl-3.0.10-alt5 я добавил дополнительные правила
корректировки в /etc/vz/dists/scripts/postcreate.sh, которые выключают
запуск mingetty в inittab'е и лог в /dev/tty12 в syslog.conf.
Если вы захотите обойтись без vzctl create, то надо будет каким-то образом
выполнить этот /etc/vz/dists/scripts/postcreate.sh внутри контейнеров.
(email)
Date: Wed, 9 Aug 2006 13:10:39 +0400 (MSD)
From: “Konstantin A. Lepikhov” <lakostis@>
To: sysadmins@
Subject: Re: [Sysadmins] [wiki] Re: vserver -> openvz migrate?
агасчас. Это все легко, если используется старый vserver/vserver-utils,
не 2.0.x. В новых vserver введен внешний package management, поэтому
сначала придется в vserver поставить apt/rpm, потом скопировать базы
rpm/apt из /vservers/.pkg/ внутрь vserver (кажется, там были грабли, т.к.
vrpm использует db3 вместо db4). И лишь только когда это все сделано,
можно создавать cache для ovz.
Или наоборот, создать template cache, создать тз него ovz-контейнер,
скопировать туда базу данных rpm и поставить туда apt/rpm.
—
ldv
# for i in `vzlist -a -H -o veid`; do echo «VPS $i»; vzctl exec $i <command>; done
rm -f /etc/mtab && ln -s /proc/mounts /etc/mtab
watch grep -v ' 0$' /proc/user_beancounters
vi /etc/rpm/macros
apt-get -y reinstall `rpm -qf --queryformat '%{NAME}\n' /usr/share/locale/ru/LC_MESSAGES/* | sort -u`
%%