Установка OpenVZ на CentOS. Установка OpenVZ в Ubuntu

Система виртуализации OpenVZ

Часть 1.Введение

Серия контента:

Назначение систем виртуализации

Виртуализация – это термин, обозначающий, в частности, имитацию отдельного компьютера и/или отдельной операционной системы с помощью специального программного обеспечения.

В настоящее время виртуализация популярна по нескольким причинам.

Во-первых, она уменьшает потребность в физических компьютерах, так как одна машина получает возможность одновременно выполнять несколько разнотипных операционных систем. При этом улучшается утилизация вычислительных ресурсов, так как для большинства задач современное оборудование обладает избыточной мощностью.

Во-вторых, повышается безопасность за счёт возможности переноса в изолированные окружения таких сервисов, как Samba и Apache, работающих с правами суперпользователя и имеющих большое количество выявленных и потенциальных уязвимостей. Если различные сервисы управляются разными администраторами, каждый администратор может получить права суперпользователя в своём окружении, в то же время не имея доступа ни к соседним окружениям, ни к основной системе.

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

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

Краткое сравнение популярных систем

Программное обеспечение для виртуализации полезно оценивать по следующим критериям:

  • необходимость аппаратной поддержки (например, Intel VT и AMD SVM);
  • возможность использовать аппаратную поддержку при её наличии;
  • установка и запуск из-под существующей операционной системы (Windows, Linux) или на «голое железо»;
  • способность запускать операционные системы, отличные от установленной;
  • наличие и необходимость драйверов паравиртуализации для запускаемых операционных систем;
  • необходимость графической консоли для работы.

С одной стороны, по предоставляемым возможностям OpenVZ уступает большинству других решений: запускается только из-под Linux, в виртуальных окружениях запускает только Linux и для работы на десктопе не предназначен.

С другой стороны, OpenVZ выигрывает по предъявляемым требованиям: аппаратная поддержка виртуализации ему не требуется, потребление ресурсов и разница в быстродействии между базовой и виртуальной средой минимальны, установка и управление упрощены до предела.

Таким образом, главной нишей применения OpenVZ являются:

  • хостинги Linux-VPS;
  • серверы, на которых запущено несколько сервисов с правами суперпользователя (разнесение по изолированным окружениям повысит безопасность) или со сложными настройками (разнесение упростит сопровождение).

В этой нише по набору возможностей OpenVZ превосходит FreeBSD Jails и linux-vserver, и приближается к Solaris Zones.

Данная статья в первую очередь адресована не специалистам хостинг-провайдеров, так как изложенная здесь информация им давно известна, а рядовым Linux-администраторам, серверы которых подпадают под второй пункт.

Архитектура

OpenVZ разрабатывается как патч (набор улучшений и дополнений) к исходным текстам ядра Linux. В модифицированном ядре добавлен массив дополнительных сущностей – виртуальных окружений (virtual environments, VE), а для всех имеющихся объектов (процессы, сокеты и т. д.) введены дополнительные поля – номер VE, к которому этот объект относится, и номер объекта внутри VE.

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

Дополнительные модули ядра – vzdev, vzmon и прочие – отвечают за работу ограничений, мониторинг, эмуляцию сети в VE, сохранение и восстановление текущего состояния запущенных контейнеров.

К преимуществам OpenVZ по сравнению с более универсальными инструментами виртуализации, такими как Xen и KVM, является прозрачный доступ из внешней системы к процессам, файлам и прочим ресурсам в гостевых. Например, если потребуется остановить во всех контейнерах сервис, в котором обнаружилась уязвимость, во внешней системе («хост-системе») достаточно выполнить команду «killall имя_исполняемого_файла».

Данный пример выводит номера (PID) всех процессов init с номерами контейнеров, в которых они запущены:

# ps -A | grep -w init | awk "{print $1}" | xargs vzpid Pid VEID Name 1 0 init 6905 11 init 7462 12 init

Процессы init, запущенные в контейнерах 11 и 12, внутри контейнеров, как им и положено, имеют PID 1, при этом в хост-системе они видны как PID 6905 и 7462. Номер контейнера, которому принадлежит процесс с указанным PID, сообщает утилита vzpid.

Установка OpenVZ

В ALT Linux Server поддержка OpenVZ присутствует из «коробки», ядро и утилиты находятся на инсталляционном CD-ROM"е и устанавливаются по умолчанию:

$ rpm -qa | grep vz vzctl-3.0.22-alt3 alterator-ovz-0.4-alt8 spt-profiles-ovz-0.2.2-alt1 vzquota-3.0.11-alt1 kernel-image-ovz-smp-2.6.27-alt6

Debian, начиная с текущей стабильной версии 5.0 «Lenny», также содержит OpenVZ в стандартном репозитории. Его установка выполняется следующей командой («-686» для 32-разрядной системы, «-amd64» для 64-разрядной):

sudo aptitude install vzctl vzquota linux-image-openvz-686

В Ubuntu ситуация обратная: OpenVZ поддерживался в версии 8.04, а из 8.10 был исключён в связи с появлением KVM. Так как версия 8.04 имеет увеличенный срок поддержки до 2013 года, с точки зрения безопасности допустимо подключить её репозитарий к более новой системе. Это делается созданием файла /etc/apt/sources.list.d/8.04-hardy-main со следующим содержимым:

deb http://mirror.yandex.ru/ubuntu hardy main deb http://mirror.yandex.ru/ubuntu hardy-updates main deb http://mirror.yandex.ru/ubuntu hardy-security main

Чтение подключённого репозитария и установка OpenVZ:

sudo apt-get update sudo apt-get install vzctl vzquota linux-openvz

Естественно, при этом в обмен на поддержку OpenVZ придётся пожертвовать функциональностью, появившейся в новых версиях ядра после выхода Ubuntu 8.04.

Поддержка Fedora, RHEL (RedHat Enterprise Linux) и CentOS выполняется самими разработчиками OpenVZ. Со своей стороны, разработчики Fedora добавили драйвер для OpenVZ в libvirt , универсальную библиотеку управления виртуальными окружениями, включаемую во многие Linux-дистрибутивы.

  1. Подключение yum-репозитария: cd /etc/yum.repos.d wget http://download.openvz.org/openvz.repo rpm --import http://download.openvz.org/RPM-GPG-Key-OpenVZ
  2. Отключение SELinux (строка «SELINUX=disabled» в файле /etc/sysconfig/selinux) и настройка sysctl.
  3. Установка ядра, перезапуск, установка утилит: yum install ovzkernel reboot yum install vzctl vzquota

Для всех дистрибутивов некоторые переменные ядра рекомендуется установить в следующие значения:

net.ipv4.conf.default.forwarding=1 net.ipv4.conf.default.proxy_arp = 0 net.ipv4.ip_forward=1 net.ipv4.conf.all.rp_filter = 1 kernel.sysrq = 1 net.ipv4.conf.default.send_redirects = 1 net.ipv4.conf.all.send_redirects = 0

Добавьте эти строки в /etc/sysctl.conf и примените командой «sudo sysctl -p».

После завершения установки можно запустить OpenVZ командой «/etc/init.d/vz start» и включить автоматический запуск при старте системы командой chkconfig или update-rc.d.

Структура каталогов

Ниже перечислены наиболее важные файлы и каталоги OpenVZ:

  • /etc/vz/vz.conf – файл с общими настройками;
  • /etc/vz/conf/*.conf – файлы с настройками контейнеров;
  • /var/lib/vz/private – каталог с корневыми файловыми системами контейнеров;
  • /var/lib/vz/root – каталог с точками монтирования корневых файловых систем запущенных контейнеров;
  • /var/lib/vz/template/cache – каталог для архивов с образами корневых файловых систем для заполнения создаваемых контейнеров;
  • /proc/user_beancounters – счётчики ограничений.

В тот момент, когда контейнер остановлен, его каталог в /var/lib/vz/root пуст, и редактирование данных следует производить в /var/lib/vz/private. Когда контейнер запущен, рекомендуется вносить изменения в.../root и ничего не менять в.../private. Синхронизация произойдёт автоматически.

В первых версиях OpenVZ каталог /var/lib/vz располагался в /vz, т.е. непосредственно в корневом каталоге. Некоторые описания рекомендуют создавать символьную ссылку с нового имени на старое («ln -sf /var/lib/vz /»), чтобы гарантировать правильность работы устаревших инструментов.

Шаблоны

При архивации файловой системы в шаблон желательно также очистить от ненужной информации каталоги /var/log, /var/spool, /var/cache и т. д.

Обновление шаблона свежими версиями программного обеспечения должно происходить по следующей схеме (на примере обновления ALT Linux с 4.1 до 5.0):

  • создаётся и запускается новый контейнер: vzctl create 101 --ostemplate altlinux-4.1-x86_64 vzctl start 101
  • в контейнере в /etc/apt/sources.list оставляется единственный файл branch50.list: rpm http://mirror.yandex.ru/altlinux/5.0/branch x86_64 classic rpm http://mirror.yandex.ru/altlinux/5.0/branch noarch classic #rpm http://mirror.yandex.ru/altlinux/updates/5.0 x86_64 updates #rpm http://mirror.yandex.ru/altlinux/backports/5.0 x86_64 backports
  • запускается обновление: vzctl enter 101 apt-get update apt-get dist-upgrade apt-get clean
  • удаляются файлы *.rpmnew (свежие варианты настроек, конфликтующие с изменёнными вариантами из шаблона) и *.rpmsave (старые настройки, не использующиеся в обновлённой системе)
  • контейнер останавливается, его каталог запаковывается в новый шаблон: vzctl stop 101 tar -C /var/lib/vz/private/101 \ -czf /var/lib/vz/template/cache/altlinux-5.0-x86_64.tar.gz.

Конфигурации

Информация в данном разделе не требуется для практического использования в большинстве случаев, но будет полезной для общего понимания структуры OpenVZ.

Кроме файловой системы, создаваемому контейнеру назначается конфигурация . Как правило, «vzctl create» определяет её автоматически по имени файла-шаблона, но при необходимости можно указать её вручную параметром «--config». После создания контейнера имя его конфигурации хранится в его файле настроек (/etc/vz/conf/*.conf) – либо в строке «CONFIG=...», либо вычисляется по строке «OSTEMPLATE=...».

Конфигурации хранятся в каталоге /etc/vz/dists и содержат списки команд для управления настройками в системе, работающей внутри контейнера. Например, назначение IP-адреса для контейнера производится следующей командой:

vzctl set 101 --ipadd 192.0.2.101

В зависимости от конфигурации, наряду с сохранением IP-адреса в /etc/vz/conf/11.conf, внутри запущенного контейнера будут выполнены следующие действия:

  • для Slackware: записать IP-адрес в файл /etc/rc.d/rc.inet1.conf
    и выполнить команду «/etc/rc.d/rc.inet restart»;
  • для Debian и Ubuntu: записать IP-адрес в /etc/network/interfaces
    и выполнить «/etc/init.d/networking restart»;
  • для ALT Linux: записать IP-адрес в /etc/net/ifaces/venet0/ipv4address
    и выполнить «ifup venet0».

Кроме перечисленных систем, готовые конфигурации имеются для Arch, Centos/Fedora/RHEL, Mandrake, SLES/OpenSUSE, Openwall, старых версий RedHat и SuSE. Конфигурация по умолчанию (dists/default) предназначена для систем от Redhat. Скелет для создания собственных конфигураций с подробными комментариями находится в dists/distribution.conf-template.

Заключение

Итак, мы рассмотрели архитектуру системы виртуализации OpenVZ и некоторые вопросы, связанные с ее установкой и практическим использованием. В следующей, завершающей статье цикла подробнее расскажем об использовании этой системы виртуализации.

Ресурсы для скачивания

static.content.url=http://www.сайт/developerworks/js/artrating/

ArticleID=471423

ArticleTitle=Система виртуализации OpenVZ: Часть 1.Введение

OpenVZ - контейнерная система виртуализации для Linux. Мы можем создать n-ое количество виртуальных машин, в зависимости от конфигурации нашей реальной машины. Каждая виртуальная машина будет работать как отдельная автономная система и не будет конфликтовать с другими машинами.

Созданные с помощью OpenVZ машины могут быть перезагружены независимо одна от одной, могут иметь разных пользователей, IP адреса, память, процессы, файлы, приложения, библиотеки и настройки. Так как используется виртуализация на уровне ОС, в отличие от VirtualBox Vmware и KVM, гостевые системы будут использовать одно и то же ядро - хост системы.

Это позволяет каждой машине наиболее эффективно работать с системными ресурсами: памятью, процессором, дисковым пространством и сетью. В этой инструкции будет рассмотрена установка OpenVZ на Ubuntu 16.04.

Системные требования:

  • Intel совместимый или AMD процессор;
  • Как минимум 128 Мб оперативной памяти;
  • Минимум 4 ГБ свободного места на диске;
  • Подключение к интернет;

Установка OpenVZ Ubuntu выполняется очень просто. В официальных репозиториях нужных пакетов нет, поэтому нам придется подключить к системе репозиторий от разработчиков. Но сначала получим права суперпользователя:

Добавим репозиторий OpenVZ в систему:

cat << EOF > /etc/apt/sources.list.d/openvz-rhel6.list
deb http://download.openvz.org/debian wheezy main
# deb http://download.openvz.org/debian wheezy-test main
EOF

Импортируем OpenVZ GPG ключ для репозитория:

wget http://ftp.openvz.org/debian/archive.key

apt-key add archive.key

Обновим списки пакетов:

apt-get install linux-image-openvz-amd64

Или для i386:

apt-get update && apt-get install linux-image-openvz-686

Настроем параметры нового ядра:

Включаем форвардинг пакетов и отключаем прокси
net.ipv4.ip_forward = 1
net.ipv6.conf.default.forwarding = 1
net.ipv6.conf.all.forwarding = 1
net.ipv4.conf.default.proxy_arp = 0

# Включаем проверку маршрута
net.ipv4.conf.all.rp_filter = 1

# включаем magic-sysrq
kernel.sysrq = 1

# Разрешаем использовать редиректы для сетевых интерфейсов
net.ipv4.conf.default.send_redirects = 1
net.ipv4.conf.all.send_redirects = 0

Затем установим утилиты для контроля и статистики OpenVZ:

apt-get install vzctl vzquota ploop vzstats

Установка OpenVZ на Ubuntu 16.04 завершена. Теперь можно перезагрузить компьютер и загрузится с ядром OpenVZ Ubuntu, Пункт меню Ubuntu with openvz можно найти в подменю Advanted options for Ubuntu:

Теперь вы готовы создавать и управлять виртуальными машинами в OpenVZ.

Создание виртуальных машин OpenVZ

Создадим нашу первую виртуальную машину. Для этого существует утилита vzctl. Выполните команду:

sudo vzctl create 1 --ostemplate debian-7.0-x86_64 --config vswap-2g

Здесь 1, это уникальный номер виртуальной машины, --ostemplate указывает шаблон дистрибутива, который будет загружен и распакован, в нашем случае это Debian 7. Опция --config задает конфигурационный файл, в котором указаны все настройки машины. Конфигурационные файлы лежат в каталоге /etc/vz/conf/.

Настраивать OpenVZ в Ubuntu будем с помощью утилиты vzctl. Сначала добавим старт при загрузке:

sudo vzctl set 1 --onboot yes --save

Зададим имя хоста:

sudo vzctl set 1 --hostname debian7.example.com - save

Установим IP адрес и DNS сервера:

sudo vzctl set 1 --save --ipadd 192.168.1.2

$ sudo vzctl set 1 --save --nameserver 8.8.8.8

Количество используемых ядер:

sudo vzctl set 1 --save --cpus 4

Доступное количество оперативной памяти:

sudo vzctl set 1 --save --ram 1G

Размер раздела подкачки:

sudo vzctl set 1 --save --swap 4G

Доступное дисковое пространство:

sudo vzctl set 1 --save --diskspace 100G

Готово. С настройкой OpenVZ Ubuntu завершили, теперь запускаем машину:

sudo vzctl start 1

И устанавливаем пароль:

sudo vzctl exec 1 passwd

Готово. Машина работает и вы уже можете ее использовать. При указании ip адреса для виртуальной машины убедитесь, что для физической и виртуальной машины используется одна и та же подсеть. Если хотите использовать другую подсеть нужно отредактировать файл /etc/vz/vz.conf:

vi /etc/vz/vz.conf

Раскомментируйте строчку:

NEIGHBOUR_DEVS=detect

И измените ее на:

NEIGHBOUR_DEVS=all

Выводы

Вот и все. Теперь вы знаете как выполняется установка openvz на ubuntu 16.04. Для меня настройка OpenVZ показалась намного проще чем те же самые LXC контейнеры. Если у вас остались вопросы, спрашивайте в комментариях!

Похожие записи:


При выборе тарифа, человек выбирает также и способ виртуализации для сервера. Предлагаем на выбор виртуализации на уровне операционной системы OpenVZ и аппаратную виртуализацию KVM.

Сменить тип виртуализации после запуска невозможно, поскольку серверы находятся на разных аппаратных платформах. Вам придётся заказать новый сервер, перенести проект и отказаться от старого сервера.

Сравнение типов виртуализаций

OpenVZ KVM
ОС из ряда предложенных: Debian, CentOS, Ubuntu Linux, Windows, FreeBSD, установка собственного дистрибутива
Изменение ресурсов без перезагрузки (жёсткий диск, память, процессор) Память и процессор изменятся после перезагрузки, жёсткий диск - только после обращения в поддержку (на готовых тарифах память изменить нельзя)
Смена тарифного плана без перезагрузки

Смена тарифного плана . Сервер будет недоступен 1-2 часа.

Мягкие лимиты: максимальная производительность сервера может отклоняться в большую или меньшую сторону Жёсткие лимиты: каждый сервер получает заявленные ресурсы
Ограничение на запуск высоконагруженных проектов. Запрещено запускать Java-приложения, массовые рассылки и проксировать трафик. TUN/TAP выключен. Возможность запуска любых проектов (кроме систем распределённых вычислений)

Виртуализация OpenVZ

OpenVZ - виртуализация уровня операционной системы. Технология базируется на ядре ОС Linux и позволяет на одном физическом сервере создавать и запускать изолированные друг от друга копии выбранной операционной системы (Debian, CentOS, Ubuntu). Установка другой ОС невозможна, так как виртуальные серверы используют общее ядро Linux.

Технология отличается легкостью управления сервером: пользователь может в личном кабинете самостоятельно добавить количество ресурсов (память, процессор, жесткий диск) или перейти на другой тариф с той же виртуализацией. Изменения ресурсов применяются автоматически, без перезагрузки сервера.

На серверах с виртуализацией OpenVZ запрещается запускать:

  • сервисы для организации проксирования любого вида трафика
  • сервисы потокового вещания
  • игровые серверы
  • системы или элементы систем распределённых вычислений (например, bitcoin mining)
  • сервисы массовой рассылки почтовых сообщений, даже если они используются в легальных целях
  • Java-приложения
  • иные ресурсоёмкие приложения

Такие проекты создают неравномерную нагрузку на родительском сервере и могут мешать соседним виртуальным машинам.

Виртуализация KVM

KVM (Kernel-based Virtual Machine) - технология аппаратной виртуализации, позволяющая создать на хост-машине полный виртуальный аналог физического сервера . KVM позволяет создать полностью изолированный от «соседей» виртуальный сервер с собственным ядром ОС, который пользователь может настраивать и модифицировать под собственные нужды без ограничений. Каждому такому серверу выделяется своя область в оперативной памяти и пространство на жестком диске, что повышает общую надежность работы такого сервера.

Возможна установка любой операционной системы на выбор (Debian, CentOS, Ubuntu, FreeBSD, Windows Server), либо установка собственного дистрибутива (в панели VMmanager в разделе ISO-образы нажмите кнопку Создать и добавьте свой ISO-образ системы).

Смена тарифного плана возможна только в большую сторону и только в рамках базовой линейки тарифов (Старт, Разгон, Отрыв, Улёт). Если ваш проект «вырастет» из тарифа, напишите запрос в поддержку из Личного кабинета - администраторы сменят тариф на требуемый бесплатно. Изменить тариф в меньшую сторону можно только переносом на новый сервер. Закажите новый сервер и перенесите данные самостоятельно, либо специалисты технической поддержки помогут с переносом за 1 обращение по пакету администрирования или 250 руб.

Помните, что на тарифах VDS-Форсаж и VDS-Атлант , вы можете изменять ресурсы вместо смены тарифа : количество доступных ядер процессора и оперативной памяти самостоятельно в панели управления, а размер жёсткого диска - после обращения в поддержку (в рамках администрирования или за 250 руб.).

Учитывая особенности и преимущества, которые дает виртуализация KVM, ее тарифы стоят дороже аналогичных тарифов с виртуализацией OpenVZ.

На серверах с виртуализацией KVM Абоненту запрещается размещать системы или элементы систем распределённых вычислений (например, bitcoin mining ).

Смена виртуализации на сервере

В рамках одного сервера сменить виртуализацию с OpenVZ на KVM и обратно невозможно.

1. Закажите второй сервер с нужной виртуализацией в панели BILLmanager, раздел Виртуальные серверы → Заказать

2. Перенесите на него данные.

3. После переноса и проверки старый сервер можно удалить (Виртуальные серверы → Удалить).


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

Виртуализация так плотно вошла в нашу жизнь, что уже трудно представить себе пользователя, никогда не видевшего виртуальную машину собственными глазами. Сегодня виртуализация используется везде: для создания серверов в хостинг-компаниях, для изоляции небезопасных сетевых сервисов, для создания сети тонких клиентов, для тестирования программного обеспечения, драйверов, разработки операционных систем и многого-многого другого.

Сегодня существует множество технологий виртуализации, среди которых есть как простые виртуальные машины, используемые на ПК обычных пользователей, так и целые облачные инфраструктуры, позволяющие управлять десятками тысяч виртуальных машин, разбросанных по всему миру. Особое место среди них занимают так называемые «системы виртуализации уровня операционной системы » или, как их иногда называют сисадмины, «псевдовиртуальные машины».

Виртуализация уровня ОС

В отличие от «настоящих» виртуальных машин, которые программно воссоздают аппаратную начинку ПК, системы виртуализации уровня ОС виртуализируют операционную систему, позволяя как бы расщепить ее на несколько независимых друг от друга ОС.

Проще всего понять это на примере дистрибутива GNU/Linux. Грубо его можно разделить на два логических компонента: ядро, имеющее максимальные привилегии и управляющее всем оборудованием, и компоненты пространства пользователя, представляющие собой набор демонов, библиотек, систему инициализации, ПО и прочее, которые получают доступ к оборудованию через вызовы функций ядра (системные вызовы). В обычной ситуации все компоненты пространства пользователя работают в одном «контексте исполнения » или, говоря образным языком, находятся в одной комнате: они могут видеть друг друга, имеют доступ к одному дереву файлов, делят между собой оборудование и все остальные ресурсы. Использование прав доступа позволяет им вполне успешно сосуществовать, не нанося друг другу вреда, однако может наступить момент, когда кто-то начнет теснить остальных, а другой, найдя способ обхода прав доступа, захватит власть над операционной системой.

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

Для решения этой проблемы виртуализация уровня ОС позволяет создать множество контекстов исполнения, каждый со своим деревом файлов, собственными процессами, сетевым стеком, правами на доступ к оборудованию и так далее. Проще говоря, она делает из одной операционной системы - несколько независимых, каждая из которых может иметь различные права на ресурсы, наиболее подходящие в ее конкретном случае. Такая виртуализация выгодно отличается от «настоящих» виртуальных машин: она проще в настройке, легко масштабируется и накладывает совсем незаметный (около 1%) оверхед на скорость работы ОС. Серьезный недостаток у нее всего один: возможность исполнения операционных систем только одного типа.

Почему OpenVZ?

В мире UNIX существует много различных реализаций виртуализации уровня операционной системы. Одними из первых в свою ОС ее внедрили разработчики FreeBSD. Система получила название Jail («Тюрьма») и долгое время оставалась образцом для подражания в глазах разработчиков других открытых ОС, но в последнее время сдала позиции как наименее развитая в плане функциональности.

Наверное, лучшую реализацию системы создала компания Sun для операционной системы Solaris 10, однако Solaris Zones, равно как и сама ОС, не получила широкого распространения (кстати, мы писали о Solaris Zones в одном из предыдущих номеров журнала).

Многие разработчики неоднократно предпринимали попытки воссоздать обе реализации для Linux, и на сегодня в этой области сформировалось три заметных лидера. Во-первых, это развиваемая сообществом система Linux-VServer (о ней мы также уже писали). Во-вторых, это не так давно появившийся, но очень перспективный проект LXC (LinuX Containers), который отличается очень функциональной реализацией, а также тем, что использует в своей основе стандартные механизмы ядра Linux, а потому не требует накладывания каких-либо патчей и может быть развернут за считанные минуты. В-третьих, это наиболее функциональная и стабильная система виртуализации OpenVZ, выступающая в роли ядра коммерческой системы Virtuozzo, выпускаемой российской компанией Parallels.

Сегодня OpenVZ и Virtuozzo - это стандарт де-факто для систем виртуализации уровня ОC в Linux. Они используются на тысячах серверов по всему миру, а их разработчики находятся на одном из первых мест по количеству коммитов кода в ядро Linux. Кстати, основной плюс OpenVZ заключается в том, что ты всегда сможешь найти не только огромное количество других пользователей OpenVZ, которые ответят на твои вопросы, но и массу информации на русском языке.

Что умеет OpenVZ?

По сути, OpenVZ - это модифицированное ядро Linux, в которое добавлен слой виртуализации, построенный на концепции VE (Virtual Environment - виртуальной среды), которую мы будем называть более привычным для нас термином «контейнер».

Такое ядро может обеспечивать несколько контекстов исполнения. И даже если пользователь не собирается использовать эту возможность, ядро все равно создаст один контекст, называемый Hardware Node (или нулевой контейнер). Это основная хост-система, имеющая максимальные полномочия и права на ресурсы. Говоря простым языком - стандартное Linux-окружение.

В любой момент администратор нулевого контейнера может добавить в систему новый контейнер, назначив ему номер, имя, сетевой адрес, дав прямой доступ к нужному оборудованию (если это необходимо) и выделив нужное количество ресурсов, которые будут определять «мощность» виртуального сервера.

OpenVZ использует модифицированный планировщик процессов, который учитывает не только их приоритеты, но и то, в каком контейнере они исполняются. Это позволяет задать жесткое ограничение процессорного времени на каждый контейнер, не позволив ему полностью загрузить весь процессор, лишив возможности исполнения процессы других контейнеров.

Каждый контейнер OpenVZ получает собственный виртуальный сетевой интерфейс (venet или veth) и полноценный, полностью обособленный от нулевого контейнера, сетевой стек, обеспечивающий контейнер отдельными IP-адресом, таблицей маршрутизации и правилами брэндмауэра. Одной из важнейших возможностей OpenVZ является механизм так называемого «чекпоинтинга», позволяющий сохранить образ контейнера на жесткий диск и восстановить его работу с прерванного места. Более того, образ можно безболезненно перенести на другую машину и восстановить его работу уже на ней. Причем даже если в момент «заморозки » на адрес одного из сетевых сервисов контейнера придет запрос, он будет вполне успешно обработан после восстановления, а для клиента это будет выглядеть как обычная задержка в ответе (например, на открытие web-страницы ушла не доля секунды, а 5 секунд).

OpenVZ очень хорошо масштабируется. Одна физическая машина может с легкостью обслуживать несколько сотен не слишком требовательных к ресурсам контейнеров, и пользователи каждого из них даже не заметят каких-либо проблем с производительностью.

Ограничения

Помимо уже упомянутого ограничения на тип поддерживаемых ОС, которое вытекает из того факта, что все контейнеры работают на одном ядре Linux, у OpenVZ есть несколько более мелких, но заслуживающих внимания недостатков (справедливости ради следует отметить, что это проблема всех реализаций системы виртуализации уровня ОС). Во-первых, OpenVZ накладывает определенные ограничения на работу софта, который зависит от низкоуровневых функций ядра. Так, например, ядерный NFS, OpenVPN и IPSec внутри контейнера работать не будут.

Какие-то другие программы, зависимые от ядерных модулей, также откажутся правильно функционировать (хотя в некоторых случаях OpenVZ позволяет загрузить в контейнер модули).

О различных ядерных патчах тем более придется забыть раз и навсегда. Во-вторых, все контейнеры OpenVZ используют один дисковый своп, а это значит, что если оперативная память между контейнерами будет распределена неправильно, система может начать тормозить в самый неподходящий момент. К счастью, проблема решается с помощью разделения памяти таким образом, чтобы ее суммарный объем составлял не более 80-90% от общего количества. В-третьих, контейнеры OpenVZ используют один дисковый кэш, поэтому если какой-то контейнер начнет активно обращаться к жесткому диску, то он может заполнить весь кэш своими данными, и другим контейнерам придется долго ждать очереди, чтобы записать/прочитать данные с диска. В связи с этим я бы не рекомендовал использовать OpenVZ для «хостинга» серверов, активно работающих с диском (для таких задач вообще всегда рекомендуется использовать выделенный железный сервер).

Наконец, в-четвертых, OpenVZ использует очень неэффективный механизм ограничения контейнеров в количестве оперативной памяти. Вместо подсчета реально используемой приложениями контейнера памяти он считает количество выделенной памяти, и это придется учитывать при запуске приложений, запрашивающих большие количества памяти при запуске, но не использующих ее всю во время работы (например, так ведет себя всем известный memcached при дефолтовых настройках).

Установка

Являясь «системой уровня предприятия» и основой платного продукта Virtuozzo, OpenVZ в первую очередь рассчитана на применение в дистрибутивах линейки RHEL, поэтому официальные сборки OpenVZ-ядра доступны только для этого дистрибутива.

Неофициально же OpenVZ доступен в Debian, разработчики которого самостоятельно патчат и готовят ядро OpenVZ (пакет linux-openvz-i386 FIXME).

В Ubuntu ядра OpenVZ нет еще с версии 8.10, поэтому у его пользователей остается два способа установить OpenVZ на сервер: пропатчить и собрать ядро самостоятельно либо взять уже патченое ядро из Ubuntu 8.04. Для тех, кто считает последний подход бредовым, поясню: во-первых, стабильное OpenVZ-ядро на сегодняшний день до сих пор имеет номер версии 2.6.18, тогда как в Ubuntu 8.04 используется даже более свежее ядро 2.6.24; во-вторых, Ubuntu 8.04 является LTS-дистрибутивом, а значит, обновления безопасности для любых его компонентов будут выходить вплоть до 2013 года, что, на мой взгляд, вполне приемлемо. Итак, если мы имеем дело с RHEL, то OpenVZ можно установить из официального источника. Для этого необходимо добавить репозиторий openvz.org в yum:

# cd /etc/yum.repos.d
# wget http://download.openvz.org/openvz.repo
# rpm --import http://download.openvz.org/RPM-GPG-Key-OpenVZ

Отключить SELinux:

# echo "SELINUX=disabled" > /etc/sysconfi g/elinux

И установить ядро и утилиты управления:

# yum install ovzkernel
# yum install vzctl vzquota

В Debian все просто, достаточно выполнить только одну команду:

$ sudo apt-get install vzctl vzquota
linux-openvz-i386

В Ubuntu сложнее. Сначала необходимо добавить репозиторий Ubuntu 8.04, для чего следует создать файл / etc/apt/sources.list.d/hardy-main.list и поместить в него следующие строки:

# vi /etc/apt/sources.list.d/hardy-main.list
hardy main
deb http://mirror.yandex.ru/ubuntu
hardy-updates main
deb http://mirror.yandex.ru/ubuntu
hardy-security main

Только после этого можно установить OpenVZ-ядро и утилиты:

$ sudo apt-get update
$ sudo apt-get install vzctl vzquota
linux-openvz

После установки в любом из трех дистрибутивов необходимо изменить некоторые настройки ядра, иначе OpenVZ будет работать некорректно. Открываем файл /etc/sysctl.conf и пишем в него следующее:

# vi /etc/sysctl.conf
net.ipv4.conf.default.proxy_arp = 1
net.ipv4.ip_forward = 1
net.ipv4.conf.all.rp_fi lter = 1
kernel.sysrq = 1
net.ipv4.conf.default.send_redirects = 1
net.ipv4.conf.all.send_redirects = 0

Перезагружаем машину и загружаемся уже с новым ядром. Чтобы запустить необходимые для правильной работы OpenVZ userspace-сервисы, набираем:

# /etc/init.d/vz start

Шаблоны ОС

Как уже было сказано выше, для каждого контейнера OpenVZ создает независимый контекст исполнения, который, за вычетом всего остального, имеет собственное файловое дерево, полностью обособленное от файловой системы нулевого контейнера. Поэтому перед тем как приступить к опробованию боевых качеств OpenVZ, мы должны подготовить набор файлов, которые будут формировать файловую систему для будущих контейнеров (так называемый шаблон).

Существует три способа это сделать:

  1. Скопировать файловое дерево из основной системы, что приведет к тому, что любой новый контейнер будет представлять собой копию существующей системы (нулевого контейнера).
  2. Взять существующий дистрибутив Linux и получить готовый шаблон, выбросив из него ядро, initramfsобраз и внеся несколько изменений.
  3. Скачать подходящий шаблон с сайта OpenVZ.

Мы пойдем по пути наименьшего сопротивления и воспользуемся третьим способом. Для этого переходим в каталог-хранилище шаблонов:

$ cd /var/lib/vz/template/cache

И скачиваем нужный шаблон с помощью wget:

$ sudo wget http://download.openvz.org/template/precreated/debian-5.0-x86.tar.gz

Весь список подготовленных шаблонов можно просмотреть, открыв страницу download.openvz.org/template/precreated в браузере.

Создаем контейнеры

Для управления OpenVZ используется несколько консольных утилит, наиважнейшая из которых носит имя vzctl. Она применяется для создания, удаления, запуска, остановки, а также изменения настроек контейнеров.

Любой сисадмин OpenVZ должен знать все ее параметры и опции назубок. Способ вызова утилиты следующий:

# vzctl команда номер_контейнера аргументы

Команда - это действие, которое должен выполнить OpenVZ, а аргументы уточняют или дополняют его.
Для создания контейнера используется команда create, для изменения параметров - set, для уничтожения - destroy. Также доступны команды enter, start, stop и restart, позволяющие «заходить» в контейнеры и управлять их работой.

Vzctl - очень гибкая утилита, с помощью которой можно создать и полностью настроить контейнер почти любой сложности, не затронув ни единого конфигурационного файла. Вот как это делается:

1. Сначала создаем новый контейнер с номером 100 (кстати, в качестве номера удобно использовать последнюю часть его IP-адреса):

# vzctl create 100 --ostemplate debian-5.0-x86
--confi g vps.basic

Здесь debian-5.0-x86 - это скачанный ранее шаблон без расширения tar.gz, а vps.basic - набор стандартных предустановок, которые мы все равно собираемся менять.

2. Меняем настройки контейнера так, чтобы он запускался при загрузке системы:

# vzctl set 100 --onboot yes --save

3. Меняем сетевое имя контейнера:

# vzctl set 100 --hostname my-fi rst-vps.org.ru --save

4. Даем ему новый IP-адрес:

# vzctl set 100 --ipdel all --ipadd 192.168.0.100 --save

5. Указываем дефолтный DNS-сервер:

# vzctl set 100 --nameserver 192.168.0.1 --save

6. Устанавливаем пароль пользователя root:

# vzctl set 100 --userpasswd root:password --save

7. Выделяем контейнеру 15% от общей мощности процессора (один процессор - это 100%, два - 200%, четыре - 400% и так далее):

# vzctl set 100 --cpulimit 15 --save

8. Выделяем контейнеру 20 Гб дискового пространства с возможностью его превышения до 25 Гб на небольшой промежуток времени:

# vzctl set 100 --diskspace 20G:25G --save

9. Устанавливаем ограничение на объем оперативной памяти (в первой строке устанавливаем гарантированный ресурс, во второй - негарантированный, он будет доступен контейнеру только в том случае, если в системе есть его излишек):

# vzctl set 100 --vmguarpages 256M:256M --save
# vzctl set 100 --privvmpages 512M:512M --save

10. Теперь можно войти в контейнер и продолжить настройку уже внутри него (установить необходимые сервисы, настроить брэндмауэр и маршрутизацию):

# vzctl enter 100

Более подробную информацию о настройке контейнеров можно почерпнуть из man-страницы vzctl.

UBC

В терминах OpenVZ лимиты и гарантии ресурсов называются User Beancounters (UBC). Всего существует около 20 UBC, контролирующих почти все возможные ресурсы системы. Каждый UBC имеет свою опцию в команде vzctl, а также строку в файле /proc/user_ beancounters, с помощью которого можно узнать о текущем количестве выделенных ресурсов и определить их нехватку. Файл представляет собой таблицу, каждая строка которой содержит информацию об одном ресурсе, а колонки отражают следующие данные:

Файл /proc/user_beancounters

  • uid - идентификатор контейнера;
  • resource - имя ресурса;
  • held - текущая утилизация ресурса;
  • maxheld - максимальный уровень утилизации ресурса за все время работы контейнера;
  • barrier - максимальный уровень утилизации ресурсов, который может быть временно превышен;
  • limit - жесткое ограничение утилизации ресурса, которое никогда не может быть превышено;
  • failcnt - счетчик отказов, который увеличивается каждый раз, когда контейнер делает запрос ресурсов сверх своего лимита.

Не обязательно разбираться во всех тонкостях системы подсчета ресурсов OpenVZ, чтобы эффективно управлять контейнерами. Достаточно время от времени поглядывать на значение колонки failcnt и, если оно оказывается больше нуля, начинать предпринимать меры либо по оптимизации исполняемого в рамках контейнера софта, либо по увеличению количества выделяемых контейнеру ресурсов.

Выводы

Эта статья охватывает лишь малую часть того, что принято называть термином «виртуализация уровня ОС», но изложенной в ней информации вполне достаточно, чтобы начать применять технологию и двинуться дальше.

О настройке контейнеров

Самое замечательное в настройке OpenVZконтейнеров - это целостность инструментов. При необходимости система сама изменяет конфигурационные файлы дистрибутива, расположенного в контейнере, так, чтобы они соответствовали запрошенным. К примеру, настройка адреса DNS-сервера с помощью vzctl автоматически приведет к его добавлению в файл /etc/resolv.conf в файловой системе контейнера.

Такой уровень гибкости гораздо сложнее получить при использовании «классических» систем виртуализации.

Список OpenVZ-утилит

  • vzlist используется для получения списка всех контейнеров;
  • vzmigrate предназначена для осуществления offlineи online-миграции;
  • vzcfgvalidate проверяет конфигурационные файлы на корректность;
  • vzmemcheck, vzcpucheck, vzcalc осуществляют проверку на доступные ресурсы внутри контейнера;
  • vzsplit автоматически генерирует конфигурационные файлы;
  • vzpid определяет номер контейнера по PID’у процесса;
  • vzquota управляет дисковой квотой контейнера.

Links

  • Все, что нужно знать о UBC: wiki.openvz.org/UBC ;
  • Руководство по созданию шаблонов: http://goo.gl/h1gNL .
  • О том, как производить чекпоинтинг: http://goo.gl/lZbzW .
  • Как превратить физический сервер в виртуальный: http://goo.gl/sYtxF ;
  • Настройка I/Oприоритетов для контейнеров: http://goo.gl/YtjiV .
  • Cписок панелей управления OpenVZ: http://goo.gl/KfEbB .
  • OpenVZ Web Panel, одна из лучших web-панелей для управления OpenVZ: http://goo.gl/x7UlF .
  • Настройка OpenVZ Web Panel: http://goo.gl/vx73u .
  • Описание процесса установки OpenVZ в Ubuntu 10.04 с помощью сборки из исходников: http://goo.gl/XEaou .

Теория без практики - бесполезна, поэтому настало время написать подробную установку и настройку OpenVZ на CentOS/Red Hat/ Fedora. У меня установлена именно CentOS 6.5.

Добавим репозитории для того чтобы установить ядро OpenVZ и пару программ для работы с контейнерами, для этого выполним:

# wget -P /etc/yum.repos.d/ http://ftp.openvz.org/openvz.repo # rpm --import http://ftp.openvz.org/RPM-GPG-Key-OpenVZ

Установим ядро и все наши утилиты, выполним команду в терминале:

# yum install vzctl vzquota ploop

Ограниченная функциональности в OpenVZ поддерживается при запуске современного ядра 3.x (нужно проверить vzctl апстрима ядра, так что установка OpenVZ ядро является обязательным):

# yum install vzkernel

На офф сайте говорится, что с vzctl начиная с версии 4.4 настройки параметров ядра нужно немного видоизменить (/etc/sysctl.conf), . На официальном сайте вычитал что это необходимо сделать так как есть целый ряд параметров ядра, которые должны быть установлены в OpenVZ для корректной работы. Эти параметры хранятся в /etc/sysctl.conf. Вот соответствующие фрагменты файла; пожалуйста, измените соответствующим образом:

# On Hardware Node we generally need # packet forwarding enabled and proxy arp disabled net.ipv4.ip_forward = 1 net.ipv6.conf.default.forwarding = 1 net.ipv6.conf.all.forwarding = 1 net.ipv4.conf.default.proxy_arp = 0 # Enables source route verification net.ipv4.conf.all.rp_filter = 1 # Enables the magic-sysrq key kernel.sysrq = 1 # We do not want all our interfaces to send redirects net.ipv4.conf.default.send_redirects = 1 net.ipv4.conf.all.send_redirects = 0

Необходимо отключить SELinux в вашей системе.По этому положите SELINUX=disabled в /etc/sysconfig/selinux выполнив команду:

# echo "SELINUX=disabled" > /etc/sysconfig/selinux

Теперь перезагрузите машину и выберем «OpenVZ» в самом меню загрузчика.

Перегрузимся и убедимся что версии ядра совпадают:

Если версия ядра совпадают, то вы все сделали правильно, или нужно проверить какое именно ядро загружает в GRUB. Создадим наш контейнер:

vzctl create 103 —ostemplate debian-7.0-x86_64 —config vswap-2g

Шаблон для создания контейнера с Debian 7 будет скачан с официального сайта OpenVZ и установится сам для дальнейшего использования (если вы хотите еще добавить в контейнер, то выберите на сайтике!).

Создадим конфигурацию для нового нашего контейнера: Добавим контейнер в автозагрузку после запуска нашей хост-системы.

# vzctl set 103 --onboot yes --save

Задаем hostname для нашей новой системы (для ВПСки).

# vzctl set 103 --hostname debian7.for_test.com --save

Назначим айпи (ИП) , установка для VENET — соединения

# vzctl set 103 --save --ipadd 192.168.244.31

Прописываем DNS — сервера

# vzctl set 103 --save --nameserver 8.8.8.8 --nameserver 8.8.4.4

Присвоим количество cpu-ядер

# vzctl set 103 --save --cpus 2

Присвоим количество RAM

# vzctl set 103 --save --ram 4G

Присвоим количество swap

# vzctl set 103 --save --swap 2G

Задаем размер нашего жесткого диска

# vzctl set 103 --save --diskspace 10G

Запустим наш контейнер

# vzctl start 103

Установим пароль для root-пользователя

# vzctl exec 103 passwd

Таким образом мною был создан и настроем новый контейнер на системе Debian 7. Я настроил VENET-соединение для связи с внешним миром. В следующий раз можно исправить конфигурацию контейнера, отредактировав конфиг в /etc/vz/conf/:

Физически контейнер лежит в /vz/private/103:

# cd /vz/private/103

Если контейнер работает и вам нужно что то добавить или настроить, то все изменения лучше осуществлять пользуясь путем /vz/root/103, который делает синхронизацию с /vz/private/103. OpenVZ имеет возможность настройки VETH (Virtual ETHernet) или VENET (Virtual NETwork) сетевого интерфейса внутри вашего контейнера. VETH позволяет отправлять broadcasts-сообщения внутри вашего контейнера и у него имеется MAC - адрес на интерфейсе, поэтому можно настроить автоматическое получение адреса с помощью DHCP или настроить Samba - сервер, который также требует broadcasts-сообщений. VETH-интерфейс задается исключительно с помощью vzctl, все другие настройки интерфейса (ввод IP, gateway и др.) нужно делать в самом контейнере. Но, скорее всего, VENET-соединения будет вам с головой. К преимуществам последнего можно отнести высокую скорость работы по сравнению с VETH и быструю его настройку ресурсами хост-машины.

Немного больше о сетевых соединениях контейнеров почитайте на wiki OpenVZ. Сейчас напишу как создать контейнер с использованием VETH-соединения. Для начала нужно создать vmbr0 bridge. Нужно установить пакет bridge-utils, после чего будем настраивать интерфейс vmbr0:

# yum install bridge-utils # ee /etc/sysconfig/network-scripts/ifcfg-vmbr0 DEVICE="vmbr0" BOOTPROTO="static" IPV6INIT="no" ONBOOT="yes" TYPE="Bridge" DELAY=0 IPADDR=192.168.244.30 NETMASK=255.255.255.0 GATEWAY=192.168.244.1

eth0 настроим таким образом:

# ee /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE="eth0" ONBOOT="yes" IPV6INIT="no" TYPE="Ethernet" BRIDGE="vmbr0"

Но до этого у eth0 был статический IP 192.168.244.30. Создадим /etc/vz/vznet.conf со следующим содержанием:

# ee /etc/vz/vznet.conf #! /bin/bash EXTERNAL_SCRIPT = "/usr/sbin/vznetaddbr"

Ребутнем нашу хост-машинку. В этот раз,я выберу др ОС для создания нового (другого) контейнера с VETH сетевым соединением:

# vzctl create 102 --ostemplate centos-6-x86_64 --config vswap-1g

И соответственно настроим:

# vzctl set 102 --save --onboot yes # vzctl set 102 --save --hostname centos6.for_test.com

задание VETH-соединения

# vzctl set 102 --save --netif_add eth0,FE:FF:FF:FF:FF:FF # vzctl set 102 --save --nameserver 8.8.8.8 --nameserver 8.8.4.4 # vzctl set 102 --save --cpus 1 # vzctl set 102 --save --ram 2G # vzctl set 102 --save --swap 1G # vzctl set 102 --save --diskspace 10G # vzctl start 102 # vzctl exec 102 passwd

Создадим новый конфиг для нашей сети нового контейнера и ребутнем сеть:

# cat << _EOF_ > /vz/root/102/etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE="eth0" HOSTNAME="centos6" IPV6INIT="no" MTU="1500" TYPE="Ethernet" ONBOOT=yes BOOTPROTO=static IPADDR=192.168.244.32 NETMASK=255.255.255.0 GATEWAY=192.168.244.1 _EOF_ # vzctl exec 102 /etc/init.d/network restart

Учтите что для Ubuntu/Debian все настройки сети хранятся в /etc/network/interfaces:

# cat << _EOF_ > /vz/root/102/etc/network/interfaces auto lo eth0 iface lo inet loopback iface eth0 inet static address 192.168.244.32 netmask 255.255.255.0 gateway 192.168.244.1 _EOF_ # vzctl exec 102 /etc/init.d/networking restart

В результате сетевое соединение (VETH) мы имеем:

А когда я настраивал VENET было вот так:

Управление контейнерами или их квотами выполняется через программу vzctl. Напишу нужные команды: Запуск $CTID контейнера

# vzctl start $CTID

Прекращение работы контейнера

# vzctl stop $CTID

Ребут контейнера

# vzctl restart $CTID

Удаления контейнера, но до этого нужно остановить его

# vzctl destroy $CTID

Запуск команды в контейнере

# vzctl exec $CTID command

Логин в консоль контейнера $CTID через хост — машину

# vzctl enter $CTID

Настройки опций для виртуальной машины

# vzctl set $CTID different_options --save

Если есть нужда в настройках квоты для ваши контейнеров без перегрузки, то ограничить объем HDD и количество инод можно так (синтаксис задания такой software_limit:hardware_limit):
1000000 — это приблизительно 1GB

# vzctl set 101 --diskspace 1000000:1100000 --save

Задаем количество дисковых инод.

# vzctl set 101 --diskinodes 90000:91000 --save

Задаем время на которое можно поднять квоту до hardware limit

# vzctl set 101 --quotatime 600 --save

Если есть необходимость,то можно перенастроить приоритет ввода/вывода (disk I/O) на HDD. Самый высокий — это уровень 7, низкий - это 0. По дефолту disk I/O установлен на 4, но можно это и поправить:

# vzctl set 101 --ioprio 6 --save

Проверяем:

# grep IOPRIO /etc/vz/conf/101.conf IOPRIO = " 6"

Если есть необходимость то легко можно поправить (увеличить или уменьшить) количество ядер до 4 на новом контейнере:

# vzctl set 101 --cpus 4 --save

Если на самой хост-системе будет меньше ядер чем в контейнере, то желаемых изменений не увидите. Установить количество RAM и SWAP-а можно следующим образом:

# vzctl set 101 --physpages 256M --save # vzctl set 101 --swappages 384M --save

Чтобы увидеть все контейнеры и их статус можно запустить утилиту vzlist:

Хочу рассказать о дампах в контейнерах. Чтобы это сделать нужна утилита vzdump. Она с легкостью может почти без стопа вашего контейнера копировать/мигрировать/бекапить контейнер. Но для начала нужно установить:

# rpm -ivh "http://ftp.openvz.org/contrib/utils/vzdump/vzdump-1.2-4.noarch.rpm"

А пользоваться ею можно так:

vzdump —suspend 102

Можно легко отресторить дамп в новую машину с новым CTID:

Установка OpenVZ на CentOS окончена! Рассказал что знал и собрал много материала до кучи! Если есть вопросы, пишите. Если вы хотите графический интерфейс для того чтобы хорошо работать с вашими виртуальными машинами то используйте Proxmox или OpenVZ Web Panel.



Есть вопросы?

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: