Hyper-V реализует то, что обычно называют Type-1 Hypervisor virtualization (виртуализация 1-го типа) В этом случае, гипервизор работает непосредственно на аппаратном обеспечении хост-системы и отвечает за обмен ресурсами физического оборудования с несколькими виртуальными машинами . Эта концепция иллюстрируется на следующей диаграмме:
В общих чертах, основными целями гипервизора являются управление физическим CPU и распределение памяти между различными виртуальными машинами, работающими на хост-системе.
Hyper-V работает только на процессорах, которые поддерживают hardware assisted virtualization. Прежде чем взглянуть на Hyper-V в деталях, стоит представить краткий обзор того, что hardware assisted virtualization на самом деле означает.
Семейство x86 процессоров обеспечивает диапазон уровней защиты также известных как кольца, в которых может выполняться код. Кольцо-0 имеет самый высокий уровень привилегий, и именно в этом кольце обычно работает ядро операционной системы. Код, выполняемый в кольце- 0 должен работать в пространстве системы, в режиме ядра или режиме администратора. Все остальные коды, такие как приложения, работающие на операционной системе работают в менее привилегированных кольцах, как правило, исполняются в кольце- 3.
В Hyper-V виртуализации программа, известная как гипервизор работает непосредственно на аппаратном обеспечении хост-системы в кольце-0. Задача гипервизора состоит в обработке задач, таких как распределение ресурсов CPU и памяти для виртуальных машин в дополнение к интерфейсам для администрирования и мониторинга.
Ясно, что если гипервизор будет занимать кольцо-0 из процессора, а ядро для любой из гостевых операционных систем, работающих в системе, должно быть в менее привилегированном кольце процессора. К сожалению, большинство ядер операционной системы записывается в явном виде для работы в кольце-0 по той простой причине, что им необходимо выполнять задачи, которые доступны только в этом кольце, такие, как способность выполнять привилегированные команды процессора и для непосредственных манипуляций с памятью. Одним из решений этой проблемы является модификация гостевых операционных систем - замена каких-либо привилегированных операций, которые будут работать в кольце 0 процессора призывами гипервизора (известными как hypercalls). Гипервизор, в этом случае, выполняет задачи от имени гостевой системы.
Другое решение заключается в привлечении функций hardware assisted virtualization нового поколения процессоров от Intel и AMD. Эти технологии, известные как Intel VT и AMD-V соответственно, обеспечивают расширения, необходимые для запуска немодифицированных гостевых виртуальных машин. В упрощенном смысле эти новые процессоры обеспечивают дополнительный режим привилегий (относящийся к кольцу -1) над кольцом-0, в котором гипервизор может работать, по сути, оставив кольцо-0 для немодифицированных гостевых операционных систем.
Работающие на основе гипервизора разделы - это корневой раздел (root partition) (так же известный как родительский раздел) и нулевые или дочерние разделы(child partition)(по одному для каждой виртуальной машины), как показано ниже:
Корневой раздел, по существу, виртуальная машина, которая запускает копию 64-битной Windows Server 2008, которая, в свою очередь, выступает в качестве хоста для ряда специальных компонентов Hyper-V. Корневой раздел отвечает за обеспечение драйверов для устройств виртуальных машин, работающих в дочерних разделах, управляя жизненным циклом дочернего раздела, распределением энергии и регистрацией событий. Операционная система корневого раздела является хостом для стека виртуализации, который несет ответственность за выполнение широкого спектра функций виртуализации (стек виртуализации - virtualization stack и другие компоненты корневого раздела будут рассмотрены более подробно далее в этой главе).
Дочерние разделы являются хостом для виртуальных машин, в которых запускаются гостевые операционные системы. Hyper-V поддерживает Hyper-V Aware и Hyper-V Unaware гостевых операционных систем.
Как отмечалось ранее, корневой раздел содержит стек виртуализации (virtualization stack). Это набор компонентов, которые обеспечивают большой объем функциональности Hyper-V. Следующая диаграмма представляет абстрактные контуры стека:
| Virtual Machine Management Service (VMM Service) | Управляет состоянием виртуальных машин, работающих в дочерних разделах, и контролирует задачи, которые могут быть выполнены на виртуальной машине, на основе текущего состояния (например, создавая снимки). Также управляет добавлением и удалением устройств, когда виртуальная машина запускается. Служба отвечает также за создание соответствующего рабочего процесса виртуальной машины. |
| Virtual Machine Worker Processes | Рабочие процессы виртуальной машины запускаются службой VMM, после запуска виртуальной машины. Рабочий процесс (называемый vmwp.exe) создается для каждой виртуальной машины и несет ответственность за большую часть управления взаимодействием между родительским разделом Windows Server 2008 и системой виртуальных машин в дочерних разделах. В обязанности рабочего процесса виртуальной машины входит создание, настройка, управление, паузы, возобновления, сохранения, восстановления и мгновенные снимки виртуальной машины. Он также работает с IRQ, памятью и вводом/выводом отображения портов через виртуальную материнскую плату (ВМП). |
| Virtualization Infrastructure Driver | Работает в режиме ядра (т.е. в привилегированном кольце процессора) и управляет разделами диска, памятью и процессорами виртуальных машин, работающих в дочерних разделах. Драйвер виртуальной инфраструктуры (Vid.sys) также предоставляет канал для компонентов стека виртуализации для их общения с гипервизором. |
| Virtual Devices | Виртуальные устройства управляются виртуальной материнской платой (ВМП). Виртуальные платы находятся внутри рабочих поцессов виртуальной машины, по одной для каждой виртуальной машины. Виртуальные устройства делятся на две категории, Core VDevs и Plug-in VDevs. Core VDevs могут быть как Emulated, так и Synthetic устройства. |
| Windows Hypervisor Interface Library | DLL (называемый WinHv.sys) располагается в родительском разделе Windows Server 2008, и в гостевых операционных системах Hyper-V aware . Дает драйверам операционной системы доступ к гипервизору с использованием стандартных Windows API calls вместо hypercalls. |
В дополнение к компонентам, содержащимся в стеке виртуализации (virtualization stack), корневой раздел так же содержит следующие компоненты: VMBus ,Virtualization Service Providers, Virtualization Service Clients.
| VMBus | Будучи частью Hyper-V Integration Services, VMBus способствует оптимизированной связи между дочерним и родительский разделами. |
| Virtualization Service Providers | Находится в родительском разделе и обеспечивает поддержку синтетических устройств (synthetic devices) через VMBus на Virtual Service Clients (VSCS), работающих в дочерних разделах. |
| Virtualization Service Clients | Virtualization Service Clients являются синтетическими устройствами, которые находятся в дочерних разделах. Они общаются с VSPs в родительском разделе через VMBus для того, чтобы выполнить запросы на доступ устройства в дочернем разделе. |
Hyper-V поддерживает различные типы гостевых операционных систем, работающих в дочерних разделах. Это Hyper-V Aware Windows Operating Systems, Hyper-V Aware non-Windows Operating Systems и Non Hyper-V Aware Operating Systems.
Hyper-V Aware Windows Operating Systems - (так же упоминается как продвинутая операционная система) Такие системы способны обнаружить, что они работают на гипервизоре Hyper-V и изменить поведение для достижения максимальной производительности (например, использовать hypercalls). Кроме того, эти операционные системы могут использовать Integration Services для работы с Virtual Service Clients (VSCs), которые общаются через VMBus с Virtual Service Providers (VSP) для прямого доступа к физическим устройствам.
Hyper-V Aware Non-Windows Operating Systems – такие системы также могут запускать Integration Services, а через использование VSCS, поставляемых третьими лицами, иметь доступ к устройствам через VSPs корневого раздела. Продвинутые операционные системы способны изменить поведение, чтобы оптимизировать производительность и общаться непосредственно с гипервизором посредством использования hypercalls.
Non Hyper-V Aware Operating Systems - эти операционные системы не знают, что они работают на гипервизоре и им не удается запустить Integration Services. Для поддержки этих операционных систем, гипервизор Hyper-V использует эмуляцию для обеспечения доступа к устройствам и ресурсам центрального процессора. Хотя этот подход позволяет таким операционным системам функционировать в Hyper-V , расходы ресурсов, присущие процессу эмуляции могут быть существенным.
|
|