OpenVZ vs KVM vs Xen - объяснение технологий виртуализации

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

Обзор виртуализации и контейнеризации

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

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

Архитектура гипервизора второго типа

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

Общая архитектура системы контейнеризации

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

Xen и KVM - это технологии виртуализации, тогда как OpenVZ - это технология контейнеризации на базе Linux.

OpenVZ

OpenVZ (или Open Virtuozzo) - это платформа контейнеризации Linux-систем, которая позволяет запускать ОС на базе Linux в одной хост-системе с общим ядром.

Контейнеры ведут себя как независимые Linux-системы, с доступом на уровне root и изоляцией на уровне файлов, пользователей/групп, процессов и сетей.

Поставщики серверов предоставляют контейнеры OpenVZ с определенным количеством оперативной памяти, процессорных ядер, места на жестком диске и продают их как Linux VPS. Часть ресурсов процессора/памяти "выделена" контейнеру, а часть "разрывается" - если контейнеру требуется дополнительное количество процессора/памяти, помимо того, что ему было выделено, он может временно взять их из неиспользуемых ресурсов других контейнеров.

Поскольку OpenVZ использует общее ядро, невозможно изменить настройки ядра, обновить ядро или использовать дополнительные модули ядра. Многие провайдеры используют OpenVZ 6, который использует старое ядро Linux 2.6. Таким образом, вы упускаете преимущества в производительности и новые функции более новых ядер, и вы застряли с выбором старых дистрибутивов Linux. В частности, вы не сможете запустить Docker или использовать такие инструменты, как ipset или nftables.

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

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

Xen

Xen - это платформа виртуализации с открытым исходным кодом, которая изначально начиналась как исследовательский проект в Кембриджском университете. В настоящее время Linux Foundation помогает в развитии проекта.
С помощью различных инструментов поставщик серверов создает виртуальные машины Xen с фиксированным количеством оперативной памяти, ядер процессора, места на жестком диске и IP-адресов и предлагает их в качестве VPS.

В целом, гипервизоры делятся на гипервизоры типа 1 и типа 2. Гипервизоры первого типа работают непосредственно на хосте, в то время как гипервизоры второго типа работают поверх существующей операционной системы. Xen относится к гипервизорам первого типа.

Поскольку Xen - это технология виртуализации, созданная таким образом ВМ может работать под управлением любой ОС, включая Linux, Windows и BSD. Поскольку каждая ВМ работает под управлением полноценной операционной системы, вы можете обновлять ядро, использовать дополнительные модули ядра или изменять низкоуровневые настройки ядра.

Запуск установки виртуализации сопряжен с большими накладными расходами, поскольку эмуляция определенных аппаратных функций, а также запуск операционной системы требуют больших затрат. Для снижения первых накладных расходов в Xen используется техника, называемая "паравиртуализация". Здесь гипервизор предоставляет альтернативные способы выполнения одних и тех же аппаратных операций с большей производительностью. Если гостевая ОС знает, как использовать эти альтернативные интерфейсы, она выполняет "гипервызов", чтобы обратиться к гипервизору. Такой режим работы называется паравиртуализацией Xen (Xen-PV).

Когда гостевая ОС поддерживает паравиртуализацию, используется другой подход, называемый Xen Hardware Virtual Machine (Xen-HVM). В этом режиме Xen использует QEMU для обеспечения полной аппаратной эмуляции. Чтобы использовать Xen-HVM, аппаратная виртуализация должна быть обеспечена хост-системой.

KVM

KVM (Kernel Virtual Machine) - это модуль ядра Linux, который обеспечивает основу для сторонних инструментов (таких как QEMU) для виртуализации. Поскольку это модуль ядра, KVM повторно использует многие функции ядра Linux для своих целей.

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

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

KVM работает только на оборудовании, поддерживающем аппаратную виртуализацию. Подобно Xen, KVM также обеспечивает паравиртуализацию для устройств ввода-вывода через API "virtio".

Какую платформу выбрать?

Выбор платформы в конечном итоге зависит от ваших потребностей. Если вам нужен недорогой Linux-сервер и вас не беспокоит старая версия ядра и невозможность использовать такие инструменты, как Docker, вы можете использовать OpenVZ. Если вам нужна другая ОС, например, Windows, или вы хотите использовать более современное ядро Linux, вам следует выбрать KVM или Xen.

Из-за функции "burst" в OpenVZ многие провайдеры перераспределяют свои системы, чтобы разместить как можно больше VPS на одном хосте. Поэтому, если слишком много VPS будут одновременно требовать CPU/памяти, вы получите заметное снижение производительности VPS.

Есть много провайдеров, которые рекламируют свои предложения KVM/Xen как имеющие "выделенные ресурсы", но, к сожалению, это не всегда так. И KVM, и Xen предлагают функцию "раздувания памяти", когда память, неиспользуемая VPS, может быть востребована другим VPS. В каждом VPS установлен драйвер раздувания памяти, который помогает в этом процессе. Когда гипервизор забирает память у вашего VPS, внутри вашего VPS создается впечатление, что драйвер ballooning забирает вашу память. Однако VPS никогда не может получить больше памяти, чем ему было выделено изначально.

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

Поэтому, чтобы действительно понять "производительность" VPS, вы всегда должны использовать инструменты бенчмаркинга, такие как bench.sh, speedtest-cli или Geekbench. Кроме того, перед покупкой VPS на базе какой-либо технологии - OpenVZ, KVM или Xen, полезно ознакомиться с ценами и тем, что говорят о компании другие люди. У провайдера с заниженными ценами или плохой репутацией будут плохо работающие VPS, независимо от используемой технологии.

Понравилась статья? Поделиться с друзьями:
Добавить комментарий