Установка служб интеграции Hyper-V (LIS) в Linux

При развёртывании виртуальной машины Hyper-V с Linux необходимо установить в гостевой ОС Linux службы интеграции со средой виртуализации. Hyper-V LIS (Linux Integration Services) позволяют гостевой ОС взаимодействовать с гипервизором – передавать свое состояние, также нужны для корректной работы резервного копирования через VSS. В этой статье мы рассмотрим, как установить Hyper-V Linux Integration Services в популярных дистрибутивах CentOS, Debian и Ubuntu.

LIS в Hyper-V являются аналогом VMware Tools в VMWare ESXi

Установка Hyper-V Linux Integration Services в Ubuntu

Перед установкой Hyper-V Linux Integration Services в виртуальную машину с Ubuntu, нужно добавить модули hv_modules в initramfs-tools:

# echo 'hv_vmbus' >> /etc/initramfs-tools/modules
# echo 'hv_storvsc' >> /etc/initramfs-tools/modules
# echo 'hv_blkvsc' >> /etc/initramfs-tools/modules
# echo 'hv_netvsc' >> /etc/initramfs-tools/modules

Устанавливаем компоненты интеграции с Hyper-V:

# apt -y install linux-virtual linux-cloud-tools-virtual linux-tools-virtual
# update-initramfs -u
# reboot

Проверяем, что компоненты интеграции LIS установлены:

# lsmod | grep hv

Команда выведет список подключенных модулей.

В дистрибутивах Ubuntu 16.04, 18.04, 20.04, 22.04 LTS можно установить драйверы интеграции Hyper-V, которые Microsoft использует для ВМ в Azure:

# apt update
# apt install linux-azure

Проверьте версию модулей ядра Linux Integration Services с помощью команды:

# /sbin/modinfo hv_vmbus

Установка компонент интеграции LIS Hyper-V в Debian

В версиях Debian 9 и более ранних, вам нужно вручную добавить модули LIS в initramfs:

# nano /etc/initramfs-tools/modules

Добавьте строки:hv_vmbus hv_storvsc hv_blkvsc hv_netvsc

Установите компоненты интеграции и перезагрузите Debian:
# apt-get install -t jessie-backports hyperv-daemons
# update-initramfs -u
# reboot

Linux Integration Services по умолчанию уже включены в дистрибутив Debian 10 (Buster) и вам нужно только установить службы интеграции Hyper-V Debian из официального репозитория Debian:

# apt-get install hyperv-daemons
# reboot

В новом Debian 11 (Bullseye) по умолчанию установлены как LIS так и hyper-v-daemons, поэтому отдельно ничего устанавливать не нужно.

Проверьте, что службы настроены на автоматический запуск:

# systemctl status hyperv-daemons.hv-*

Linux Integration Services в CentOS Linux

В CentOS начиная с версии 6.4, компоненты Linux Integration Services уже включены в базовый образ CentOS и отдельно их устанавливать не нужно. Однако есть несколько дополнительных гостевых служб Hyper-V, которые расширяют взаимодействие Hyper-V и гостевой CentOS:

  • VSS daemon (используется для резервного копирования на базе снимков) — пакет hypervvssd;
  • File copy daemon (позволяет использовать PowerShell для прямого копирования файлов между ВМ и хостом через шину vmbus) и служба обмена данными KVP (пакет hypervfcopyd).

Установка этих служб выполняется из базовых репозиториев CentOS:

# yum install hyperv-daemons
# yum list installed | grep hyperv

Запустите службу:

# systemctl enable hypervkvpd hypervvssd
# systemctl start hypervkvpd hypervvssd

После установки перезагрузите ВМ и проверьте, что служба Hyper-V VSS daemon работает:

# systemctl status hypervvssd

В старых версия CentOS 6 службы интеграции Hyper-V можно установить с диска Linux Integration Services (LinuxIC). ISO образ LIS 4.3 можно скачать здесь Linux Integration Services v4.3 for Hyper-V and Azure.

Или можно установить компонент интеграции Hyper-V из репозитория EPEL:

# yum install epel-release
# yum install hyperv-daemons
# reboot

Проверьте, что службы интеграции Hyper-V запущены в CentOS 6:

# service --status-all | grep hv_*hv_fcopy_daemon is stopped hv_kvp_daemon (pid 1121) is running… hv_vss_daemon (pid 1329) is running…

Если попробовать выполнить резервное копирование Linux ВМ с CentOS любым средством с поддержкой VSS, в логе должны быть строки от службы hv_vss_daemon:

# tail -f /var/log/messages | grep Hyper-V

Если VSS не работает, проверьте что запущена служба hypervvssd:

# systemctl status hypervvssd

Управление Linux Integration Services в Hyper-V

После установки компонентов интеграции Hyper-V в виртуальную машину Linux вы можете получить информацию о гостевых ОС с хоста Hyper-V. Чтобы вывести версии компонентов LIS в Linux, выполните команду PowerShell:

Get-VM | Format-Table Name, IntegrationServicesVersion

Можно получить состояние компонентов интеграции Hyper-V на конкретной ВМ:

Get-VMIntegrationService -VMName LinuxVM1

  • Guest Service Interface
  • Heartbeat
  • Key-Value Pair Exchange
  • Shutdown
  • Time Synchronization
  • VSS

В данном примере Key-Value Pair Exchange показывает No Contact. Это может значит, что компонент отключен в гостевой Linux или отключен в настройках ВМ.

Вы можете включить/отключить компонент интеграции для ВМ с помощью команд:

  • Enable-VMIntegrationService -VMName LinuxVM1 -Name “Key-Value Pair Exchange”
  • Disable-VMIntegrationService -VMName LinuxVM1 -Name “Key-Value Pair Exchange”

Или вы можете включить компонент в консоли Hyper-V в настройках ВМ на вкладке Integration Services.

Для прямого копирования фалов между Hyper-V и гостевой ВМ с Linux можно использовать команду PowerShell:
Copy-VMFile -Name LinuxVM1 -SourcePath 'C:\pc\ifcfg-eth0' -DestinationPath '/etc/sysconfig/network-scripts/' -FileSource Host -Force

Включить Hyper-V Enhanced Session Mode для виртуальной машины Ubuntu

Вы можете использовать Enhanced session mode для подключения к виртуальной машине Linux на хосте Hyper-V по RDP. В этом режиме вы можете использовать в консоли подключения Hyper-V в Linux все те фичи, которые доступны для виртуальных машин Windows (буфер обмена, перенаправление устройств, поддержка большого разрешения экрана, подключение к изолированной ВМ через шину vmbus и т.д.).

В этом примере мы настроим Enhanced session mode для включая Ubuntu 22.04 LTS:

  1. Проверьте, что для ВМ выбрано второе поколение виртуальных машин Hyper-V (Generation 2) и в настройках виртуального оборудования включена поддержка Secure Boot для Linux. Для корректной работы Secure Boot нужно изменить шаблон в настройках ВМ с изменить “Microsoft Windows” to “Microsoft UEFI Certificate Authority”. Иначе при загрузке появится ошибка: The image’s hash and certificate are not allowed (DB).

Установите Hyper-V LIS (Linux Integration Services) в гостевой Ubuntu как описано выше;Установите XRDP+XORGXRDP:
$ wget https://raw.githubusercontent.com/Microsoft/linux-vm-tools/master/ubuntu/18.04/install.sh$ sudo chmod +x install.sh
$ sudo ./install.sh
Измените порт подключения в xrdp.ini:# nano /etc/xrdp/xrdp.iniport=3389Выключите ВМ Ubuntu и включите поддержку режима Enhanced session mode на хосте Hyper-V с помощью команд PowerShell:
Set-VMHost -EnableEnhancedSessionMode $true
Set-VM -VMName yourUbuntuVM -EnhancedSessionTransportType HvSocket
Теперь при подключении к консоли вашей ВМ через Hyper-V Manager будет всегда использоваться расширенный режим.

Источник: https://vmblog.ru/ustanovka-sluzhb-integracii-hyperv-linux/?ysclid=lowsvdimik304103024