Блог / Статьи

Полезная информация для вашего хостинга

OpenVZ 7 на CentOS Stream 9: Путь к легковесной контейнерной виртуализации

OpenVZ 7 на CentOS Stream 9: Путь к легковесной контейнерной виртуализации

В эпоху, когда облачные технологии, микросервисы и DevOps-практики стали неотъемлемой частью ИТ-ландшафта, выбор подходящей системы виртуализации приобретает стратегическое значение. Если раньше для изоляции сервисов использовались тяжеловесные виртуальные машины, то сегодня всё чаще предпочтение отдаётся более гибким и экономичным решениям — контейнерам. И в этом контексте OpenVZ 7, основанный на промышленной платформе Virtuozzo, остаётся одним из самых зрелых и проверенных инструментов для создания изолированных, но эффективных окружений на базе Linux.

В отличие от Docker или Podman, ориентированных на запуск отдельных приложений, OpenVZ предлагает полную системную изоляцию: каждый контейнер ведёт себя как полноценный Linux-сервер с собственным init-процессом, сетевым стеком и файловой системой. Это делает OpenVZ идеальным решением для хостинга, тестирования инфраструктурных решений, развертывания VPS или даже организации внутренней лаборатории разработки.

В этой статье мы погрузимся в детали установки и настройки OpenVZ 7 на современной платформе — CentOS Stream 9. Мы пройдём путь от подготовки чистого сервера до создания, управления и резервного копирования первого контейнера, раскрывая ключевые термины, стратегии и практические рекомендации на каждом этапе.

openvz04

Подготовка арены: базовые требования и начальная конфигурация сервера

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

Аппаратные требования:

  • Процессор с поддержкой аппаратной виртуализации (Intel VT-x или AMD-V). Это критически важно, так как OpenVZ использует модифицированное ядро Linux, которое опирается на эти технологии для эффективного управления ресурсами.
  • Минимум 4 ГБ оперативной памяти. Хотя теоретически можно запустить OpenVZ и с меньшим объёмом RAM, для стабильной работы нескольких контейнеров и хост-системы рекомендуется именно такой объём.
  • Свободное дисковое пространство — не менее 20 ГБ. Это необходимо для установки ядра, инструментов и шаблонов контейнеров.

Проверить поддержку аппаратной виртуализации можно следующей командой:

grep -E 'vmx|svm' /proc/cpuinfo

Если вывод содержит строки с vmx (Intel) или svm (AMD), значит, виртуализация поддерживается.

Теперь обновим систему и установим базовые утилиты, которые понадобятся в процессе:

sudo dnf update -y
sudo dnf install -y wget vim net-tools curl

Здесь мы обновляем все пакеты до актуальных версий и устанавливаем:

  • wget — для загрузки файлов из интернета;
  • vim — мощный текстовый редактор для правки конфигураций;
  • net-tools — набор сетевых утилит (включая ifconfig и route);
  • curl — альтернативный инструмент для работы с HTTP/HTTPS.

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

sudo setenforce 0
sudo sed -i 's/^SELINUX=enforcing/SELINUX=permissive/' /etc/selinux/config

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

OpenVZ 7 сегодня развивается в рамках проекта Virtuozzo — коммерческой платформы виртуализации, которая предоставляет как бесплатные, так и премиальные компоненты. Для установки OpenVZ на CentOS Stream 9 необходимо подключить официальный репозиторий Virtuozzo, содержащий все необходимые пакеты: ядро, утилиты управления, шаблоны ОС и документацию.

Скачиваем и устанавливаем RPM-пакет с метаданными репозитория:

sudo wget https://repo.virtuozzo.com/vzlinux/vzlinux-release-latest.noarch.rpm
sudo rpm -ivh vzlinux-release-latest.noarch.rpm

Этот пакет добавляет файлы конфигурации репозиториев в каталог /etc/yum.repos.d/, включая основной репозиторий vzlinux и дополнительные каналы для обновлений и шаблонов.

После подключения репозитория обновляем кэш пакетов и систему:

sudo dnf clean all
sudo dnf makecache
sudo dnf update -y

Этот шаг гарантирует, что при установке OpenVZ будут использованы самые свежие версии компонентов, совместимые с CentOS Stream 9.

Ядро, инструменты и служба: установка компонентов OpenVZ

OpenVZ требует специального ядра — vzkernel, которое содержит патчи для поддержки контейнеров, cgroups, изоляции процессов и управления ресурсами. Без этого ядра контейнеры просто не запустятся.

Устанавливаем необходимые пакеты:

sudo dnf install -y prlctl prl-disp-service vzkernel vzctl vzquota

Разберём назначение каждого компонента:

  • vzkernel — модифицированное ядро Linux с поддержкой OpenVZ;
  • vzctl — основная утилита командной строки для создания, запуска и управления контейнерами;
  • vzquota — инструмент для контроля дисковых квот контейнеров;
  • prlctl — расширенная утилита управления, часть экосистемы Virtuozzo, поддерживающая снапшоты и миграцию;
  • prl-disp-service — служба для интеграции с графическими интерфейсами и API (опционально, но рекомендуется).

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

sudo grubby --info=ALL | grep vzkernel

Если команда возвращает путь к файлу ядра (например, /boot/vmlinuz-5.14.0-284.11.1.vz7.18.11.x86_64), значит, всё в порядке.

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

sudo reboot

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

uname -r

В выводе должно содержаться слово vz или vz7.

Сетевая архитектура контейнеров: настройка взаимодействия с внешним миром

Одна из ключевых задач при настройке OpenVZ — обеспечение сетевой изоляции и маршрутизации. По умолчанию контейнеры используют виртуальные сетевые интерфейсы (venet или veth), которые должны быть правильно настроены на хосте.

Сначала проверим статус службы OpenVZ:

sudo systemctl status vz

Служба vz должна быть активна и запущена.

Основной конфигурационный файл OpenVZ находится по пути /etc/vz/vz.conf. Откроем его для редактирования:

sudo vim /etc/vz/vz.conf

Важные параметры, которые стоит настроить:

NEIGHBOUR_DEVS=all
VZPRIVATEDIR=/vz/private
VZPUBLICDIR=/vz/public
IPTABLES="ipt_REJECT ipt_tos ipt_limit ipt_multiport iptable_filter iptable_mangle ipt_TCPMSS ipt_tcpmss ipt_ttl ipt_length"
Разберём их:

 

  • NEIGHBOUR_DEVS=all — разрешает контейнерам использовать все сетевые интерфейсы хоста для связи;
  • VZPRIVATEDIR и VZPUBLICDIR — пути к каталогам с приватными и публичными данными контейнеров;
  • IPTABLES — список модулей iptables, доступных внутри контейнеров. Без этого параметра контейнеры не смогут управлять своими собственными правилами фаервола.

Также убедитесь, что на хосте включена IP-маршрутизация:

echo 'net.ipv4.ip_forward = 1' | sudo tee -a /etc/sysctl.conf
sudo sysctl -p

Если вы планируете использовать NAT для выхода контейнеров в интернет, настройте маскарадинг:

sudo firewall-cmd --permanent --add-masquerade
sudo firewall-cmd --reload

openvz02

Первый шаг в мир контейнеров: создание и запуск тестового окружения

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

Сначала установим шаблон CentOS Stream 9:

sudo vzpkg install centos-stream9

Эта команда загружает шаблон из репозитория и распаковывает его в каталог /vz/template/cache/.

Создаём контейнер с ID 101:

sudo vzctl create 101 --ostemplate centos-stream9 --hostname testserver.local

Назначаем ему IP-адрес и сохраняем конфигурацию:

sudo vzctl set 101 --ipadd 192.168.0.101 --save

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

sudo vzctl start 101

Проверяем статус:

sudo vzlist

В выводе вы увидите ID, статус (running), IP-адрес и имя хоста контейнера.

Чтобы войти внутрь контейнера, используйте:

sudo vzctl enter 101

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

Повседневное управление: команды, стратегии и лучшие практики

Управление контейнерами в OpenVZ осуществляется преимущественно через утилиту vzctl. Ниже приведены наиболее часто используемые команды:

  • Запуск контейнера: sudo vzctl start 101
  • Остановка: sudo vzctl stop 101
  • Перезапуск: sudo vzctl restart 101
  • Вход в контейнер: sudo vzctl enter 101
  • Просмотр всех контейнеров (включая остановленные): sudo vzlist -a
  • Удаление контейнера: sudo vzctl destroy 101

Кроме того, можно управлять ресурсами:

sudo vzctl set 101 --ram 2G --swap 1G --cpus 2 --save

Эта команда ограничивает контейнер 2 ГБ оперативной памяти, 1 ГБ свопа и двумя CPU-ядрами.

Для мониторинга нагрузки используйте:

sudo vzstat

OpenVZ также поддерживает снапшоты через утилиту prlctl:

sudo prlctl snapshot 101 --name "before-update"

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

Защита данных: стратегии резервного копирования контейнеров

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

Создадим резервную копию контейнера 101:

sudo mkdir -p /backups
sudo vzdump 101 --compress lzo --dumpdir /backups/

Параметры:

  • --compress lzo — использует быстрый алгоритм сжатия LZO (можно заменить на gzip или bzip2);
  • --dumpdir — каталог для хранения резервных копий.

В результате в каталоге /backups/ появится файл вида vzdump-101-2025_10_30-12_00_00.tar.lzo.

Для автоматизации можно создать cron-задачу:

echo "0 2 * * * root /usr/sbin/vzdump 101 --compress lzo --dumpdir /backups/ --quiet" | sudo tee /etc/cron.d/vz-backup

Это будет ежедневно делать бэкап в 2 часа ночи.

Восстановление контейнера из резервной копии выполняется через утилиту vzrestore или вручную — распаковкой архива в соответствующий каталог и регистрацией через vzctl.

openvz03

Заключение: почему OpenVZ 7 остаётся актуальным выбором в 2025 году

Несмотря на рост популярности Docker, Kubernetes и других оркестраторов, OpenVZ 7 продолжает оставаться востребованным решением для задач, где важна полная системная изоляция, низкие накладные расходы и простота администрирования. Установка на CentOS Stream 9 открывает доступ к современным возможностям Linux: поддержке systemd, cgroups v2, обновлённым версиям ядра и безопасности SELinux/AppArmor.

OpenVZ 7 — это не просто «старая» технология, а зрелая, стабильная и производительная платформа, которая идеально подходит для:

  • Хостинг-провайдеров, предлагающих хостинг для VPS;
  • Компаний, желающих изолировать внутренние сервисы без перерасхода ресурсов;
  • Инженеров, тестирующих конфигурации в изолированных средах;
  • Образовательных проектов и лабораторий.

Следуя инструкциям из этой статьи, вы сможете развернуть полноценную OpenVZ-инфраструктуру на CentOS Stream 9, создавать, управлять и защищать контейнеры с минимальными усилиями. А благодаря открытой архитектуре и совместимости с современными стандартами Linux, ваша система будет оставаться актуальной ещё долгие годы.

Помните: контейнеризация — это не просто технология, а философия эффективного использования ресурсов. И OpenVZ 7 — один из самых элегантных способов воплотить эту философию в жизнь.