Сейчас можно совершенно определенно сказать, что виртуализация превратилась в мэйнстрим современных корпоративных ИТ. Практически все мировые ведущие ИТ-поставщики говорят о своей приверженности идеям виртуализации, о разработке таких решений, утверждая, что именно виртуализация поможет заказчикам решить все их ИТ-проблемы. Аналитики в один голос утверждают, что бум применения этих средств уже начался и взрывообразный рост данного сегмента ИТ мы сможем наблюдать в ближайшее время.
Разобраться в этом «виртуализационном» потоке информации и отследить логику развития событий непросто. В условиях маркетинговой шумихи трудно понять, где речь идет о чем-то действительно новом, а где – о смене названий давно известных продуктов. Ведь сейчас слово «виртуализация» используется применительно к виртуальным машинам, виртуальным хранилищам данных, виртуальным сетям, виртуальным ЦОДам и т. д.
Настало время разобраться (пока не поздно) с тем, что же такое виртуализация, как-то структурировать множество технологий и продуктов, вошедших сегодня в это обширное понятие, и на основе этого рассмотреть множество «виртуализационных» предложений от все время растущего числа поставщиков.
Отметим, что на данный момент устоявшейся классификации виртуализационных технологий и четкой системы определений и понятий нет. Это хорошо видно на примере английской Википедии, которая на слово virtualization выдает несколько подборок статей по этой теме, причем некоторые из них уже утратили актуальность или содержат противоречивые сведения. Мы приведем свой, упрощенный, вариант классификации базовых подходов к виртуализации с учетом информации из различных источников.
Виртуализация серверов
Здесь главная идея – возможность параллельного запуска на одном физическом компьютере нескольких операционных сред. Сейчас для этого применяются два основных подхода: виртуальные машины (ВМ) и виртуальные контейнеры (ВК). Они принципиально различаются тем, что в первом случае для каждой ВМ используется собственный экземпляр ОС, а во втором все контейнеры работают с ядром одной ОС, но в собственном окружении среды (рис. 1).

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

Рис. 2. Основные варианты управления виртуальными машинами
Для реализации технологий ВМ существуют разные подходы, среди них можно выделить два основных (рис. 2). К сожалению, устоявшихся названий для них нет, но мы будем использовать вариант, приведенный в Википедии:
• гипервизор первого типа (автономный, тонкий, исполняемый на «голом железе» Type 1, native, bare- metal) – программа, исполняемая непосредственно на аппаратном уровне компьютера и выполняющая функции эмуляции физического аппаратного обеспечения и управления аппаратными средствами и гостевыми ОС (рис. 2а). Это значит, что гипервизор сам по себе в некотором роде является минимальной операционной системой;
• гипервизор второго типа (хостовый, монитор виртуальных машин, hosted, Type 2, Virtual Machine Monitor, VMM) – специальный дополнительный программный слой, расположенный поверх основной хостовой ОС, который в основном решает задачи управления гостевыми ОС, а эмуляцию и управление аппаратурой выполняет хостовая ОС (рис. 2б);
• гипервизор гибридный (Hybrid, Type 1+) – объединенный вариант первых двух, в котором функции управления аппаратными средствами выполняются тонким гипервизором и специальной депривилегированной сервисной ОС, работающей под управлением тонкого гипервизора. Обычно гипервизор управляет напрямую процессором и памятью компьютера, а через сервисную ОС гостевые операционные системы работают с остальными аппаратными компонентами.
В узком понимании «гипервизор» – это гипервизор первого типа. Именно он считается классическим вариантом реализации архитектуры ВМ и был впервые реализован компанией IBM в 1960 г. в виде системы CP/CMS, прародительницы сегодняшней z/VM.[1]
Виртуализация же систем x86 начиналась в конце 90-х гг. с использования второго варианта, VMM, который долгое время доминировал на рынке (он пока единственный для рабочих станций). Именно с VMM начала в 1999 г. свою деятельность VMware, создав решение для ПК – Workstation. Затем появился вариант этой же технологии для серверов – GSX Server (сейчас – просто VMware Server), и лишь потом был создан настоящий гипервизор – ESX Server.
Многие гипервизоры ориентированы на работу только с современными процессорами.
Термин «гипервизор» стал применяться по отношению к x86-компьютерам лишь три-четыре года назад в связи с началом широкого использования этого подхода другими разработчиками для создания собственных продуктов, чтобы отличить его от традиционного для x86 варианта VMM. Отметим, что одна из ключевых характеристик VMM – спектр поддерживаемых им хостовых ОС. В 2008 г. гипервизор типа 1 стал доминирующим на рынке, и потому данный термин теперь используется для обозначения всего ПО исполнения виртуальных машин.
Реализация механизма ВМ для компьютеров x86 – непростая задача. Во-первых, нужно было преодолевать унаследованные особенности программно-аппаратной архитектуры, которая в начальном варианте была ориентирована на простейшие однозадачные режимы работы. Во-вторых, во многих отношениях ПК – это более сложное устройство, чем мэйнфрейм, хотя бы потому, что в нем используется масса компонентов разных поставщиков. В-третьих, виртуализация требует довольно глубокого проникновения в ядро ОС, которое является очень сложной программой.
Принципиальной исторической проблемой архитектуры x86 была невозможность параллельного исполнения некоторых команд процессора в привилегированном режиме работы (что нужно было в случае использования нескольких ОС). Для ее решения применялись два основных метода виртуализации: полная виртуализация (Full, Native Virtualization) и паравиртуализация (paravirtualization). В первом случае конфликты исключались с помощью бинарной трансляции «плохих команд» на уровне гипервизора, во втором – благодаря исключению этих команд путем коррекции ядра гостевой ОС.
Однако в 2004–2005 гг. Intel и AMD внесли коррективы в архитектуру своих процессоров, реализовав в них соответственно технологии Intel VT и AMD SVM, которые сделали возможной параллельную работу ОС на аппаратном уровне. Это существенно упростило создание виртуализационных средств, что способствовало росту числа разработок в данной области. Правда, многие появившиеся в последнее время гипервизоры (например, Microsoft Hyper-V) изначально ориентированы на работу только с современными
