ОпенВЗ
этой статьи Начальный раздел может быть слишком коротким, чтобы адекватно суммировать ключевые моменты . ( март 2024 г. ) |
![]() | |
![]() | |
Разработчик(и) | Virtuozzo и OpenVZ Сообщество |
---|---|
Первоначальный выпуск | 2005 г |
Репозиторий | |
Написано в | С |
Операционная система | Линукс |
Платформа | х86 , х86-64 |
Доступно в | Английский |
Тип | Виртуализация на уровне ОС |
Лицензия | лицензия GPLv2 |
Веб-сайт | openvz |
OpenVZ ( Open Virtuozzo ) — технология виртуализации на уровне операционной системы для Linux . Это позволяет физическому серверу запускать несколько изолированных экземпляров операционной системы, называемых контейнерами, виртуальными частными серверами (VPS) или виртуальными средами (VE). OpenVZ похож на Solaris Containers и LXC .
с другими технологиями виртуализации по сравнению OpenVZ
В то время как технологии виртуализации, такие как VMware , Xen и KVM, обеспечивают полную виртуализацию и могут работать с несколькими операционными системами и разными версиями ядра, OpenVZ использует одно ядро Linux и, следовательно, может работать только с Linux. Все контейнеры OpenVZ имеют одну и ту же архитектуру и версию ядра. Это может быть недостатком в ситуациях, когда гостям требуются версии ядра, отличные от версии хоста. Однако, поскольку он не имеет накладных расходов настоящего гипервизора , он очень быстр и эффективен. [1]
Распределение памяти с помощью OpenVZ является мягким, поскольку память, не используемая в одной виртуальной среде, может использоваться другими или для кэширования диска . В то время как старые версии OpenVZ использовали общую файловую систему (где каждая виртуальная среда представляет собой просто каталог файлов, изолированный с помощью chroot ), текущие версии OpenVZ позволяют каждому контейнеру иметь собственную файловую систему. [2]
Ядро [ править ]
Ядро OpenVZ — это ядро Linux , модифицированное для добавления поддержки контейнеров OpenVZ. Модифицированное ядро обеспечивает виртуализацию, изоляцию, управление ресурсами и контрольные точки . Начиная с vzctl 4.0, OpenVZ может работать с непропатченными ядрами Linux 3.x с ограниченным набором функций. [3]
Виртуализация и изоляция [ править ]
Каждый контейнер представляет собой отдельный объект и ведет себя во многом так же, как физический сервер. У каждого свои:
- Файлы
- Системные библиотеки , приложения , виртуализированные
/proc
и/sys
, виртуализированные блокировки и т. д. - Пользователи и группы
- Каждый контейнер имеет своего собственного пользователя root , а также других пользователей и группы .
- Дерево процессов
- Контейнер видит только свои процессы (начиная с
init
). PID виртуализированы, поэтому PID инициализации равен 1, как и должно быть. - Сеть
- Виртуальное сетевое устройство , позволяющее контейнеру иметь собственные IP-адреса , а также набор сетевых фильтров (
iptables
) и маршрутизации . правила - Устройства
- При необходимости любому контейнеру можно предоставить доступ к реальным устройствам, таким как сетевые интерфейсы , последовательные порты , разделы диска и т. д.
- объекты МПК
- Общая память , семафоры , сообщения .
Управление ресурсами [ править ]
Управление ресурсами OpenVZ состоит из четырех компонентов: двухуровневой дисковой квоты, справедливого планировщика ЦП, планировщика дискового ввода-вывода и счетчиков пользовательских компонентов (см. ниже). Эти ресурсы можно изменить во время работы контейнера , что исключает необходимость перезагрузки .
- Двухуровневая дисковая квота
- Каждый контейнер может иметь свои собственные дисковые квоты , измеряемые в дисковых блоках и индексных дескрипторах (приблизительно количестве файлов). Внутри контейнера можно использовать стандартные инструменты UNIX для установки дисковых квот UNIX для каждого пользователя и группы .
- планировщик процессора
- Планировщик ЦП в OpenVZ представляет собой двухуровневую реализацию стратегии справедливого распределения. На первом уровне планировщик решает, какому контейнеру следует предоставить квант времени ЦП, на основе значений процессорных модулей для каждого контейнера . На втором уровне стандартный планировщик Linux решает, какой процесс запустить в этом контейнере, используя стандартные приоритеты процессов Linux. В каждом контейнере можно установить разные значения для процессоров. Реальное время процессора будет распределяться пропорционально этим значениям. Кроме того, OpenVZ предоставляет способы установки строгих ограничений ЦП, например 10% от общего времени ЦП (
--cpulimit
), ограничить количество ядер ЦП, доступных контейнеру (--cpus
) и привязать контейнер к определенному набору процессоров (--cpumask
). [4] - Планировщик ввода-вывода
- Подобно планировщику ЦП, описанному выше, планировщик ввода-вывода в OpenVZ также является двухуровневым и Axboe Jens CFQ на втором уровне использует планировщик ввода-вывода . Каждому контейнеру назначается приоритет ввода-вывода, и планировщик распределяет доступную полосу пропускания ввода-вывода в соответствии с назначенными приоритетами. Таким образом, ни один контейнер не может перегрузить канал ввода-вывода.
- Пользовательские счетчики Beancounters
- User Beancounters — это набор счетчиков, ограничений и гарантий для каждого контейнера, предназначенных для предотвращения монополизации системных ресурсов одним контейнером. В текущих ядрах OpenVZ (042stab* на базе RHEL6) есть два основных параметра, а остальные являются необязательными. [5] Другими ресурсами являются в основном память и различные объекты внутри ядра, такие как сегменты общей памяти межпроцессного взаимодействия и сетевые буферы. Каждый ресурс можно увидеть из
/proc/user_beancounters
и имеет пять связанных с ним значений: текущее использование, максимальное использование (за время существования контейнера), барьер, предел и счетчик сбоев. Значение барьера и предела зависит от параметра; Короче говоря, их можно рассматривать как мягкие и жесткие ограничения. Если какой-либо ресурс достигает предела, счетчик неудач для него увеличивается. Это позволяет владельцу обнаруживать проблемы путем мониторинга /proc/user_beancounters в контейнере.
Контрольные точки и живая миграция [ править ]
Функция динамической миграции и контрольных точек была выпущена для OpenVZ в середине апреля 2006 года. Это позволяет перемещать контейнер с одного физического сервера на другой без выключения контейнера. Этот процесс известен как контрольная точка: контейнер замораживается, и все его состояние сохраняется в файл на диске. Этот файл затем можно перенести на другую машину и там разморозить (восстановить) контейнер; задержка составляет примерно несколько секунд. Поскольку состояние обычно сохраняется полностью, эта пауза может показаться обычной вычислительной задержкой.
Ограничения [ править ]
По умолчанию OpenVZ ограничивает доступ к контейнеру реальными физическими устройствами (таким образом делая контейнер независимым от аппаратного обеспечения). Администратор OpenVZ может разрешить контейнеру доступ к различным реальным устройствам, таким как дисководы, порты USB, [6] PCI-устройства [7] или физические сетевые карты. [8]
/dev/loopN
часто ограничен при развертывании (поскольку кольцевые устройства используют потоки ядра, что может быть проблемой безопасности), что ограничивает возможность монтирования образов дисков. Обходной путь — использовать FUSE .
OpenVZ ограничивается предоставлением только некоторых технологий VPN на основе PPP (например, PPTP/L2TP) и TUN/TAP. IPsec поддерживается внутри контейнеров, начиная с ядра 2.6.32.
Графический пользовательский интерфейс под названием EasyVZ был предпринят в 2007 году. [9] но дальше версии 0.1 дело не продвинулось. До версии 3.4 Proxmox VE можно было использовать в качестве среды виртуализации серверов на базе OpenVZ с графическим интерфейсом, хотя более поздние версии перешли на LXC .
См. также [ править ]
- Сравнение программного обеспечения для виртуализации платформ
- Виртуализация на уровне операционной системы
- Виртуальная среда Proxmox
Ссылки [ править ]
- ^ «Оценка производительности технологий виртуализации для консолидации серверов» . Архивировано из оригинала 15 января 2009 г.
- ^ «Ploop — OpenVZ Linux Containers Wiki» . Архивировано из оригинала 26 марта 2012 г.
- ^ Колышкин, Кир (6 октября 2012 г.). «OpenVZ исполняется 7 лет, подарки доступны!» . Блог OpenVZ . Проверено 17 января 2013 г.
- ^ Справочная страница vzctl(8), раздел параметров планировщика ярмарки ЦП, http://openvz.org/Man/vzctl.8#CPU_fair_scheduler_parameters. Архивировано 14 апреля 2017 г. на Wayback Machine.
- ^ «VSwap — OpenVZ Linux Containers Wiki» . Архивировано из оригинала 13 февраля 2013 г.
- ^ справочная страница vzctl(8), подраздел «Управление доступом к устройствам», http://wiki.openvz.org/Man/vzctl.8#Device_access_management
- ^ Справочная страница vzctl(8), раздел управления устройствами PCI, http://wiki.openvz.org/Man/vzctl.8#PCI_device_management
- ^ man-страница vzctl(8), раздел «Сетевые устройства», http://wiki.openvz.org/Man/vzctl.8#Network_devices_control_parameters
- ^ EasyVZ: Графическое управление для OpenVZ. Фронтенд для бесплатной виртуализации Linux