Сравниваем возможности виртуальных машин

Производительность современных компьютеров давно уже превосходит стандартные потребности большинства организаций и отдельных индивидуумов. И все чаще вместо нескольких серверов место в стойке занимает один единственный, который затем уже «нарезается» на несколько машин. С выбором железа обычно проблем нет, а вот систему виртуализации подобрать ближе к своим задачам сложнее.

VMware ESXi

Все кто работал с виртуальными машинами с начала века, хорошо знает продукты VMware, пользовавшиеся популярностью благодаря своим возможностям и производительностью. Да и сегодня на десктопах не редко можно найти VMware Workstation и VMware Player. Последний появился как ответ MS VirtualPC и является бесплатной версией Workstation. Работает он из под установленной ОС, то есть в промышленной среде не совсем подходит. Для установки на «голое железо» предлагается VMware ESXi – самостоятельный продукт являющийся основой для установки гостевых ОС и совместно с VMware vSphere средством для построения виртуальной инфраструктуры и управления виртуальными ресурсами. По сути ESXi это сильно урезанная версия Linux содержащая гипервизор (VMkernel) и консоли управления vCLI (vSphere CLI), PowerCLI (PowerShell интерфейс к vCLI), SSH и DCUI (Direct Console User Interface).
Ранее ESXi считался “младшим братом” в линейке продуктов VMware. Был бесплатным вариантом урезанным по функциональности другого решения ESX. Но время ESX прошло, следующие версии VMware VSphere будут включать поддержку исключительно ESXi (предложено также его альтернативное название — VMware vSphere Hypervisor), а все преимущества ESX над ESXi сведены на нет. Поэтому разработчики рекомендуют переходить с ESX на ESXi.
Главное отличие ESXi vs ESX состоит в архитектуре. Основой ESX служит полноценная версия Linux, на которую можно устанавливать при необходимости свои приложения, агенты VMware работают через COS (Console OS), то есть через дополнительный уровень. В итоге мы имеем больший размер дистрибутива ~2 Гб, по сравнению с 350 Мб ESXi (на хард ставится всего 70Мб). В ESXi агенты работают прямо в VMkernel, при необходимости модули сторонних разработчиков (мониторинг, драйвера) также выводятся на гипервизор. Уменьшение слоев означает большую надежность и безопасность, меньше возможности для атак. Дистрибутив можно записать на флэшку или вообще вшить в firmware сервера. Из-за особенности официальный список совместимого оборудования у ESXi (clck.ru/9xlp) меньше чем ESX, который поддерживается и старыми серверами, но со временем он увеличится. Кроме этого добровольцами создан неофициальный список компьютеров ESXi Whitebox HCL (clck.ru/9xnD) на которых работает VMware ESXi. Системы из этого списка используются на свой страх и риск, но обычно проблем не возникает.
Продукт от VMware отличает поддержка большого количество гостевых ОС. Здесь полный фарш — Windows, Linux, Solaris, FreeBSD, Netware и многие другие, полный список доступен на сайте.
Функциональность последних релизов ESXi уже «подтянули» под возможности ESX — появилась интеграция с Active Directory (любая учетная запись будет проверяться в каталоге), функции расширенного управления памятью (неиспользованные ресурсы освобождаются), совместная работа с системами хранения данных VMware vStorage VMFS/Storage VMotion и SAN, настройка приоритетов трафика, технология безопасности VMsafe Security API. Гибкое распределение ресурсов позволяет «на горячую» добавить CPU, ОЗУ, жесткий диск, в том числе и изменить размер текущего без перезагрузки. Установка дистрибутива на голое железо очень проста (стандартный вариант с привода или через PXE), с версии 4.1 к тому же поддерживаются сценарии позволяющие автоматизировать процесс инсталляции ПО, настройку сети и подключения к vCenter Server. Через VSphere API интегрировано управления резервного копированием ESXi.
Не маловажно наличие специального конвертера VMware vCenter Converter (vmware.com/products/datacenter-virtualization/converter), позволяющего использовать в ESXi образы MS Virtual Server, Virtual PC, Hyper-V, физические серверы и образы дисковых разделов созданных такими программами как Acronis True Image, Norton Ghost и другими.
Кроме этого помочь в развертывании ESXi может и бесплатный веб-сервис VMware Go (go.vmware.com), позволяющий протестировать физический сервер на совместимость, установить ESXi и создать новые VM.

Microsoft Hyper-V

Технология виртуализации от MS, финальная версия которой выпущена летом 2008 года. С выходом Win2k8R2 Hyper-V получил новые возможности — Live Migration, динамическая память, улучшены ряд инструментов и поддержка оборудования.
Построен Hyper-V по принципу гипервизора с микроядром, и напрямую “общается” с оборудованием сервера на Ring-1. Это уменьшает расходы, благодаря чему достигается высокая скорость работы. Предлагается в двух вариантах — как роль Windows Server 2k8/R2 (доступна в полном варианте и Server Core) или как отдельное решение для установки на «голое железо» — MS Hyper-V Server 2008 R2 (microsoft.com/hyper-v-server). Последний распространяется бесплатно (не требует Client Access License), лицензия понадобится лишь для гостевых Windows. По сути это урезанный вариант Server Core в котором установлена одна роль (без возможности изменения) и ограничены инструменты управления.
Кроме лицензии между разными вариантами Hyper-V есть и другие отличия, но в бесплатном варианте доступно все необходимое для построения сервера виртуализации. Это поддержка технологии Live Migration, консолидация серверов и кластеризации узлов.

Сервер на который устанавливается MS Hyper-V Server может иметь ОЗУ в 1 Тб, и до 8 CPU, чего вполне достаточно для задач небольшой и средней организации.
Параметры гостевой ОС зависят от собственно гостевой ОС. Так официально поддерживаются 32 и 64 битные версии Windows XP SP3, Vista SP2/2k3 SP1/2k8 и Linux (SLES и RHEL). Но в интернет можно найти десяток руководств, в которых описана успешная эксплуатация других версий *nix — Ubuntu, FreeBSD и т.д. Для установки рекомендуется выбирать дистрибутивы Linux с ядром 2.6.32+ в котором добавлена поддержка Hyper-V (LinuxIC, распространяется MS под GPL). Но только гостевые Win2k8 могут быть сконфигурированы с 4 vCPU.
Для установки MS Hyper-V Server потребуется компьютер с x64 CPU поддерживающий технологии Intel VT или AMD-V и минимум 1 Гб RAM.
Для управления большими массивами виртуальных серверов, MS предлагает отдельный продукт System Center Virtual Machine Manager 2008 (SCVMM 2008). Имеющий инструменты для P2V (Physical to Virtual) и V2V конвертировании серверов (с VMware). Опять же в списке поддерживаемых для P2V только Win. Поэтому чтобы перенести свой сервак работающий на Linux придется выбрать длинный путь: VMware vCenter Converter -> ESXi -> SCVMM -> Hyper-V. Не всегда данный процесс проходит гладко, особенно для дистрибутивов не поддерживаемых официально. В этом случае безопасней установить систему вчистую, а затем перенести данные из бэкапа. Вместо SCVMM в этой связке можно использовать бесплатный VMDK2VHD (vmtoolkit.com/files), Citrix XenConvert, Quest vConverter (quest.com/vconverter).

OpenVZ

OpenVZ (OpenVZ.org) — представляет расширение к ядру Linux, реализующее концепцию виртуального окружения (Virtual Environments). Ядро базового дистрибутива одно на всех, виртуализация производится на уровне экземпляров ОС. Именно поэтому в качестве гостевых можно использовать только Linux. Конечно, это несколько сужает сферу применения.
Каждый «дистрибутивов» изолирован и работает в своем адресном пространстве, реализовано управление ресурсами и сохранение текущего состояния каждого виртуального сервера. Такой подход практически не сказывается на производительности (накладные расходы не выше 1-3%). Зато в ресурсах админ практически не ограничен — до 64 Гб RAM, 4096 CPU и так далее. При установке создается виртуальное сетевое устройство (venet), которое дает возможность задать для каждой VM свои сетевые настройки (IP и правила маршрутизации). Собственно отсутствие каких-либо ограничений на ресурсы (только возможности физического сервера) делают популярным OpenVZ у хостеров, да и у админов которые юзают Linux.
Гостевые ОС обычно разворачиваются при помощи подготовленных контейнеров ОС. Администратор указывает доступные ресурсы и дисковые квоты (по inodes и/или объему) создавая шаблоны, которые и становятся основой VM. Такой подход очень упрощает процесс при создании большого количества однотипных VM. Причем контейнеры используются и при миграции (Checkpointing), когда замороженное состояние переносится на другой физический сервер. Этот процесс происходит «в живую», пользователи обычно замечают лишь увеличенное время отклика.
Проект предлагает несколько десятков шаблонов дистрибутивов (download.openvz.org/contrib/template/precreated), поискав в интернет можно найти еще варианты.
Управление OpenVZ производится при помощи пакета утилит vzctl (vzlist, vzmigrate, vzcalc, vzcfgvalidate, vzmemcheck, vzcpucheck, vzpid, vzsplit и др.). Для удобства админы создают скрипты. Хотя сегодня доступно ряд интерфейсов делающих процесс управления OpenVZ, KVM и Xen (о них ниже) более наглядным — WebVZ (webvz.sf.net), Kloxo (она используется в спецдистрибутиве Proxmox VE) и HyperVM.
Традиционно OpenVZ является «домашней» системой виртуализации для дистрибутивов базирующихся на Debian.

KVM

Технология виртуализации KVM (Kernel-based Virtual Machine) продвигается компанией RedHat и является «основной» в этом дистрибутиве и клонах. Требует поддержку аппаратной виртуализации Intel VT или AMD V. Это означает, что KVM может использоваться далеко не на каждом компьютере, старые и некоторые из новых CPU (например, Intel Atom) не подойдут. В принципе если оборудование закупается под задачу это не проблема. Проверить очень просто:

$ egrep '^flags.*(vmx|svm)' /proc/cpuinfo

Распространяется по лицензии GNU GPL, компании RedHаt и Novell предоставляют коммерческую поддержку.

Реализован в виде базового модуля ядра (kvm.ko) и userspace. Последний представляет собой модифицированный QEMU (qemu.org), предназначенный для эмуляции аппаратного обеспечения. В зависимости от типа CPU грузится и специфический модуль — kvm-amd.ko или kvm-intel.ko. Для настройки виртуальных машин используется псевдоустройство /dev/kvm. Все инструкции выполняются в специальном гостевом режиме, в полностью изолированном от системы и друг от друга адресном пространстве. Ввод-вывод сетевых, блочных и balloon (работа с памятью) устройств реализован через драйвер Virtio, остальные в userspace. Накладные расходы выше, чем у OpenVZ и в зависимости от задач, могут быть до 20%. Но у KVM есть несомненный плюс — в качестве гостевых можно запускать: Linux, *BSD, Windows, Solaris, Mac OS X и ряд других ОС. Гостевые системы ограничены фактически ресурсами сервера, каждая может иметь до 16 vCPU (некоторые ОС, вроде WinXP предварительно следует специфически подготовить). К слову опыт показывает, что если в качестве гостевой используется Linux, то лучше выбрать такой же дистрибутив как и базовая система. Производительность и стабильность работы будет заметно выше.
Удобно, что KVM поддерживает vmdk образы созданные в VMWare, процесс переноса очень прост и хорошо описан в соответствующем HOWTO (http://clck.ru/9xlp).
Учитывая, что в состав ядра Linux KVM включен начиная с версии 2.6.20, раньше чем другие системы виртуализации, проблем с установкой в любом из дистрибутивов нет.
Поддерживается savevm/loadvm, offline и «живая» миграция виртуальных машин (последние через команды migrate*). Основным условием успешного переброса хоста, является идентичность оборудования (тип CPU) и настроек гостевой системы, в том числе и пути к файлам образов. Хотя в некоторых случаях можно перенести ОС и без полного соответствия, но это потребует больше трудов и увеличивает вероятность ошибки. Гостевые ОС легко клонируются, создав один раз шаблон, его легко размножить.
Конвертирование P2V возможно двумя способами. Первый через dd как описано в документации QEMU, но стандартной такую операцию назвать нельзя. Второй применить VMWare Converter.

Так как KVM основан на QEMU (оба проекта тесно связаны друг с другом), то принципы управления (в частности создания образов) остались те же. Для загрузки новой гостевой ОС через /dev/kvm используется специальная утилита kvm.
Управление осуществляется при помощи фронт-энда virt-manager разработанного RedHat, или утилит командной строки qemu* и kvm. Чаще всего админы для удобства используют скрипты (на сайте проекта можно найти несколько заготовок).
Кроме этого доступны и интерфейсы, кроме тех о которых говорилось выше это — Karesansui (Xen/KVM), Symbolic, ConVirt (Xen/KVM), Ganeti (Xen/KVM).

Xen

Популярный гипервизор начал свой путь в конце 90х в недрах компьютерной лаборатории Кембриджского университета и доступный по GNU GPL. Первый публичный релиз вышел в 2007 году. Со временем была образована компания XenSource, выкупленная чуть позже Citrix, который создал на его основе свой Citrix XenServer (CentOS + Xen). Кроме этого гипервизор Xen используется в Oracle VM. Но изначально все новшества появляются в Xen, и только через некоторое время в сторонних продуктах.
Относительно недавно проект начал разработку платформы облачных вычислений Xen Cloud Platform.
Xen можно назвать универсальным так как помимо поддержки полной (аппаратной) виртуализации (HVM, Hardware Virtual Machine) реализован режим паравиртуализации (PV). А значит мы его можем запустить на сервере не имеющем CPU с Intel-VT и AMD-V, но для этого требуется модифицированная версия ОС. К слову именно разработчики Xen ввели в свет термин паравиртуализация.
Код гипервизора и сопутствующих модулей сделан переносимым, в итоге Xen поддерживает несколько архитектур: x86, x86_64, Itanium, Power PC и ARM, хостовой ОС — Linux, NetBSD и FreeBSD. Первые релизы гипервизора были внедрены и в WinXP, однако конечное решение так и осталось экспериментом. В качестве гостевых ОС можно установить — Linux, NetBSD, FreeBSD, Solaris и Windows. Производительность гостевых систем близка к работе непосредственно на железе, максимальные потери до 8%. Поддерживаеются Live Migration, изменение размеров диска, использование гостеовй ОС видеокарты напрямую, задействование неиспользуемой памяти гостевых систем, синхронизация состояния VM между серверами (Remus Fault Tolerance), доступ к USB-устройствам,
Процессы гостевых ОС полностью изолированы друг от друга, не могут использовать привилегированные инструкции, такие обращения отправляются непосредственно гипервизору.
В версии 4.1 физический сервер может иметь > 255 CPU, 1Тб RAM, а гостевая система до 128 vCPU, доработано управление пулами CPU и теперь каждый пул может работать со своим планировщиком.
В vanilla ядре Linux Xen «поселился» с версии 2.6.37, хотя в некоторых дистрибутивах Linux он уже давно поддерживался «из коробки».
Управление производится при помощи пакетов xen-utils, xen-tools, плюс доступно несколько интерфейсов. Кроме тех о которых говорилось выше сюда можно добавить — virt-manager, AQEMU, OpenQRM, Xen Orchestra, Zentific, xnCORE и некоторые другие.

***

Победителя в этом обзоре не будет. Каждое решение имеет свои плюсы и минусы, поэтому в одних ситуациях играют большую роль разные свойства. Потери в производительности достаточно малы, чтобы на них обращать внимание. Обычно все упирается в дисковую подсистему. Если планируется управление несколькими серверами, при недостатке средств, то в первую очередь следует присмотреться к OpenSource решениями имеющим многочисленные панели управления.

Теги: , , , , ,

Понравилась статья? Оставьте комментарий или подпишитесь на RSS рассылку.

Комментарии

Комментариев пока что нет

Оставить комментарий

(required)

(required)