Архитектура Hyper-V
Hyper-V — это технология виртуализации на базе низкоуровневой оболочки (или по-другому «гипервизора») для отдельных 64-разрядных версий Windows. Гипервизор ключевым компонентом технологии виртуализации. Это процессор-зависимая платформа виртуализации, позволяющая нескольким изолированным операционным системам использовать общую аппаратную платформу.
Hyper-V поддерживает изоляцию по разделам. Раздел — это логическая единица изоляции, поддерживаемая гипервизором, в котором работают операционные системы. У гипервизора Майкрософт должен быть по крайней мере один корневой (или по-другому «родительский») раздел под управлением Windows. Стек виртуализации запускается в родительском разделе и обладает прямым доступом к аппаратным устройствам. Затем корневой раздел порождает дочерние разделы, в которых и располагаются гостевые ОС. Корневой раздел создает дочерние с помощью API-интерфейса гипервызова.
У разделов нет доступа к физическому процессору и они не обрабатывают прерывания процессора. Вместо этого у них есть виртуальное представление процессора и они выполняются в виртуальном адресном пространстве, которое является частным для каждого гостевого раздела. Гипервизор управляет прерываниями процессора и перенаправляет их в соответствующий раздел. Кроме того, Hyper-V может аппаратным образом ускорять преобразование адресов между различными гостевыми виртуальными адресными пространствами с помощью модуля управления вводом/выводом памяти (IOMMU, Input Output Memory Management Unit), который работает независимо от аппаратного управления памятью, используемого процессором. Модуль IOMMU используется для изменения сопоставления адресов физической памяти с адресами, которые используют дочерние разделы.
У дочерних разделов также отсутствует прямой доступ к другим аппаратным ресурсам оборудования и есть виртуальное представление ресурсов в виде виртуальных устройств (VDev). Запросы к виртуальным устройствам перенаправляются через шину VMBus или через гипервизор к устройствам, находящимся в родительском разделе, который обрабатывает эти запросы. VMBus — это логический канал, по которому осуществляется взаимодействие между разделами. В родительских разделах находятся поставщики служб виртуализации (VSP, Virtualization Service Provider), которые подключаются к шине VMBus и обрабатывают запросы на доступ к устройствам от дочерних разделов. В дочерних разделах находятся клиенты служб виртуализации (VSC, Virtualization Service Client), которые перенаправляют запросы устройств через шину VMBus к поставщикам VSP родительского раздела. Этот процесс прозрачен для гостевой ОС.
Виртуальные устройства также могут использовать функцию виртуализации Windows Server под названием Enlightened I/O для подсистем хранения, сети, графической подсистемы и подсистемы ввода. Enlightened I/O — это специализированная, ориентированная на виртуализацию реализация протоколов связи высокого уровня (например SCSI), которые используют шину VMBus напрямую, в обход уровня эмуляции устройств. Это обеспечивает более эффективное взаимодействие, но требует наличия гостевой системы с поддержкой Enlightened I/O, которая знает о гипервизоре и VMBus Технология Hyper-V Еnlightened I/O и ядро с поддержкой определения гипервизора предоставляются при установке компонентов интеграции Hyper-V. Компоненты интеграции, к которым относятся драйверы клиента виртуальных серверов (VSC), также доступны для других клиентских операционных систем. Для Hyper-V необходим процессор с поддержкой аппаратной виртуализации, реализованной в таких технологиях, как Intel VT или AMD Virtualization (AMD-V).
На следующей схеме представлен общий обзор архитектуры среды Hyper-V.
Архитектура Hyper-V: Глубокое погружение
Что же такое – Hyper-V?
Hyper-V – это одна из технологий виртуализации серверов, позволяющая запускать на одном физическом сервере множество виртуальных ОС. Эти ОС именуются «гостевыми», а ОС, установленная на физическом сервере – «хостовой». Каждая гостевая операционная система запускается в своем изолированном окружении, и «думает», что работает на отдельном компьютере. О существовании других гостевых ОС и хостовой ОС они «не знают».
Эти изолированные окружения именуются «виртуальными машинами» (или сокращенно — ВМ). Виртуальные машины реализуются программно, и предоставляют гостевой ОС и приложениям доступ к аппаратным ресурсам сервера посредством гипервизора и виртуальных устройств. Как уже было сказано, гостевая ОС ведет себя так, как будто полностью контролирует физический сервер, и не имеет представления о существовании других виртуальных машин. Так же эти виртуальные окружения могут именоваться «партициями» (не путать с разделами на жестких дисках).
Впервые появившись в составе Windows Server 2008, ныне Hyper-V существует в виде самостоятельного продукта Hyper-V Server (де-факто являющегося сильно урезанной Windows Server 2008), и в новой версии – R2 – вышедшего на рынок систем виртуализации Enterprise-класса. Версия R2 поддерживает некоторые новые функции, и речь в статье пойдет именно об этой версии.
Гипервизор
Термин «гипервизор» уходит корнями в 1972 год, когда компания IBM реализовала виртуализацию в своих мэйнфреймах System/370. Это стало прорывом в ИТ, поскольку позволило обойти архитектурные ограничения и высокую цену использования мэйнфреймов.
Гипервизор – это платформа виртуализации, позволяющая запускать на одном физическом компьютере несколько операционных систем. Именно гипервизор предоставляет изолированное окружение для каждой виртуальной машины, и именно он предоставляет гостевым ОС доступ к аппаратному обеспечению компьютера.
Гипервизоры можно разделить на два типа по способу запуска (на «голом железе» или внутри ОС) и на два типа по архитектуре (монолитная и микроядерная).
Гипервизор 1 рода
Гипервизор 1 типа запускается непосредственно на физическом «железе» и управляет им самостоятельно. Гостевые ОС, запущенные внутри виртуальных машин, располагаются уровнем выше, как показано на рис.1.
Рис.1 Гипервизор 1 рода запускается на «голом железе».
Гипервизор 2 рода
В отличие от 1 рода, гипервизор 2 рода запускается внутри хостовой ОС (см. рис.2).
Рис.2 Гипервизор 2 рода запускается внутри гостевых ОС
Виртуальные машины при этом запускаются в пользовательском пространстве хостовой ОС, что не самым лучшим образом сказывается на производительности.
Примерами гипервизоров 2 рода служат MS Virtual Server и VMware Server, а так же продукты десктопной виртуализации – MS VirtualPC и VMware Workstation.
Монолитный гипервизор
Гипервизоры монолитной архитектуры включают драйверы аппаратных устройств в свой код (см. рис. 3).
Рис. 3. Монолитная архитектура
Микроядерная архитектура
При микроядерной архитектуре драйверы устройств работают внутри хостовой ОС.
Хостовая ОС в этом случае запускается в таком же виртуальном окружении, как и все ВМ, и именуется «родительской партицией». Все остальные окружения, соответственно – «дочерние». Единственная между родительской и дочерними партициями состоит в том, что только родительская партиция имеет непосредственный доступ к оборудованию сервера. Выделением памяти же и планировкой процессорного времени занимается сам гипервизор.
Рис. 4. Микроядерная архитектура
Архитектура Hyper-V
На рис.5 показаны основные элементы архитектуры Hyper-V.
Рис.5 Архитектура Hyper-V
Как видно из рисунка, гипервизор работает на следующем уровне после железа – что характерно для гипервизоров 1 рода. Уровнем выше гипервизора работают родительская и дочерние партиции. Партиции в данном случае – это области изоляции, внутри которых работают операционные системы. Не нужно путать их, к примеру, с разделами на жестком диске. В родительской партиции запускается хостовая ОС (Windows Server 2008 R2) и стек виртуализации. Так же именно из родительской партиции происходит управление внешними устройствами, а так же дочерними партициями. Дочерние же партиции, как легко догадаться – создаются из родительской партиции и предназначены для запуска гостевых ОС. Все партиции связаны с гипервизором через интерфейс гипервызовов, предоставляющий операционным системам специальный API. Если кого-то из разработчиков интересуют подробности API гипервызовов — информация имеется в MSDN.
Родительская партиция
Рис.6 Компоненты родительской партиции Hyper-V
Стек виртуализации
Рабочий процесс виртуальной машины (VMWP)
Для управления виртуальной машиной из родительской партиции запускается особый процесс – рабочий процесс виртуальной машины (VMWP). Процесс этот работает на уровне пользователя. Для каждой запущенной виртуальной машины служба VMMS запускает отдельный рабочий процесс. Это позволяет изолировать виртуальные машины друг от друга. Для повышения безопасности, рабочие процессы запускаются под встроенным пользовательским аккаунтом Network Service.
Процесс VMWP используется для управления соответствующей виртуальной машиной. В его задачи входит:
Создание, конфигурация и запуск виртуальной машины
Пауза и продолжение работы (Pause/Resume)
Сохранение и восстановление состояния (Save/Restore State)
Создание моментальных снимков (снапшотов)
Кроме того, именно рабочий процесс эмулирует виртуальную материнскую плату (VMB), которая используется для предоставления памяти гостевой ОС, управления прерываниями и виртуальными устройствами.
Виртуальные устройства
Драйвер виртуальной инфраструктуры (VID)
Драйвер виртуальной инфраструктуры (vid.sys) работает на уровне ядра и осуществляет управление партициями, виртуальными процессорами и памятью. Так же этот драйвер является промежуточным звеном между гипервизором и компонентами стека виртуализации уровня пользователя.
Библиотека интерфейса гипервизора
Библиотека интерфейса гипервизора (WinHv.sys) – это DLL уровня ядра, которая загружается как в хостовой, так и в гостевых ОС, при условии установки компонент интеграции. Эта библиотека предоставляет интерфейс гипервызовов, использующийся для взаимодействия ОС и гипервизора.
Провайдеры служб виртуализации (VSP)
Провайдеры служб виртуализации работают в родительской партиции и предоставляют гостевым ОС доступ к аппаратным устройствам через клиент служб виртуализации (VSC). Связь между VSP и VSC осуществляется через виртуальную шину VMBus.
Шина виртуальных машин (VMBus)
Назначение VMBus состоит в предоставлении высокоскоростного доступа между родительской и дочерними партициями, в то время как остальные способы доступа значительно медленнее из-за высоких накладных расходах при эмуляции устройств.
Если гостевая ОС не поддерживает работу интеграционных компонент – приходится использовать эмуляцию устройств. Это означает, что гипервизору приходится перехватывать вызовы гостевых ОС и перенаправлять их к эмулируемым устройствам, которые, напоминаю, эмулируются рабочим процессом виртуальной машины. Поскольку рабочий процесс запускается в пространстве пользователя, использование эмулируемых устройств приводит к значительному снижению производительности по сравнению с использованием VMBus. Именно поэтому рекомендуется устанавливать компоненты интеграции сразу же после установки гостевой ОС.
Как уже было сказано, при использовании VMBus взаимодействие между хостовой и гостевой ОС происходит по клиент-серверной модели. В родительской партиции запущены провайдеры служб виртуализации (VSP), которые являются серверной частью, а в дочерних партициях – клиентская часть – VSC. VSC перенаправляет запросы гостевой ОС через VMBus к VSP в родительской партиции, а сам VSP переадресовывает
