hostprofi.ru
Подобрать хостинг
Термин·буква O

OpenVZ

краткое определение

OpenVZ — технология контейнерной виртуализации на уровне ОС для Linux: несколько изолированных контейнеров используют одно ядро ОС хоста. Дешевле и легче KVM, но гостевая ОС должна быть Linux той же архитектуры.

OpenVZ (Open Virtuozzo) — технология виртуализации на уровне операционной системы для Linux. В отличие от KVM или Xen, OpenVZ не создаёт виртуальные машины с отдельным ядром — все контейнеры используют одно ядро хостовой ОС. Это делает контейнеры OpenVZ лёгкими и быстрыми, но накладывает ограничения: нельзя запускать Windows или дистрибутивы с другой версией ядра.

Архитектура OpenVZ

Ядро Linux с патчами OpenVZ поддерживает создание изолированных контейнеров (VE — Virtual Environment). Каждый контейнер имеет: собственное дерево процессов (PID-пространство), сетевые интерфейсы, файловую систему, пользователей. Контейнеры изолированы через механизмы ядра: namespaces, cgroups, SELinux/AppArmor. Нет аппаратной виртуализации — процессор использует native execution без VM Entry/Exit.

Производительность OpenVZ-контейнера практически равна нативной системе: накладные расходы менее 1–2% против 2–5% у KVM. Поэтому провайдеры на OpenVZ могут продавать контейнеры с более высоким оверкоммитом ресурсов, что снижает стоимость VPS.

OpenVZ vs KVM

Принципиальные отличия: OpenVZ требует Linux в контейнере, KVM поддерживает любую ОС (Windows, BSD, Linux). OpenVZ: ядро одно для всех контейнеров — уязвимость в ядре затрагивает все контейнеры. KVM: каждая ВМ имеет изолированное ядро. OpenVZ не поддерживает Docker внутри контейнера без специальных настроек — Docker требует контроля над cgroups, что конфликтует с OpenVZ. KVM не имеет этого ограничения.

На практике: OpenVZ-VPS дешевле на 20–50% при аналогичных характеристиках. Большинство бюджетных VPS (до $5/мес.) работают на OpenVZ или Virtuozzo.

Virtuozzo и OpenVZ 7

OpenVZ — open-source ветка проекта Parallels/Virtuozzo. Virtuozzo — коммерческая версия с расширенным управлением и поддержкой. OpenVZ 7 (2016) добавил поддержку CRIU (Checkpoint/Restore), что позволяет мигрировать контейнеры без остановки. OpenVZ 8 поддерживает virt-manager и более тесную интеграцию с KVM на одном хосте.

Ограничения OpenVZ

Нельзя загрузить нестандартное ядро в контейнере — только ядро хоста. Невозможно использовать загрузчики GRUB, запускать инструменты, требующие полного контроля над ядром (kprobes, ebpf с ограничениями). Запуск Docker работает только при разрешении провайдером специальных флагов cgroups. IPv6 требует поддержки на уровне хоста.

История

OpenVZ разработан компанией SWsoft (позже Parallels) в 2005 году. Открытый исходный код опубликован в 2005 году. Технология стала основой для Virtuozzo — коммерческого продукта. В 2014 году Parallels выделила серверный бизнес в отдельную компанию Odin, которая позже слилась с Virtuozzo Ltd. OpenVZ 7 выпущен в 2016 году. Проект активен, поддерживается сообществом.

OpenVZ и Docker

Запуск Docker внутри OpenVZ-контейнера возможен только если провайдер разрешил CAP_NET_ADMIN, CAP_SYS_ADMIN и вложенные cgroups. Большинство бюджетных провайдеров этого не делают из соображений безопасности. На практике: если нужен Docker, выбирай KVM-VPS.

OpenVZ-VPS не позволяет: загружать кастомные модули ядра, менять параметры ядра через sysctl (если не разрешено провайдером), использовать FUSE-файловые системы, запускать задачи с требованием CAP_SYS_RAWIO. Для 90% веб-задач эти ограничения несущественны — WordPress, Bitrix, Node.js, Python-приложения работают без проблем.

Как определить тип виртуализации VPS

Из гостевой ОС: systemd-detect-virt (выводит «openvz», «kvm», «xen» и т.д.), cat /proc/user_beancounters — файл существует только в OpenVZ, virt-what — утилита для определения типа виртуализации. Значение имеет для: настройки swap (OpenVZ использует виртуальный swap иначе), оптимизации ядра сетевого стека, понимания доступных функций. В Proxmox VE на одном хосте могут работать как OpenVZ/LXC-контейнеры, так и KVM-ВМ.

Другие термины