Skip to main content

Windows Server 2016 и службы интеграции Hyper-V

Дата публикации: 06.03.2017

Службы интеграции Hyper-V отвечают за эффективное взаимодействие виртуальных машин и гипервизора посредством установки дополнительных сервисов в гостевую ОС.

Для понимания степени важности, предлагаю кратко рассмотреть каждую из них и затем перейти к изменениям в Windows Server 2016.

По умолчанию, не все службы включены. Guest Services, как правило, включается по мере необходимости. Остальные отвечают за более важную функциональность.

Operating System Shutdown – включает возможность завершения работы ВМ (аналогия привычного shutdown из гостевой ОС), используя Hyper-V Manager или PowerShell/WMI.

Time Synchronization – отвечает за предоставление синхронизации времени между хостом и виртуальной машины.

Data Exchange или KVP (key-value pairs) – предоставляет функционал обмена значениями формата key + value типа strings, расположенных в ветке реестра HKLM\Software\Microsoft\Virtual Machine\ или в файлах kvp_pool_x (для ОС Linux) через VMbus. На стороне хоста WMI-запросами занимается VMMS.exe (функции AddKvpItems, ModifyKvpItems и RemoveKvpItems). В свою очередь, на ВМ должна быть запущена служба Hyper-V Data Exchange Service.

HKLM\Software\Microsoft\Virtual Machine\Auto содержит информацию о ВМ, к-ая генерируется во время первого запуска службы Hyper-V Data Exchange Service.

HKLM\Software\Microsoft\Virtual Machine\External содержит данные, отправленные пользователем со стороны хоста. По умолчанию данный раздел пуст и не содержит никаких объектов KVP.

HKLM\Software\Microsoft\Virtual Machine\Guest презентует данные, которые необходимо отправить узлу виртуализации из данной ВМ. К примеру, сведения о AVMA-активации или кастомные параметры, которые Вашему приложению необходимо передать на уровень выше (да, в целом, мы можем добавлять собственные пары key + value и работать с ними через KVP и WMI без предоставления credentials. Новая аналогия – PowerShell Direct, но своими плюсами и минусами).

HKLM\Software\Microsoft\Virtual Machine\Guest\Parameters содержит информацию об узле виртуализации (наименование, FQDN, VMID и т.д). Запомните эту ветку – она далее нам пригодится.

Heartbeat отвечает за проверку состояния ВМ через hearbeats, выполняемые в определенный интервал, между ВМ и узлом.

Backup (volume snapshot) включает возможность использования задач резервного копирования ВМ на уровне хоста для обеспечения консистентности резервных копий.

Guest Services обеспечивают передачу файлов в ВМ через WMI или PowerShell (Copy-VMFile). По умолчанию, не включена. Более подробно можно почитать тут.


 

Что нужно учитывать в Windows Server 2016?

Все помнят, что для установки служб интеграции приходилось монтировать ISO-образ (%systemroot%\system32\vmguest.iso) через опцию «Insert Integration Services Setup Disk» в консоли ВМ и запускать процесс установки внутри ВМ. Затем проверять версию IS время от времени для её актуализации (vmguest.iso, так же как и узел, тоже обновлялся через Windows Update).

Данный процесс существенно поменялся в Windows Server 2016. Опции в консоли теперь нет, как и самого vmguest.iso. Теперь распространением IS на ВМ занимается сам Windows Update. Но есть особенности, которые мы рассмотрим ниже.

Автоматическая доставка IS через Windows Update доступна для новых ОС внутри ВМ (начиная с Windows Server 2012 R2/Windows 8.1 и новее). Дополнительных действий от вас не требуется.

Если гостевые ОС на базе Windows Server 2012/Windows 8 и старше, то требуется наличие рабочей службы Data Exchange Service (рассмотренная выше). DES предоставляет доступ к параметрам/values HostSystemOSMajor and HostSystemOSMinor, располагающиеся в ветке HKLM\SOFTWARE\Microsoft\Virtual Machine\Guest\Parameters,для определения необходимости обновления IS на ВМ. Данные параметры должны присутствовать и иметь значения. В противном случае (к примеру, если DES не включен для ВМ или служба не выполняется), IS не будут предоставляться через WU.

TIP: мы можем вручную создать или изменить данные значения реестра для подачи «фальш»-сигнала, но данное действие официально не поддерживается.

Предположим, что в рамках ВМ выполняется Windows Server 2012 R2, а на хосте – Windows Server 2016. DES получает сведения о ВМ, сверяет значения между имеющимися на узле и полученные от ВМ и они оказываются различными, таким образом IS на ВМ не актуальны и их обновление будет выполнено через WU.

В случае с ОС на базеLinux, как правило, IS идут встроенными. В ряде случаев требуется пакет Linux Integration Services (см. описание в pdf) или FreeBSD Integration Services . Получить подробные сведения о требованиях к различным дистрибутивам и функциональности можно из статьи библиотеки:  Supported Linux and FreeBSD virtual machines for Hyper-V on Windows.

Если у Вас всё ещё есть виртуализированный Windows Server 2003 , который уже не поддерживается, то, как минимум, рекомендуется устанавливать IS, используя vmguest.iso из Windows Server 2012 R2, к примеру. Надежность и производительность не гарантируется, но, народ,  2003-й год был уже 14 лет назад.. Конечно, миграция на более новые версии ОС будет предпочтительна в данном случае.

Как установить IS вручную?

Если DES не выполняется или Windows Update недоступен из ВМ, то есть специальный KB для самостоятельной загрузки IS:

Hyper-V integration components update for Windows virtual machines that are running on a Windows 10 or Windows Server 2016-based host.

(доступная в KB версия IS: 6.3.9600.17903) + IS Update для устранения проблем с Windows Server Guest OSes (IS ver.6.3.9600.18080, применим и для Windows7/8.1).

Предварительно нужно удостовериться в наличии установленных   April 2014, update rollup for Windows RT 8.1, Windows 8.1, and Windows Server 2012 R2 (2919355) и Service Pack 1 for Windows 7.

IS из KB доступен в виде cab-файла, который можно применить через PowerShell:

Add-WindowsPackage-PackagePath-Online

Если нужно применить обновление IS на выключенной ВМ (offline vm servicing), то рекомендую обратиться к данному руководству.

Примечание: более новая версия IS выложена в виде vmguest.iso (см.ниже, неофициальный источник загрузки) для упрощения процесса самостоятельного обновления.

Где я могу найти VMGuest.iso?

Загрузить VMGuest.ISO можно здесь . Данный образ содержит IS Windows Server 2012 R2, обновленные на текущий момент (февраль, 2017. Версия IS6.3.9600.18398). Вы можете использовать их для установки или обновления IS «доисторических» ОС на узлах Windows Server 2016 (миграция на новые ОС предпочтительна) или на узлах с Windows Server 2012 R2/Windows 8.1.


Автор статьи: Роман Левченко ( https://rlevchenko.com), MVP – Cloud and Datacenter Management.

Роман Левченко начал свою IT-карьеру в 2007 году и на данный момент работает в качестве Системного Архитектора в лидирующем интеграторе. Имеет опыт построения комплексных систем преимущественно на базе продуктов Microsoft с использованием облачных технологий Azure и широкого спектра аппаратного обеспечения от ведущих вендоров. Сертифицирован по технологиям Windows Server, Hyper-V, System Center, VMware vSphere и системам объединенных коммуникаций. Впервые получил статус MVP в 2014 году и является VMware vExpert с 2016 года. Делится своим практическим опытом по автоматизации (PowerShell), облачным технологиям (Azure, Hybrid/Private Clouds) и виртуализации в блоге https://rlevchenko.com, активно участвует в жизни технических сообществ.


Данный материал написан участником сообщества. В статье представлено мнение автора, которое может не совпадать с мнением корпорации Microsoft. Microsoft не несет ответственности за проблемы в работе аппаратного или программного обеспечения, которые могли возникнуть после использования материалов данной статьи.