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

 

VMware ESXi

Все, кто работал с виртуальными машинами с начала века, хорошо знает продукты VMware, пользовавшиеся популярностью благодаря своим функциональным возможностям и производительности.

Да и сегодня на десктопах нередко можно найти VMware Workstation и VMware Player. Последний появился как ответ MS Virtual PC и является бесплатной версией Workstation. Работает он из-под установленной ОС, то есть к промышленной среде не совсем подходит. Для установки на «голое железо» предлагается VMware ESXi – самостоятельный продукт, являющийся основой для установки гостевых ОС, а совместно с VMware vSphere — средством для построения виртуальной инфраструктуры и управления виртуальными ресурсами (подробнее в статье «Виртуальная сфера», см. ][ 08.2010). По сути, 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 сошли на нет. Так что разработчики рекомендуют переходить на ESXi.

Главное отличие ESXi от 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/datacentervirtualization/converter), позволяющего использовать в ESXi образы MS Virtual Server, Virtual PC, Hyper-V, а также физические серверы и образы дисковых разделов, созданных такими программами как Acronis True Image, Norton Ghost и другими.

Кроме этого, помочь в развертывании ESXi может и бесплатный веб-сервис VMware Go (go.vmware.com), позволяющий протестировать физический сервер на совместимость, установить ESXi и создать новые VM.

 

MS 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 '^fl ags.*(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 (некоторые ОС, вроде Win XP, предварительно следует специфически подготовить). К слову, опыт показывает, что если в качестве гостевой используется Linux, то лучше выбрать такой же дистрибутив, как и базовая система. Производительность и стабильность работы будут заметно выше.

Удобно, что KVM поддерживает vmdk-образы, созданные в VMWare, процесс переноса очень прост и хорошо описан в соответствующем HOWTO (clck.ru/9xlp).
Учитывая, что KVM включен в состав ядра Linux начиная с версии 2.6.20 (раньше, чем другие системы виртуализации), проблем с установкой ни для одного из дистрибутивов нет.
В KVM поддерживается 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решениям, имеющим многочисленные панели управления.

 

Бесплатный XenServer

XenServer (текущая версия 5.6.1) в чем-то похож на VMware ESXi. Предоставляется он бесплатно, и его можно использовать без ограничений. Но для централизованного управления фермой серверов предлагается XenCenter, продаваемый под собственнической лицензией Citrix. Функционально XenServer — очень мощный инструмент.

Админ получает неограниченное количество серверов и виртуальных машин; Live Motion; непрерывное обслуживание при условии, что ресурсы нескольких серверов объединены в пул; контроль доступа на основе ролей (RBAC) и интеграцию с Active Directory; динамическое управление памятью, позволяющее добавить RAM в VM без перезагрузки. Рабочая нагрузка динамически перераспределяется не только между виртуальными, но и между физическими серверами, что существенно упрощает управление. Спроектирован с учетом требований по предоставлению высокого уровня доступности системы (High Availability). Рабочую ОС, установленную на любом физическом сервере, можно легко конвертировать в виртуальную систему.

Умеет работать с основными системами хранения данных (локальный диск, NAS, SAN и так далее). Экспериментально может работать с образами дисков в форматах VMWare VMDK, MS VHD, VDI, WIM.

Официально в качестве гостевых систем поддерживаются все версии Windows, начиная от Win2k SP4, Linux (SLES, RHEL/CentOS, Oracle EL, Solaris, Debian). Гостевая система поддерживает до 64 логических процессоров, 256 Гб оперативной памяти и 16 сетевых адаптеров на хост. Хотя характеристики виртуальной машины будут зависеть от используемой гостевой ОС, VM не имеет ограничений на количество используемой оперативной памяти: все, что сможет выдать сервер, будет доступно.

 

Links

  • Подпишись на наc в Telegram!

    Только важные новости и лучшие статьи

    Подписаться

  • Подписаться
    Уведомить о
    1 Комментарий
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии