OpenVZ установка · 6 min read · Oct 04, 2025

Установка и использование OpenVZ на Debian Wheezy (AMD64)

Установка и использование OpenVZ на Debian Wheezy (AMD64)

Версия 1.0
Автор: Falko Timme
Следите за мной в Twitter

В этом руководстве я опишу, как подготовить сервер Debian Wheezy для OpenVZ. С помощью OpenVZ вы можете создать несколько виртуальных частных серверов (VPS) на одном оборудовании, аналогично Xen и проекту Linux Vserver. OpenVZ является открытой версией Virtuozzo, коммерческого решения виртуализации, используемого многими провайдерами, которые предлагают виртуальные серверы. Патч ядра OpenVZ лицензирован под лицензией GPL, а инструменты уровня пользователя — под лицензией QPL.

Это руководство предназначено как практическое руководство; оно не охватывает теоретические основы. Они рассматриваются во многих других документах в интернете.

Этот документ предоставляется без каких-либо гарантий! Я хочу сказать, что это не единственный способ настройки такой системы. Существует множество способов достижения этой цели, но это тот путь, который я выбираю. Я не даю никаких гарантий, что это сработает для вас!

1 Предварительная заметка

Я использую систему x86_64 (amd64). Если вы находитесь на системе i386, некоторые команды будут немного отличаться.

2 Установка OpenVZ

Для Debian Wheezy в официальных репозиториях нет ядра OpenVZ. Поэтому у нас есть три варианта:

  1. Установка из официальных RPM-пакетов проекта OpenVZ (см. Установка ядра из RPM на Debian 6.0) - с поддержкой ploop! (рекомендуется)
  2. Установка ядра Debian Wheezy из проекта OpenVZ и других пакетов из официальных репозиториев Debian Wheezy (см. Установка на Debian) - ядро с поддержкой ploop, но пакет vzctl из Debian не поддерживает его.
  3. Установка из пакетов Proxmox (см. Установка Proxmox VE на Debian Wheezy) - без поддержки 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: не удалось открыть /var/tmp/mkinitramfs_baPCFp/lib/modules/2.6.32-042stab076.8/modules.builtin: Нет такого файла или каталога  
Генерация grub.cfg ...  
Найдено изображение linux: /boot/vmlinuz-3.2.0-4-amd64  
Найдено изображение initrd: /boot/initrd.img-3.2.0-4-amd64  
Найдено изображение linux: /boot/vmlinuz-2.6.32-042stab076.8  
Найдено изображение initrd: /boot/initrd.img-2.6.32-042stab076.8  
готово

Это означает, что на системе также есть другое ядро (3.2.0), и ядро openVZ (2.6.32) не является первым в списке. Чтобы сделать ядро OpenVZ ядром по умолчанию, у нас есть два варианта - настроить ядро по умолчанию в GRUB (рекомендуется) или удалить не-VZ ядро(я).

Чтобы настроить ядро по умолчанию в GRUB, откройте /etc/default/grub…

vi /etc/default/grub

… и измените строку GRUB_DEFAULT (нумерация начинается с 0; поскольку каждое ядро также имеет режим восстановления, наше ядро OpenVZ является третьим ядром, поэтому здесь нужно поставить 2):

| [...] GRUB_DEFAULT=2 [...] |

Обновите GRUB после этого:

update-grub

Чтобы удалить ядро по умолчанию, выполните…

apt-get remove linux-image-amd64 linux-image-3.2.0-4-amd64

… и обновите GRUB:

update-grub

Теперь, когда мы убедились, что загружается правильное ядро, мы можем продолжить.

Далее мы должны проверить, что мы используем UUID вместо имен устройств в /etc/fstab, потому что в противном случае система может не загрузиться с ядром openVZ. Выполните…

blkid

… чтобы узнать UUID ваших устройств/разделов:

root@server1:/tmp# blkid  
/dev/mapper/server1-swap_1: UUID="c465cb44-1bf9-4fbe-bb31-17139fd43004" TYPE="swap"  
/dev/sda5: UUID="WRK6Xm-fg52-T836-sp4k-6uxm-trHH-FiRdBx" TYPE="LVM2_member"  
/dev/sda1: UUID="46d1bd79-d761-4b23-80b8-ad20cb18e049" TYPE="ext2"  
/dev/mapper/server1-root: UUID="d5ac6d76-0b69-46da-b0c1-a4376f2f0e4e" TYPE="ext4"  
root@server1:/tmp#

Откройте /etc/fstab:

vi /etc/fstab

Мой оригинальный /etc/fstab выглядит следующим образом (как вы видите, UUID раздела /boot уже используется, но для / и swap используются имена устройств):

| # /etc/fstab: статическая информация о файловой системе. # # Используйте 'blkid', чтобы напечатать универсальный уникальный идентификатор для устройства; это может быть использовано с UUID= как более надежный способ именования устройств, который работает даже если диски добавляются и удаляются. См. fstab(5). # # <файловая система> <точка монтирования> <тип> <опции> <дамп> <передача> /dev/mapper/server1-root / ext4 errors=remount-ro 0 1 # /boot был на /dev/sda1 во время установки UUID=46d1bd79-d761-4b23-80b8-ad20cb18e049 /boot ext2 по умолчанию 0 2 /dev/mapper/server1-swap_1 none swap sw 0 0 /dev/sr0 /media/cdrom0 udf,iso9660 user,noauto 0 0 |

Измените его так, чтобы UUID использовались для всех разделов:

| # /etc/fstab: статическая информация о файловой системе. # # Используйте 'blkid', чтобы напечатать универсальный уникальный идентификатор для устройства; это может быть использовано с UUID= как более надежный способ именования устройств, который работает даже если диски добавляются и удаляются. См. fstab(5). # # <файловая система> <точка монтирования> <тип> <опции> <дамп> <передача> #/dev/mapper/server1-root / ext4 errors=remount-ro 0 1 UUID=d5ac6d76-0b69-46da-b0c1-a4376f2f0e4e / ext4 errors=remount-ro 0 1 # /boot был на /dev/sda1 во время установки UUID=46d1bd79-d761-4b23-80b8-ad20cb18e049 /boot ext2 по умолчанию 0 2 #/dev/mapper/server1-swap_1 none swap sw 0 0 UUID=c465cb44-1bf9-4fbe-bb31-17139fd43004 none swap sw 0 0 /dev/sr0 /media/cdrom0 udf,iso9660 user,noauto 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 # Copyright (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:~#
Share: X/Twitter LinkedIn

Get new posts in your inbox

No spam. Unsubscribe anytime.