Сразу подчеркнем: на сегодняшний день нет устоявшейся классификации виртуализационных технологий и четкой системы определений и понятий. Это хорошо видно на примере англоязычной Wikipedia, которая на слово virtualization выдает несколько разноречивых вариантов подборок статей по этой теме, причем некоторые записи выглядят утратившими актуальность или содержат противоречивые сведения. В этой статье мы приведем некоторый собственный упрощенный вариант классификации базовых подходов к реализации виртуализации ПО, с учетом информации из различных источников.

Виртуализация серверов

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

Вполне очевидно, что вариант ВМ позволяет поддерживать неоднородные системы, а ВК – только однородные среды, т.е. механизм ВМ более универсален. Но зато ВК более эффективны с точки зрения быстродействия и затрат ресурсов на поддержку собственно механизма виртуализации. Сегодня ведущим стал подход ВМ, который используют практически все поставщики средств серверной виртуализации (VMware, Microsoft, Citrix и т.д.). Технологию контейнеров реализуют фактически только компания Parallels (для Linux и Windows) и Sun – для собственной Solaris.

Виртуальные машины

Для обозначения технологий поддержки исполнения ВМ в последние два года повсеместно используется термин гипервизор (hypervisor). Однако этот термин может употребляться как в широком, так и в узком смысле.

Итак, в широком понимании, гипервизор – это программа или аппаратная схема, обеспечивающая или допускающая одновременное, параллельное выполнение нескольких или даже многих ОС на одном и том же хост-компьютере. Гипервизор также обеспечивает изоляцию ОС друг от друга, их защиту, разделение ресурсов между несколькими запущенными ОС и управление ресурсами (Wikipedia). В этом смысле термином «гипервизор» обозначается целый класс ПО, которое отвечает за процесс исполнения ВМ, чтобы отделить эту категорию продуктов от других компонентов системы виртуализационного ПО (в частности, от средств управления теми же гипервизорами и виртуальными средами).

Для реализации технологий ВМ используются разные подходы, среди которых можно выделить два основных (рис. 2). В литературе до сих пор нет устоявшихся названий для них; мы возьмем за основу вариант, приведенный в Wikipedia.

Гипервизор первого типа (автономный, тонкий, исполняемый на "голом железе", Type 1, native, bare-metal) – программа, исполняемая непосредственно на аппаратном уровне компьютера и выполняющая функции эмуляции физического аппаратного обеспечения и управления аппаратными средствами и гостевыми ОС (рис. 2а). Такой гипервизор сам по себе в некотором роде можно считать минимальной ОС.

Гипервизор второго типа (хостовый, монитор виртуальных машин, hosted, Type-2, Virtual Machine Monitor, VMM) – специальный дополнительный программный слой, расположенный поверх основной хостовой ОС, который в основном решает функции управления гостевыми ОС, а эмуляцию и управление аппаратурой берет на себя хостовая ОС (рис. 2б).

Гипервизор гибридный (Hybrid, Type-1+). Объединенный вариант первых двух, в котором функции управления аппаратными средствами возложены на тонкий гипервизор и специальную депривилегированную сервисную ОС, работающую под управлением тонкого гипервизора. Обычно гипервизор управляет напрямую процессором и памятью компьютера, а через сервисную ОС гостевые ОС работают с остальными аппаратными компонентами.

В узком понимании "гипервизор" – это "гипервизор первого типа". Именно он считается классическим вариантом реализации архитектуры ВМ, и именно он был впервые реализован компанией IBM в 1960 г. в системе CP/CMS, которая считается прародителем сегодняшней z/VM*.

Виртуализация же систем x86 начиналась в конце 90-х с использования второго варианта, VMM, который долгое время доминировал на рынке (и остается пока единственным для рабочих станций). Именно с VMM начала свою деятельность в 1999 г. компания VMware, создав решение для ПК – Workstation. Затем появился вариант этой же технологии для серверов – GSX Server (теперь просто VMware Server), и лишь потом был создан настоящий гипервизор – ESX Server.

Термин «гипервизор» стал употребляться применительно к x86-компьютерам лишь 3–4 года назад, с началом широкого использования именно этого подхода другими разработчиками для создания собственных продуктов, чтобы отличить его от традиционного для x86 варианта VMM. Отметим, что одна из ключевых характеристик VMM – спектр поддерживаемых хостовых ОС. В 2008 г. гипервизор первого типа стал доминирующим на рынке, и потому данным термином теперь обозначают все ПО для исполнения виртуальных машин.

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

Принципиальной исторической проблемой архитектуры x86 была невозможность параллельного исполнения некоторых команд процессора в привилегированном режиме работы (что нужно было для работы нескольких ОС). Для ее разрешения использовались два основных метода виртуализации: полная виртуализация (Full, Native Virtualization) и паравиртуализация (paravirtualization). В первом случае конфликты исключались с помощью бинарной трансляции "плохих команд" на уровне гипервизора, во втором – за счет исключения этих команд путем коррекции ядра гостевой ОС.

Однако в 2004-05 гг. Intel и AMD внесли коррективы в архитектуру своих процессоров, реализовав в них соответственно технологии Intel VT и AMD SVM, которые стали поддерживать параллельную работу ОС на аппаратном уровне. Это существенно упростило создание виртуализационных средств, что способствовало росту числа разработок в этой области. Но тут нужно отметить, что многие появившиеся в последнее время гипервизоры (например, Microsoft Hyper-V) изначально ориентированы на работу только с современными процессорами, поддерживающими архитектуру Intel VT или AMD SVM.

Варианты реализации гипервизорных решений

В настоящее время системы виртуализации серверов на базе хостового гипервизора (тип 2) уходят с рынка и используются только в унаследованных системах, для проведения макетных исследований или в каких-то нишевых задачах. В качестве примера можно привести VMware Server, Microsoft Virtual Server и Parallels Server for Mac.

Доминирующее положение на рынке занимают виртуализационные решения на базе "настоящего" гипервизора (тип 1) – VMware ESX Server, Microsoft Hyper-V, Citrix XenServer, Oracle VM, Sun Logical Domains Hypervisor и т. д. Однако нужно подчеркнуть, что для реализации гипервизоров типа 1 также используются разные методы. В частности, это хорошо видно на примере VMware, которая отличается от варианта Microsoft и Citrix (последние два, наверное, правильнее относить к гипервизорам смешанного типа).

Если говорить о законченном ВМ-решении, то оно обычно состоит из двух основных компонентов – среды исполнения ВМ (собственно гипервизор) и средства управления ВМ. В случае VMware ее ESX Server состоит из собственно гипервизора (ESXi) и сервисной консоли на базе ядра Linux. В силу архитектурных особенностей ESXi может использоваться автономно, без консоли, но в этом случае у него ограничены возможности управления системой (изначально ESXi был предназначен для "встроенного" применения, в качестве OEM-версии для производителей серверов, которые могли приделывать к нему свои средства управления). В XenServer и Hyper-V компоненты гипервизора и управления нельзя так же четко разделить, так как в них ядро ОС (соответственно Linux и Windows) задействовано для исполнения ВМ.

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

Виртуальные контейнеры

Технология контейнеров использует метод виртуализации на уровне ядра ОС (operating system-level virtualization), что подразумевает использование одного ядра хостовой ОС для создания независимых параллельно работающих операционных сред. Для гостевого ПО создается только собственное сетевое и аппаратное окружение.

Пионером освоения этой технологии для x86-серверов в начале текущего десятилетия стала компания Parallels (до 2008 г. называлась SWsoft) со своим продуктом Vituozzo. До недавнего временя она также использовала для обозначения этого подхода термины Virtual Environment и Virtual Privite Server. Название Virtuozzo порой используется как синоним всего этого направления виртуализации, поскольку все остальные средства намного уступают ему в популярности. Пакет Virtuzzo изначально был создан для Linux, в 2005 г. появилась версия для Windows, и примерно в то же время компания Sun реализовала Solaris Containers для свой ОС (тогда же появился и термин "контейнеры").

Технология ВК создает существенно меньшую (почти нулевую) дополнительную нагрузку (overhead) на компьютер по сравнению с гипервизорами. Ее недостаток – поддержка только однородных сред. Впрочем, для решения многих задач консолидации неоднородность нетипична. Тем не менее применение ВК существенно уступает по популярности варианту BM (фактически его применяют только хостинг-провайдеры), причем этот разрыв нарастает. В плане оценки перспективности ВК настораживает то, что сегодня ни один из ведущих игроков на этом рынке (VMware, Microsoft, Citrix) такой вариант виртуализации не предлагает и ничего не говорит о планах его реализации в будущем.

Виртуализация настольных ОС

Использование виртуализации для компьютеров архитектуры x86 началось именно с настольных систем, но фактически сразу же это направление ушло на второй план в общей проблематике, и только сейчас становится заметно повышение интереса к нему.

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

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

Безусловный лидер в этой сфере — пионер x86-виртуализации WMware Workstation. В последние годы заметно растет также популярность Microsoft Visual PC, которая распространяется бесплатно. Для компьютеров Mac широко применяется решение Parallels Server. Начиная с 2008 г. корпорация Sun активно продвигает пакет Visual Box.

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

Так или иначе, но в начале 2009 г. Citrix и VMware объявили о планах использования уже в текущем году гипервизоров для ПК. Работу в этом направлении Cirtix ведет совместно с корпорацией Intel в рамках Project Independence (проект “Независимость”). Его реализация позволит запускать на одном ПК две независимые виртуальные машины, одна из которых представляет собой образ персональной системы, где пользователь может делать все, что хочет, а вторая — корпоративный вариант системы, доставляемый на данное рабочее место из дата-центра (рис. 3). При этом в основной виртуальной машине можно будет работать с аппаратными компонентами, а не с эмулированными, в частности, можно полностью задействовать графический ускоритель компьютера для просмотра видео, современных игр и т. д. А в остальных виртуальных машинах будет поддерживаться режим эмуляции, т.е. корпоративная система будет исполняться в изолированном окружении, с полным обеспечением безопасности корпоративных приложений и защиты от угроз.

Виртуализация приложений

Виртуализация приложений подразумевает использование модели сильной изоляции прикладных программ с управляемым взаимодействием с ОС, при которой виртуализуется каждый экземпляр приложений, все его основные компоненты: файлы (включая системные), реестр, шрифты, INI-файлы, COM-объекты, службы (рис. 4). В каком-то смысле этот вид виртуализации можно считать упрощенным вариантом виртуальных контейнеров, но только для отдельного приложения. В отличие от виртуализации ОС, этот подход не обеспечивает поддержку унаследованных приложений; тут решается только задача надежной работы приложений в многозадачной среде.

Приложение в этом случае исполняется без процедуры инсталляции в традиционном ее понимании и может запускаться прямо с внешних носителей (например, с флэш-карт или из сетевых папок). С точки зрения ИТ-отдела такой подход имеет очевидные преимущества: ускоряется развертывание настольных систем и появляется возможность управления ими, сводятся к минимуму конфликты между приложениями и потребность в тестировании их совместимости. Фактически именно такой вариант виртуализации используется в Microsoft Application Virtualization (ранее называлось Softgrid), VMware Thinstall, Symantec/Altiris Virtualization, Novell ZENworks Application Virtualization.

Виртуализация представлений

Этот термин ввела пару лет назад корпорация Microsoft для обозначения технологий поддержки терминального доступа, которые начали активно применяться для x86-компьютеров с конца 90-х гг. Основная идея здесь – разделение процессов исполнения приложения и визуализации пользовательского интерфейса, что обеспечивает перенос основной вычислительной нагрузки на сервер и позволяет применять тонкий клиент.

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

Создание и развитие технологий терминального доступа связано с именами компаний Cirtix и Microsoft, имеющих многолетнюю историю стратегического сотрудничества в этой сфере, где Citrix занимает лидирующие позиции на уровне high-end решений со своим комплексом XenApp (ранее назывался Presentation Server), а Microsoft доминирует в low-сегменте с Windows Terminal Services.

Однако в последние годы в этой сфере начинают активно действовать новые компании, в том числе производители аппаратных средств (HP, Sun, Wyse). Появляются новые игроки с качественно новыми решениями. И здесь нужно в первую очередь упомянуть о быстро набирающих популярность решениях компании NComputing.

В несколько упрощенном виде терминальная технология позволяет преобразовать настольное приложение в клиент-серверный вариант за счет перехвата пользовательского интерфейса, который потом передается на ПК, где исполняется специализированным клиентским ПО под управлением стандартной ОС (рис. 5а).

Решение NComputing – это специализированный программно-аппаратный комплекс, состоящий из программной среды виртуализации vSpace и терминальных устройств (до 30), к которым непосредственно подключаются монитор, клавиатура и мышь (рис. 5б). Иными словами, по сравнению с традиционным вариантом на клиентском месте вместо системного блока, ОС и клиентского ПО используется специализированное устройство. Ключевую роль в этом комплексе играет ПО vSpace, об архитектуре которого пока почти ничего не известно. Но скорее всего это ПО реализует некий смешанный вариант технологии виртуальных контейнеров и терминального сервера применительно к настольным системам. При этом обмен данными между сервером и терминалом выполняется с помощью патентованного протокола UXP, оптимизированного для обмена мультимедийной информацией. В целом очевидно, что NComputing уступает по универсальности (ограниченное число терминалов, подключаемых только в локальных сетях) традиционному варианту терминалов на базе ПК, но в то же время может эффективно применяться во многих реальных ситуациях.

* Термин «гипервизор» был специально придуман IBM в 1972 г., чтобы подчеркнуть отличие от термина «супервизор», традиционно обозначавшего ядро ОС, а точнее, менеджер ресурсов ядра в эпоху мэйнфреймов. Гипервизор представляет собой расширение и обобщение понятия супервизора: подобно тому, как супервизор в ядре ОС обеспечивает изоляцию пользовательских программ друг от друга, выделение и освобождение ресурсов для пользовательских процессов, так и гипервизор обеспечивает изоляцию и управление ресурсами для самих ОС как целого, вместе с их пользователями и процессами (Wikipedia).