Отличия гипервизора на монолитной и микроядерной архитектуре

Обновлено 17.05.2021

Отличия гипервизора на монолитной и микроядерной архитектуре

Добрый день уважаемые читатели блога и подписчики youtube канала, сегодня я хочу с вами поговорить на тему какие отличия гипервизора на монолитной и микроядерной архитектуре, я думаю не все знают о том, что архитектур две. Мы с вами узнаем, у кого какие плюсы и минусы, так сказать продолжим холивары между Vmware и Microsoft, уверен вам это будет очень интересно и вы сможете, что-то переосмыслить.

Игроки на рынке виртуализации

И так. я вам давно уже рассказывал, что такое виртуализация и рассказывал ее принципы на примере Vmware ESXI. Сегодня я хочу вам рассказать как работает Hyper-V  и чем же отличаются два подхода в плане архитектуры процесса гипервизора. Как вы знаете на рынке сейчас два крупных игрока, первый и лидирующий это Vmware и догоняющий его с каждым годом Microsoft Hyper-V. Напомню, что каждое из данных решений, позволяет вам на одном физическом сервере запускать множество виртуальных машин с любой операционной системой. Такие ос, называются гостевыми, а основная называется хостовой. Все гостевые ОС работают в своем изолированном окружении, и самое забавное, что каждая думает, что она работает на отдельном сервере.

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

Что такое гипервизор

Я думаю если спросить большинство инженеров по виртуализации, то они не смогут вам сказать происхождение слова гипервизор. Данное понятие, появилось кажется в 1972 году, в компании IBM. В те далекие времена перед IBM стояла задача виртуализации на своих мэйнфреймах System/370. Это стало просто мега открытием, с дало возможность обходить архитектурные ограничения и как следствие хорошую экономию по деньгам, так как мэйнфреймы стояли дорого, а они научились их использовать более рационально и полностью утилизировать их ресурсы.

Гипервизор - это по сути некая платформа для виртуализации, функционал которой дает возможность запускать в рамках одного физического сервера, более одной операционной системы. Благодаря ему гостевые ос и получают изолированность и доступ к аппаратному обеспечению компьютера.

Архитектуры гипервизоров

Существует две различные архитектуры:

  • монолитная
  • микроядерная

По мимо архитектур, у гипервизоров, еще и два типа

1 Тип гипервизора

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

Отличия гипервизора на монолитной и микроядерной архитектуре

К данному типу относятся вот такие игроки:

2 Тип гипервизора

Ко второму типу гипервизора относятся продукты которые позволяю виртуализовывать операционные системы, работая как программы на хостовой операционной системе.

2 Тип гипервизора

Очень простой пример, у вас есть установленная Windows 8.1, внутри нее вы устанавливаете гипервизор второго типа, у нас это будет VMware Workstation или Virtual Box. Как вы можете понять, в данном типе производительность ниже, чем у первого, так как есть излишняя и толстая прослойка в виде хостовой ос.

Монолитный гипервизор

И так с типами гипервизоров мы с вам познакомились, давайте разбираться в архитектурах. Первая на очереди это монолитная. Их главное отличие от других, что гипервизоры монолитной архитектуры включают драйверы аппаратных устройств в свой код.

Монолитный гипервизор

Достоинства и недостатки монолитной архитектуры

  • Более высокая производительность, так как драйвера находятся внутри гипервизора.
  • Повышенная надежность, если у вас будет сбой управляющей ОС, например в Vmware ESXI это Service Console, то это никак не повлияет на запущенные виртуальные машины.

Что плохого:

  • Логично, что поддерживаются устройства, драйвера, которых у вас установлены в гипервизоре. Если вы попытаетесь например добавить сетевую карту или fc карту в сервер на котором установлена Vmware ESXi версия, то если драйвера не будет, у вас карточка не появится среди доступных. В следствии чего, вендор гипервизора, должен плотно общаться и взаимодействовать с производителями железа, просить у них писать драйвера на их устройства для себя, тестировать это все дело. По той же причине при переходе на новую аппаратную платформу может понадобиться переход на другую версию гипервизора, и наоборот – при переходе на новую версию гипервизора может понадобиться смена аппаратной платформы, поскольку старое оборудование уже не поддерживается.
  • Меньшая безопасность, так как приходится в гипервизор добавлять лишний код, это те драйвера, что вы устанавливаете. Так как драйвер работает в пространстве гипервизора, то можно теоретически воспользоваться уязвимостью кода, тем самым попытаться получить контрольный доступ над хостовой ос, а если он получен то и над гостевыми операционными системами.

Самый известный монолитный гипервизор, это конечно VMware ESXI.

Микроядерный гипевизор

Все с монолитной плитой мы разобрались. теперь на очереди понять принцип работы микроядерной архитектуры. Главное отличие в том, что драйвера на устройства устанавливаются внутри родительской ОС (хостовой)

Микроядерный гипевизор

По сути хоставая операционная система (Parent Partition), запускается как виртуальная машины, в том же окружении, где и все виртуалки, все остальные дочерние теперь. Разница между ними лишь в том, что родительская виртуалка, единственная имеет непосредственный доступ к оборудованию сервера. А выделением всевозможных ресурсов, различными планировщиками и оптимизацией мощностей занимается гипервизор.

Достоинства и недостатки микроядерной архитектуры

Что хорошего:

  • Как вы уже наверно догадались, не требуются драйвера заточенные под гипервизор, а уж под Windows найти драйвера не проблема. Гипервизор микроядерной архитектуры, имеет совместимость почти с любым оборудованием, и имеет в 99 процентов случаев драйвера для parent partition.
  • Если дальше развить мысль, то мы видим, что гипервизор разгрузили по задачам, так как драйвера обрабатывает родительская виртуальная машина, значит у него есть больше времени и ресурсов для более важных задач, например за управлением работы памяти, планировщика и т.д.
  • Более безопасен, так как левого кода не крутится в нем.

Ну и и из самых таких крутых представителей это архитектуры, это конечно Microsoft Hyper-V.

Принцип работы windows server hyper-v

Про, то как работает архитектура Vmware ESXi я уже писал и в этом нет нужды, сейчас хочу рассмотреть гипервизор windows server hyper-v, чтобы вы более точно поняли отличия монолитной и микроядерной систем. Ниже я вам привел схему работы Hyper-V, давайте ее более подробно рассмотрим.

Отличия гипервизора на монолитной и микроядерной архитектуре

Напоминаю это гипервизор первого типа. Поверх него работают parent partition (родительская партиция) и дочерние, их может быть много все зависит от мощностей сервера. В такой реализации, дочерние партиции, это некая такая область изоляции, в которой операционные системы, думают, что они работают одни и на отдельном железе.В такой конструкции, все управление железом, лежит полностью на родительской виртуальной машине, и плюс управляет еще и дочерними партициями.Через интерфейс гипервызовов, все партиции связаны с гипервизором, который предоставляется через некий API.

Родительская партиция Hyper-V

parent partition появляется в момент установки роли Hyper-V. Ниже представлена схема компонентов родительской партиции и для чего она нужна.

Схема родительской партиции Hyper-v

  • Логично, что нам нужно создавать, удалять и управлять дочерними виртуалками, плюс можно использовать WMI-провайдера
  • Осуществлять доступ управления к аппаратным устройствам, за исключением выделения процессорного времени и памяти – этим занимается гипервизор.
  • Контролировать управлением питания и обработкой различных аппаратных ошибок

Принцип работы стека виртуализации

Тут я хочу более подробно рассмотреть, какие именно компоненты, работают в parent partition Hyper-V, все вместе они называются стек, и это не только у Microsoft, это во всех средах так называется некий набор компонентов, простой пример стек TCP/IP, который состоит из тьмы протоколов.

  • Служба VMMS (Virtual Machine Management service), отвечает за управление виртуалками
  • Служба VMWP, управляет рабочими процессами виртуалок.
  • Virtual Device или виртуальные устройства
  • Драйвер VID
  • Библиотека интерфейсов гипервизора

Забыл сказать, что в архитектуре Hyper-V есть еще два рабочих компонента. Это VSP или провайдер служб виртуализации, а так же VMBus или если угодно шина виртуальных машин.

VSP и VMBus

Компоненты VMMS

И так давайте смотреть, что входит в состав службы управления виртуальными машинами.

  • Она обязана управлять состояниями виртуалок, включена или выключена
  • С помощью нее вы добавляете или на оборот удаляете виртуальные устройства
  • Ну и конечно работа со снапшотами или как их еще называют моментальные снимки.

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

За что отвечает VMMS:

  • Запуск (Starting)
  • Активность (Active)
  • Не активность (Простой) (Not Active)
  • Снятие снапшота (Taking Snapshot)
  • Применение снапшота (Applying Snapshot)
  • Удаление снапшота (Deleting Snapshot)
  • Объединение дисков (Merging Disk)

Если вы вспомните про такие команды как пауза (Pause), Сохранить (Save ) или Завершить (Power Off), то ими не управляет VMMS, они то как раз работают в рабочем процессе соответствующей виртуальной машины. VMMS функционирует на двух уровнях, на уровне ядра как системная служба (VMMS.exe) и на уровне пользователя, она так же зависит от служб Remote Procedure Call (RPC) и Windows Management Instrumentation (WMI). Интерфейс для манипулированием виртуалок, ей предоставляет WMI-провайдер, входящий в VMMS как компонент. Из чего следует, что есть возможность работы с машинками из командной строки, а так же с помощью таких вещей как PowerShell или VBScript скрипты. Если вы знакомы с таким комплексом как System Center Virtual Machine Manager, то наверняка знаете. что он для управления виртуальными мишинками, тоже дергает этот интерфейс.

Теперь давайте разбираться в рабочем процессе виртуальной машины VMWP. Чтобы управлять виртуальной машиной за счет parent partition, используется специальный процесс VMWP. Он на пользовательском уровне запускается для каждой виртуальной машины, за счет службы  VMMS. Благодаря этому, достигается изолированность виртуальных машин друг от друга. Работают эти рабочие процессы из под локальной учетной записи Network Service, чтобы сделать весь процесс более безопасным.

Задачи VMWP:

  • Благодаря ему вы можете создавать, конфигурировать и запускать виртуальные машины
  • Выполнять команды продолжение работы или пауза
  • Делать снимки за счет команд Сохранить или восстановить состояние.
  • Эмулирует в виртуальной машине материнскую плату VMB, ее используют  виртуальные устройства, управление прерываниями и выделение памяти для гостевой операционной системы.

Виртуальные устройства Hyper-V

Давайте разбираться, что же такое эти виртуальные девайсы или в терминологии Hyper-V их называют VDevs - все очень просто это программы, с помощью которых реализовывается конфигурация и управление устройствами в виртуалках. Какие именно компоненты входят в VMB, по сути это шина PCI и куча системных устройств, идентичные чипсету Intel 440BX. VMB бывают двух видов:

  • Синтетические устройства - это устройства, которых в природе и не существует, у Vmware это могут быть примеры сетевых карточек VMXNET3, которых в жизни не существует. Примерами служат синтетический видеоадаптер, устройства взаимодействия с человеком (HID), сетевой адаптер, SCSI-контроллер, синтетический контроллер прерывания и контроллер памяти. Синтетические устройства могут использоваться только при условии установки компонент интеграции в гостевой ОС. Синтетические устройства обращаются к аппаратным устройствам сервера посредством провайдеров служб виртуализации, работающих в родительской партиции. Обращение идет через виртуальную шину VMBus, что намного быстрее, чем эмуляция физических устройств.
  • Эмулируемые устройства – эмулируют настоящие аппаратные устройства, которые можно найти в виде реальных деталей, такие, к примеру, как видеоадаптер VESA. Эмулируемых устройств достаточно много, к примеру: BIOS, DMA, APIC, шины ISA и PCI, контроллеры прерываний, таймеры, управление питанием, контроллеры последовательных портов, системный динамик, контроллер PS/2 клавиатуры и мыши, эмулируемый (Legacy) Ethernet-адаптер (DEC/Intel 21140), FDD, IDE-контроллер и видеоадаптер VESA/VGA. Именно поэтому для загрузки гостевой ОС может использоваться только виртуальный IDE-контроллер, а не SCSI, который является синтетическим устройством.

VSP провайдеры служб виртуализации

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

Библиотека интерфейса гипервизора

Смысл данной библиотеки WinHv.sys – это DLL на уровне ядра, которая загружается как в хостовой, так и в гостевых ОС, при условии установки компонент интеграции. Эта библиотека предоставляет интерфейс гипервызовов, использующийся для взаимодействия ОС и гипервизора.

VID драйвер виртуальной инфраструктуры

VID драйвер vid.sys функционирует на уровне ядра и выполняет управление партициями, виртуальными процессорами и памятью. Так же этот драйвер является промежуточным звеном между гипервизором и компонентами стека виртуализации уровня пользователя.

VMBus шина виртуальных машин

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

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

Отличия гипервизора на монолитной и микроядерной архитектуре

Что можно поставить в дочерних партициях

  • ОС Windows, с установленными компонентами интеграции (в нашем случае – Windows 10)
  • ОС не из семейства Windows, но поддерживающая компоненты интеграции (Red Hat Enterprise Linux в нашем случае)
  • ОС, не поддерживающие компоненты интеграции (например, FreeBSD).

Во всех трех случаях набор компонент в дочерних партициях будет немного различаться.

Компоненты интеграции для семейства Windows поддерживаются начиная с 2000 версии. Как только вы установите в операционную систему Hyper-V Integration Services, у вас начнут работать вот такие компоненты:

  • VSC или клиент служб виртуализации, по сути это синтетические устройства, которые через VMBus > VSP получают доступ к физическим устройствам. VSC работает, только после установки Hyper-V Integration Services и уже после этого синтетические устройства вам доступны, все как и в Vmware. Еще начиная с Windows 7 и Windows Server 2008 R2, они под капотом имеют Hyper-V Integration Services, инсталлировать их дополнительно не нужно. Еще одно из назначение компонентов интеграции, это обеспечить более быструю работу гостевой ОС и гипервизора. Данный код относится к дисковой, графической и сетевой подсистеме, навенро сразу замечали, что как только их поставишь, система сразу в консоли перестает тормозить.

Так же, компоненты интеграции предоставляют следующий функционал:

  • Heartbeat (или серцебиения)– помогает определить, отвечает ли дочерняя партиция на запросы из родительской.
  • Обмен ключами реестра – позволяет обмениваться ключами реестра между дочерней и родительской партицией.
  • Синхронизация времени между хостовой и гостевой ОС, но лучше синхронизироваться, все же с контроллером домена.
  • Завершение работы гостевой ОС
  • Служба теневого копирования томов (VSS), позволяющая получать консистентные резервные копии.

Какие ос еще поддерживают компоненты интеграции

  • SUSE Linux Enterprise Server
  • Red Hat Enterprise Linux

У них правда свой VSC от сторонних производителей. Компоненты интеграции для Linux разработаны компанией Microsoft совместно с Citrix и доступны для загрузки в Microsoft Download Center.

Поскольку компоненты интеграции для Linux были выпущены под лицензией GPL v2, ведутся работы по интеграции их в ядро Linux через Linux Driver Project, что позволит значительно расширить список поддерживаемых гостевых ОС. Надеюсь вы теперь поняли разницу между монолитной и микроядерной архитектурой.

Автор - Сёмин Иван

One Response to Отличия гипервизора на монолитной и микроядерной архитектуре

  1. Алла:

    Спасибо! Очень интересный пост.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *