Установка OpenVZ · 6 min read · Nov 25, 2025
Установка и использование OpenVZ на Ubuntu 13.04 (AMD64)
Установка и использование OpenVZ на Ubuntu 13.04 (AMD64)
Версия 1.0
Автор: Фалко Тимме
Следите за мной в Twitter
В этом руководстве я опишу, как подготовить сервер Ubuntu 13.04 для OpenVZ. С помощью OpenVZ вы можете создать несколько виртуальных частных серверов (VPS) на одном оборудовании, аналогично Xen и проекту Linux Vserver. OpenVZ — это открытая версия Virtuozzo, коммерческого решения для виртуализации, используемого многими провайдерами, предлагающими виртуальные серверы. Патч ядра OpenVZ лицензирован под лицензией GPL, а инструменты уровня пользователя — под лицензией QPL.
Это руководство предназначено как практическое руководство; оно не охватывает теоретические основы. Они рассматриваются во многих других документах в сети.
Этот документ предоставляется без каких-либо гарантий! Я хочу сказать, что это не единственный способ настройки такой системы. Существует множество способов достижения этой цели, но это тот путь, который я выбираю. Я не даю никаких гарантий, что это сработает для вас!
1 Предварительная заметка
Я использую систему x86_64 (amd64). Если у вас система i386, несколько команд будут немного отличаться.
2 Установка OpenVZ
Для Ubuntu 13.04 в официальных репозиториях нет ядра OpenVZ. Поэтому мы должны установить OpenVZ из официальных RPM-пакетов проекта OpenVZ (см. Установить ядро из RPM на Debian 6.0) - с поддержкой ploop.
2.1 Установка из официальных RPM-пакетов проекта OpenVZ
Скачайте последние RPM-пакеты vzkernel, vzctl, ploop и vzquota с http://wiki.openvz.org/Download/kernel/rhel6 и http://wiki.openvz.org/Download/utils, например, следующим образом:
cd /tmp
wget http://download.openvz.org/kernel/branches/rhel6-2.6.32/042stab076.8/vzkernel-2.6.32-042stab076.8.x86_64.rpm
wget http://download.openvz.org/kernel/branches/rhel6-2.6.32/042stab076.8/vzkernel-devel-2.6.32-042stab076.8.x86_64.rpm
wget http://download.openvz.org/utils/vzctl/4.3.1/vzctl-4.3.1-1.x86_64.rpm
wget http://download.openvz.org/utils/vzctl/4.3.1/vzctl-core-4.3.1-1.x86_64.rpm
wget http://download.openvz.org/utils/ploop/1.7/ploop-1.7-1.x86_64.rpm
wget http://download.openvz.org/utils/ploop/1.7/ploop-lib-1.7-1.x86_64.rpm
wget http://download.openvz.org/utils/vzquota/3.1/vzquota-3.1-1.x86_64.rpmУстановите следующие пакеты…
apt-get install fakeroot alien libcgroup1… и конвертируйте RPM-пакеты в DEB-пакеты:
fakeroot alien --to-deb --scripts --keep-version vz*.rpm ploop*.rpmУстановите DEB-пакеты следующим образом:
dpkg -i vz*.deb ploop*.deb Далее мы должны убедиться, что загружается правильное ядро (ядро OpenVZ) при перезагрузке системы. В выводе последней команды вы должны увидеть что-то вроде этого:
Настройка vzkernel (2.6.32-042stab076.8) …
update-initramfs: Генерация /boot/initrd.img-2.6.32-042stab076.8
WARNING: не удалось открыть /lib/modules/2.6.32-042stab076.8/modules.builtin: Нет такого файла или каталога
WARNING: не удалось открыть /tmp/mkinitramfs_I0VIfE/lib/modules/2.6.32-042stab076.8/modules.builtin: Нет такого файла или каталога
Генерация grub.cfg …
Найдено изображение linux: /boot/vmlinuz-3.8.0-19-generic
Найдено изображение initrd: /boot/initrd.img-3.8.0-19-generic
Найдено изображение linux: /boot/vmlinuz-2.6.32-042stab076.8
Найдено изображение initrd: /boot/initrd.img-2.6.32-042stab076.8
Найдено изображение memtest86+: /memtest86+.bin
готово
Это означает, что на системе также есть другое ядро (3.8.0), и ядро openVZ (2.6.32) не является первым в списке. Поэтому, чтобы сделать ядро OpenVZ ядром по умолчанию, у нас есть два варианта - настроить ядро по умолчанию в GRUB (рекомендуется) или удалить не-VZ ядро(я).
Чтобы настроить ядро по умолчанию в GRUB, откройте /etc/default/grub…
vi /etc/default/grub… и измените строку GRUB_DEFAULT (нумерация начинается с 0; наше OpenVZ - третье ядро в подменю Расширенные параметры для GRUB Ubuntu (что является вторым вариантом в меню загрузки после ядра 3.8.0), поэтому нам нужно поставить “1>2” здесь (в кавычках) - вы можете узнать больше о подменю GRUB здесь: https://help.ubuntu.com/community/Grub2/Submenus):
| [...] GRUB_DEFAULT="1>2" [...] |
Обновите GRUB после этого:
update-grubЧтобы удалить ядро по умолчанию, выполните…
apt-get remove linux-image linux-image-3.8.0-19-generic… и обновите GRUB:
update-grubТеперь, когда мы убедились, что правильное ядро загрузится, мы можем продолжить.
Далее мы должны проверить, что мы используем UUID вместо имен устройств в /etc/fstab, потому что в противном случае система может не загрузиться с ядром openVZ. Выполните…
blkid… чтобы узнать UUID ваших устройств/разделов:
root@server1:/tmp# blkid
/dev/sda1: UUID=”9b8299f1-b2a2-4231-9ba1-4540fad76b0f” TYPE=”ext2”
/dev/sda5: UUID=”M83xtW-GofR-FFaa-myo1-T4Gw-grKe-Kg1Etc” TYPE=”LVM2_member”
/dev/mapper/server1–vg-root: UUID=”a5a6e916-64e1-4af9-8bd4-32491d7edcac” TYPE=”ext4”
/dev/mapper/server1–vg-swap_1: UUID=”a68ae8a2-c2cd-4e92-af08-a71661f8f719” TYPE=”swap”
root@server1:/tmp#
Откройте /etc/fstab:
vi /etc/fstabМой оригинальный /etc/fstab выглядит следующим образом (как вы видите, UUID раздела /boot уже используется, но для / и swap используются имена устройств):
| # /etc/fstab: статическая информация о файловой системе. # # Используйте 'blkid', чтобы напечатать универсальный уникальный идентификатор для устройства; это может быть использовано с UUID= как более надежный способ именования устройств, который работает даже если диски добавляются и удаляются. См. fstab(5). # # <файловая система> <точка монтирования> <тип> <опции> <дамп> <передача> /dev/mapper/server1--vg-root / ext4 errors=remount-ro 0 1 # /boot был на /dev/sda1 во время установки UUID=9b8299f1-b2a2-4231-9ba1-4540fad76b0f /boot ext2 defaults 0 2 /dev/mapper/server1--vg-swap_1 none swap sw |
Измените его так, чтобы UUID использовались для всех разделов:
| # /etc/fstab: статическая информация о файловой системе. # # Используйте 'blkid', чтобы напечатать универсальный уникальный идентификатор для устройства; это может быть использовано с UUID= как более надежный способ именования устройств, который работает даже если диски добавляются и удаляются. См. fstab(5). # # <файловая система> <точка монтирования> <тип> <опции> <дамп> <передача> #/dev/mapper/server1--vg-root / ext4 errors=remount-ro 0 1 UUID=a5a6e916-64e1-4af9-8bd4-32491d7edcac / ext4 errors=remount-ro 0 1 # /boot был на /dev/sda1 во время установки UUID=9b8299f1-b2a2-4231-9ba1-4540fad76b0f /boot ext2 defaults 0 2 #/dev/mapper/server1--vg-swap_1 none swap sw 0 0 UUID=a68ae8a2-c2cd-4e92-af08-a71661f8f719 none swap sw 0 0 |
Убедитесь, что OpenVZ запускается автоматически при загрузке:
update-rc.d vz defaults
update-rc.d vzeventd defaultsДалее нам нужно связать несколько библиотек:
ln -s /usr/lib64/libvzctl-4.3.1.so /usr/lib
ln -s /usr/lib64/libploop.so /usr/libЕсли вы хотите использовать контейнеры ploop, сделайте это:
apt-get install partedТакже откройте /etc/init.d/vz…
vi /etc/init.d/vz… и добавьте строку mkdir $VARLOCK/ploop, чтобы убедиться, что каталог /var/lock/ploop будет воссоздан после перезагрузки:
| #!/bin/sh # Авторские права (C) 2000-2009, Parallels, Inc. Все права защищены. # # Эта программа является свободным программным обеспечением; вы можете перераспределять и/или изменять ее # в соответствии с условиями GNU General Public License, опубликованной Фондом свободного программного обеспечения; либо версии 2 Лицензии, либо # (по вашему выбору) любой более поздней версии. # # Эта программа распространяется в надежде, что она будет полезной, # но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ; даже без подразумеваемой гарантии # ТОРГОВОЙ ПРИГОДНОСТИ или ПРИГОДНОСТИ ДЛЯ ОПРЕДЕЛЕННЫХ ЦЕЛЕЙ. См. # GNU General Public License для получения более подробной информации. # # Вы должны были получить копию GNU General Public License # вместе с этой программой; если нет, напишите в Фонд свободного программного обеспечения, # Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # # Скрипт запуска OpenVZ, используемый для дистрибутивов, связанных с redhat и debian. ### # chkconfig: 2345 96 20 # описание: Скрипт запуска OpenVZ. ### ### BEGIN INIT INFO # Предоставляет: vz # Требуется для запуска: $network $remote_fs $syslog # Требуется для остановки: $network $remote_fs $syslog # Должен запускаться: sshd vzeventd # Должен останавливаться: sshd vzeventd # По умолчанию запускается: 2 3 4 5 # По умолчанию останавливается: 0 1 6 # Краткое описание: Скрипт запуска OpenVZ # Описание: Скрипт запуска OpenVZ. ### END INIT INFO # Эта строка необходима для обмана /etc/init.d/rc, который ожидает слово действия . /usr/libexec/vzctl/scripts/initd-functions mkdir $VARLOCK/ploop [...] |
Создайте символическую ссылку из /vz в /var/lib/vz для обеспечения обратной совместимости:
ln -s /vz /var/lib/vzОткройте /etc/sysctl.conf и убедитесь, что у вас есть следующие настройки:
vi /etc/sysctl.conf| [...] net.ipv4.conf.all.rp_filter=1 net.ipv4.icmp_echo_ignore_broadcasts=1 net.ipv4.conf.default.forwarding=1 net.ipv4.conf.default.proxy_arp = 0 net.ipv4.ip_forward=1 kernel.sysrq = 1 net.ipv4.conf.default.send_redirects = 1 net.ipv4.conf.all.send_redirects = 0 net.ipv4.conf.eth0.proxy_arp=1 [...] |
Если вам нужно изменить /etc/sysctl.conf, выполните
sysctl -p Следующий шаг важен, если IP-адреса ваших виртуальных машин находятся в другом подсети, чем IP-адрес хост-системы. Если вы этого не сделаете, сеть не будет работать в виртуальных машинах!
Откройте /etc/vz/vz.conf и установите NEIGHBOUR_DEVS на all:
vi /etc/vz/vz.conf| [...] # Контролирует, на каких интерфейсах отправлять ARP-запросы и изменять таблицы APR. NEIGHBOUR_DEVS=all [...] |
Установите vzdump:
apt-get install vzdumpНаконец, перезагрузите систему:
rebootЕсли ваша система перезагрузится без проблем, значит, все в порядке!
Запустите
uname -rи ваше новое ядро OpenVZ должно появиться:
root@server1:~# uname -r
2.6.32-042stab076.8
root@server1:~#
Get new posts in your inbox
No spam. Unsubscribe anytime.