Компоненты службы интеграции Hyper V установка и настройка
19 сентября 2019
Для более удобного управления виртуальными машинами, а так же для служебных задач и увеличения производительности существуют службы интеграции Hyper V. Службы интеграций (Integration Services) это набор компонентов, в частности драйверов, частью из которых можно управлять отключая и включая для определенных нужд. Если вы работали с VMWare vSphere или Workstation, то сталкивались с похожим функционалом под названием VMWare Tools.
Если мы зайдем в свойства ВМ, то можем увидеть эти службы:
В зависимости от редакции операционной системы гипервизора не все службы могут быть:
- Operation System Shutdown (Завершение работы операционной системы) — этот пакет интеграции Hyper V позволяет корректно завершать работу операционной системы ВМ из панели гипервизора. Если эта служба отключена при завершении работы появится ошибка ‘The operation system shutdown integration service is not enabled’. Кнопка горячего выключения VM будет доступна. Добавлено в Windows Server 2012/8.
- Time Synchronization (Синхронизация времени) — синхронизирует время ВМ и хоста гипервизора. Добавлено в версиях 2012/8.
- Data Exchange (Обмен данными) — распределяет небольшие объёмы машинной информации между ВМ и гипервизором. Если ОС виртуальной машины от Microsoft, то значения хранятся в реестре, если Linux, то в файлах. Так же называется KVP. Добавлено в 2012/8.
- Heartbeat (Пульс) — мониторинг состояния VM. Например это определение состояния включена или отключена виртуальная машина.
- Backup (volume shadow copy/Архивация) — позволяет корректно выполнять бэкап работающей виртуальной машины с помощью технологии Volume Shadow Copy. Добавлено в 2012 и 8.
- Guest services (Интерфейс гостевой службы) — позволяет копировать в Hyper V данные между хостом гипервизора и VM. Добавлено в Windows Server 2012 R2/8.
Состояние этих сервисов можно посмотреть и через Powershell:
Можно так же включить пакеты интеграций с помощью Powershell:
К компонентам интеграции Hyper V относится Powershell Direct, которая позволяет управлять виртуальной машиной из Powershell минуя конфигурацию сети. Такая возможность появилась в службах интеграции Windows Server 2016 и 10. Например так:
Кроме описанных выше возможностей к пакетам интеграции относятся и драйвера, которое относятся к разному типу оборудований. Таких типов оборудования всего два.
Эмулированное оборудование — используется для поддержки старых или неизвестных операционных систем. В основном, какой тип оборудования будет использоваться решается в момент выбора поколения при создании виртуальных машин Hyper V. Это оборудование медленней, чем следующее поколение и хоть почти все системы могут с ним работать, его не следует выбирать при возможности. Пример такого оборудования — это контроллер IDE и Legacy Network Adapter. Пример с ВМ Generation 1:
Синтетическое оборудование — чаще используется в виртуальных машинах второго поколения. Основное преимущество в том, что оно работает быстрее.
Пример разной работы этих типов оборудования.
Windows Server 2016 и службы интеграции Hyper-V
Службы интеграции 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 и 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 или 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, применим и для Windows 7/8.1).
IS из KB доступен в виде cab-файла, который можно применить через PowerShell: Add-WindowsPackage -PackagePath
-Online. Если нужно применить обновление IS на выключенной ВМ (offline vm servicing), то рекомендуем обратиться к данному руководству.
Windows 2016 Hyper-V with Windows Server 2003 SP2 guest
14 Replies
Why would you even be considering installing 1 EOL server, let alone lots of
Simply put, it’s a client with custom software that they don’t want to change. Their business hasn’t changed in 25 years so they want to stay with what works. Regardless, these are already running physical machines, and I’ve been able to virtualize them onto Windows Server 2008R2’s HyperV platform, but I’m not sure what complications I might find when moving to 2016 Hyper-V. I understand in 2016 that it’s not technically supported, but I’m wondering if anyones done it yet or perhaps could give it a try if they had the 2016 Hyper-V running and access to test out a 2003 or something for me.
Yeah, ive got one running in my 2016 cluster. I originally did the p2v when it was running on 2012R2.
Check this out and let me know what you find. it will address some of the challenges you’ll have during the P2V process
I’m not trying to be argumentative here but you say they don’t want to change yet your putting in 2016 — so they must be willing to a degree.
On the flip side you say in 2016 it’s not technically supported — it isn’t supported period its been EOL for a few years.
While I am sure you know this, they are prepared to change as they have 2016 installed, but I assume not to a huge cost. Again not trying to argue just pointing out they have room to manoeuvre if they are willing to put in 2016.
If you already have them as physical boxes, you could also try, it wont matter if it works for others if your specific setup wont migrate correctly, it’s likely to be the software/dongle/connections on your side that stops it, not the OS itself.
Good luck either way
I’d think that after having seen this question dozens of times, the «why» is obvious — he has a need for it. I’ve done it, too. You have an app that can’t be updated. You have a legacy system that has to be supported. And on and on. Not everyone has the luxury of running generic apps that can are native to whatever the latest flavor of OS being peddled is. If the OP is talking about HV2016, he’s obvious current. I’m inclined to give him the benefit of the doubt.
My guess is that Microsoft has tweaked integration services to be incompatible with its older OSes. If you can run any non-Windows bootable OS, you’ll be able to run 2003R2 under Hyper-V, just without integration services. But you’d do that with Linux or ReactOS or whatever. In short, it should run. You just won’t have anyone to complain to if you have an integration issue.
It’s easy enough to try out. Put HV2016 on a workstation, bring in an export of the 2003 VM, and give it a run.
1. As other mentioned you should upgrade the app to 2008R2 or newer. 90% of making an app work is just disabling DEP for it. Wrapping it in App-V/ThinApp goes quite a ways too.
2. When your running weird and legacy OS’s ESXi is generally the goto as they will provide legacy best effort support and maintain KB’s of how to make things work (like 2003 requires something to keep the display from running slow). Microsoft tends to TRY to break things (or exclude drivers) to force an upgrade (Can’t blame them).
3. You need to have a 2003 security plan. NSX and micro segmentation are popular to the few 2003 shops I run into. You ideally want as little traffic going in and out of those boxes as possible.
Thanks for all the feedback guys. I think I’m optimistic about it running on 2016. This software is terribly complex and old and was custom built just for their business. It even involves some NT4 and Novell servers so it’s not as simple as just upgrading the app. The move from physical to virtual will just ensure that their systems and way of business can continue on indefinitely.
Does the lack of Integration Services change the user experience when they remote in with something such as Citrix or RDP? I don’t need to do anything like mount an image or anything from the host to the VM, or have a fancy interface with the Hyper-V VM console. The server mainly just needs to run, and have IP connectivity for all the Wyse Terminals to connect back over Citrix.