Linux openvz что это

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

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

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

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

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

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

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

Сначала надо добавить репозиторий OpenVZ в систему. Для этого создайте новый файл в папке /etc/apt/sources.list.d/:

sudo vi /etc/apt/sources.list.d/openvz.list

deb [trusted=yes] http://download.openvz.org/debian wheezy main

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

wget -qO — http://ftp.openvz.org/debian/archive.key | sudo apt-key add —

Ключ с 2017 года недействительный и разработчики, похоже не собираются его обновлять, поэтому надо использовать опцию —allow-unauthenticated. Обновим списки пакетов:

sudo apt —allow-unauthenticated update

Дальше установим ядро с поддержкой OpenVZ:

sudo apt install —allow-unauthenticated linux-image-openvz-amd64

sudo apt install —allow-unauthenticated linux-image-openvz-686

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

sudo vi sysctl.conf

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
kernel.sysrq = 1
net.ipv4.conf.default.send_redirects = 1
net.ipv4.conf.all.send_redirects = 0

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

sudo apt install vzctl vzquota ploop vzstats

Установка OpenVZ на Ubuntu 20.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:

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

Читайте также:  Обновление windows 10 до 2004 нужно ли

Выводы

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

Источник

Настройка и команды OpenVZ

OpenVZ — это реализация технологии виртуализации на уровне операционной системы, которая базируется на ядре Linux. OpenVZ позволяет на одном физическом сервере запускать множество изолированных копий операционной системы, называемых Виртуальные Частные Серверы (Virtual Private Servers, VPS) или Виртуальные Среды (Virtual Environments, VE).

Поскольку OpenVZ базируется на ядре Linux, в отличие от виртуальных машин (напр. VMware) или паравиртуализационных технологий (напр. Xen), в роли «гостевых» систем могут выступать только дистрибутивы Linux. Однако, виртуализация на уровне операционной системы в OpenVZ даёт лучшую производительность, масштабируемость, плотность размещения, динамическое управление ресурсами, а также лёгкость в администрировании, чем у альтернативных решений. Согласно сайту OpenVZ, накладные расходы на виртуализацию очень малы, и падение производительности составляет всего 1-3 %, по сравнению с обычными Linux-системами. OpenVZ является базовой платформой для Virtuozzo — проприетарного продукта Parallels, Inc. OpenVZ распространяется на условиях лиценции GNU GPL v.2. OpenVZ состоит из модифицированного ядра Linux и пользовательских утилит.

OpenVZ — это технология ядра Linux, позволяющая запускать несколько виртуальных частных серверов (VPS) на одном физическом компьютере. Каждый из серверов при этом выглядит как отдельный сервер с отдельными доступом root, IP-адресом, таблицей процессов, файловой системой, правилами брандмауэра и т. д. От средств полной виртуализации вроде Xen или VMWare эту программу отличает то, что в каждом экземпляре VPS используется одна и та же разделяемая копия ядра Linux. По этому, например, с OpenVZ нельзя загрузить экземпляр Windows 7 и экземпляр RedHat, и нельзя загружать модули ядра независимо в каждый VPS. Но «пространство пользователя» в каждом VPS может быть разным, поэтому можно, например, запустить CentOS и SUSE рядом на одном и том же ядре. Это эффективное решение, и можно создать достаточно полную иллюзию отдельно администрируемых компьютеров, чтобы удовлетворить пользователей, которые не хотят много платить за хостинг-услуги.

Ядро OpenVZ — это модифицированное ядро Linux, которое обеспечивает виртуализацию, изоляцию, управление ресурсами и чекпоинтинг (сохранение текущего состояния VE).

Источник

Записки программиста

Контейнерная виртуализация при помощи OpenVZ

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

Мотивация

В отношении OpenVZ справедливо следующее:

  • С точки зрения пользователя контейнеры выглядят, как полноценные VDS со своими дисками и сетевыми интерфейсами. Никаких «слоеных» ФС, никаких коллизий номеров портов на хост-системе, и так далее. Действительно очень удобно;
  • Накладные расходы на контейнеризацию оцениваются в 1-3%, что очень мало, особенно если вспомнить о накладных расходах в Docker при работе с диском;
  • Очень гибкая настройка того, какому контейнеру сколько и каких ресурсов выделяется. CPU, память, диск, сеть — все под вашим контролем;
  • Существуют веб-панели, например, OpenVZ Web Panel и Proxmox (UPD: Proxmox перешел на LXC), благодаря которым можно за пол дня поднять AWS на собственном железе. Это может быть оправдано не только с точки зрения безопасности, но и в связи с последними изменениями в российском законодательстве. Плюс вы сможете менять все квоты на лету, у вас не будет ограничений в стиле «держите все данные на сетевых дисках (EBS)» и так далее;
  • OpenVZ уже много лет используется в Parallels, Яндексе, FastVPS, Atlassian, Pixar, Travis CI, WarGaming и ряде других компаний;
Читайте также:  Kali linux не устанавливается virtualbox

Как любая технология контейнерной виртуализации, OpenVZ имеет и ряд ограничений. Вы можете запускать в контейнерах различные дистрибутивы Linux, но не можете запустить Winodws или FreeBSD. Также, например, нельзя загрузить в контейнере произвольный модуль ядра. Такова плата за малые накладные расходы на виртуализацию.

Установка OpenVZ

Официальный сайт рекомендует ставить OpenVZ на СentOS или RHEL. Debian или Ubuntu также поддерживаются, но далее мы будем следовать рекомендации и воспользуемся CentOS 6. Должен предостеречь вас от желания поставить OpenVZ на ноутбук с Ubuntu. В OpenVZ используется собственная сборка ядра Linux, в результате чего, скажем, может отвалиться какое-то железо. Хотя попробовать ничего не мешает, так как вы всегда сможете переключиться на старое ядро. Кстати, чтобы поиграться с OpenVZ, совсем не обязательно использовать отдельный комьютер. OpenVZ отлично работает под Vagrant.

OpenVZ хранит все контейнеры в каталоге /vz. Допустим, есть контейнер с номером 100. Сам контейнер будет лежать в каталоге /vz/private/100/. Когда контейнер запущен, его файловую систему можно найти в каталоге /vz/root/100. А вот настройки контейнеров лежат не в /vz, для контейнера 100 их следует искать в файле /etc/vz/conf/100.conf. Таким образом, перед установкой OpenVZ рекомендуется соответствующим образом разбить диск, ну или хотя бы создать линк /vz туда, где побольше свободного места.

# 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 нужно отключить, правим /etc/sysconfig/selinux:

После перезагрузки uname -a покажет ту же версию ядра, что мы видели при установке пакета vzkernel. У меня это 2.6.32-042stab111.12 .

Вот и все! Не так уж и сложно, согласны?

Основные команды

Важно! Контейнеры должны иметь номера 100 или больше. Прочие номера зарезервированы. В частности, с ними может отказаться работать утилита vzdump, речь о которой пойдет ниже.

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

Источник

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

На Хабре есть много статей о том, что контейнерная виртуализация — это плохо или хорошо, но пошаговой интструкции по ее установке и настройке мне найти не удалось. Постараюсь заполнить этот пробел.

Виртуализация — очень актуальная тема, так как позволяет более рационально использовать ресурсы сервера. И, признаюсь, мне было очень приятно познакомиться с OpenVZ.

OpenVZ — это реализация технологии виртуализации на уровне операционной системы, которая базируется на ядре Linux. OpenVZ позволяет на одном физическом сервере запускать множество изолированных копий операционной системы, так называемых контейнеров (Virtual Environments, VE).

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

Конечно, и недостатков достаточно. Главный из них, что в отличие от KVM, модули OpenVZ не входят в ванильное ядро, поэтому для фунционування последнего необходимо отдельное ядро и версия его далеко не последняя. На момент публикации этой статьи последняя стабильная версия — 2.6.32-042stab084.14. Из этого по сути следует, что хост-системой на OpenVZ может выступать не каждый дистрибутив, а только с ядром 2.6.32 и около версии. Поэтому, скажем, OpenVZ — ядро под Ubuntu 12.04 LTS вряд ли заведется (что я уже попробовал), ведь ядро здесь версии 3.8. Но не все так плохо, так как для RedHat 6 (CentOS 6, Scientific Linux 6) и Debian 7 все просто устанавливается и эти дистрибутивы официально поддеживаются Parallels.

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

Читайте также:  Как определить звуковой драйвер windows

Теория без практики — мертва, поэтому самое время описать установку и настройку хост-системы для OpenVZ. В качестве хост-системы я выбрал CentOS 6.5. Добавляем репозитории для установки ядра OpenVZ и утилит для работы с контейнерами:

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

Официальный мануал говорит, что с vzctl от версии 4.4 настройки параметров ядра ( /etc/sysctl.conf ) не обязательно.

Перегружаемся и проверяем версию ядра:

Если версия такая же — то все сделано верно, иначе следует проверить какое именно ядро загружает GRUB. Переходим к созданию контейнера:

Темплейт для создания контейнера с Debian 7 будет загружен с сайта OpenVZ и установлен.

Зададим конфигурацию новому контейнеру:

Таким образом был создан контейнер на Debian 7. Для связи с внешним миром было настроено VENET-соединения.

В дальнейшем можно несколько исправить конфигурацию контейнера, отредактировав конфигурационный файл:

Физически контейнер находится по адресу /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:

А eth0 перенастраиваем следующим образом:

Предварительно eth0 в этом примере имел статический IP 192.168.1.30.

Создаем /etc/vz/vznet.conf с таким содержанием:

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

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

Зададим конфигурацию сети нового контейнера и перезапустим сеть:

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

В результате сетевое соединение ( VETH ) должно выглядеть следующим образом:

Когда VENET так:

Управление контейнерами или их квотами производится через утилиту vzctl. Опишу наиболее популярные команды:

Конечно, также есть возможность настройки квот для каждого из контейнеров без их перегрузки.
Ограничение обьема диска и количества инод происходит следующим образом (синтаксис задания такой software_limit:hardware_limit ):

Также можно настроить приоритет дискового ввода/вывода ( disk I/O). Высокий уровень 7, самый низкий — 0. По умолчанию disk I/O устанавливается в 4, однако это можно изменить:

Так можно увеличить/уменьшить кол-во ядер до 3, что будет использовать контейнер:

Если хост-система имеет меньше ядер — то конечно желаемые изменения не произойдут.
Установка количества оперативной и swap-памяти происходит таким образом:

Подробнее о квотах можно почитать по адресу openvz.org/User_Guide/Managing_Resources
Для просмотра всех контейнеров и их состояний можно воспользоваться утилитой vzlist:

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

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

И сразу есть возможность отресторить дамп в новую машину с новым CTID:

Для удобного управления виртуальными машинами могу посоветовать Proxmox или OpenVZ Web Panel
Кажется, что это все о чем хотел написать. Не стесняйтесь писать комментарии, если возникли какие-то вопросы.

Источник

Оцените статью