- Поддерживаемые виртуальные машины Ubuntu в Hyper-V
- Условные обозначения таблицы
- Примечания
- См. также:
- Установка служб интеграции Hyper-V (LIS) в Linux
- Установка Hyper-V Linux Integration Services в Ubuntu
- Установка компонент интеграции LIS Hyper-V в Debian
- Linux Integration Services в CentOS Linux
- Управление Linux Integration Services в Hyper-V
- Включить Hyper-V Enhanced Session Mode для виртуальной машины Ubuntu
- Enable Hyper-V Integration Services for your Ubuntu guest VMs
- Azure Kernel
Поддерживаемые виртуальные машины Ubuntu в Hyper-V
Применимо к: Windows Server 2022, Azure Stack HCI версии 20H2; Windows Server 2019, Hyper-V Server 2019, Windows Server 2016, Hyper-V Server 2016, Windows Server 2012 R2, Hyper-V Server 2012 R2, Windows 10, Windows 8.1
На следующей схеме распределения компонентов указываются признаки в каждой версии. Известные проблемы и обходные пути для каждого дистрибутива перечислены после таблицы.
Условные обозначения таблицы
- Встроенные службы Linux Integration Services (LIS) входят в состав этого дистрибутива Linux. Предоставленный корпорацией Майкрософт пакет для скачивания LIS не подходит для этого дистрибутива, поэтому не устанавливайте его. Номера версий модуля ядра для встроенного LIS (как показано, например, в lsmod) отличаются от номера версии в предоставленном Корпорацией Майкрософт пакете загрузки LIS. Несоответствие не означает, что встроенная функция LIS устарела.
- ✔ — Доступные функции
- (пусто) — функция недоступна
Примечания
- Внедрение статических IP-адресов может не работать, если диспетчер сети был настроен для заданного сетевого адаптера Hyper-V на виртуальной машине. Чтобы обеспечить бесперебойную работу статического внедрения IP-адресов, убедитесь, что диспетчер сети полностью отключен или отключен для определенного сетевого адаптера с помощью файла ifcfg-ethX .
- При использовании устройств виртуального оптоволоконного канала убедитесь, что логическая единица 0 (LUN 0) заполнена. Если LUN 0 не заполнен, виртуальная машина Linux может не подключить устройства с оптоволоконным каналом в собственном коде.
- Если во время операции резервного копирования виртуальной машины в реальном времени имеются открытые дескрипторы файлов, то в некоторых случаях виртуальным жестким дискам с резервными копиями может потребоваться пройти проверку согласованности файловой системы ( fsck ) при восстановлении.
- Операции динамического резервного копирования могут завершаться автоматическим сбоем, если к виртуальной машине подключено устройство iSCSI или хранилище с прямым подключением (также известное как сквозной диск).
- В выпусках долгосрочной поддержки (LTS) используется последнее ядро виртуального оборудования (HWE) для актуальных служб Linux Integration Services. Чтобы установить ядро, настроенное в Azure, в версиях 16.04, 18.04 и 20.04, выполните следующие команды от имени root (или sudo):
# apt-get update # apt-get install linux-azure
- Объем памяти при запуске и минимальный объем памяти должен быть равен или больше объема памяти, рекомендуемого поставщиком распространителя.
- Приложения, которые, как правило, потребляют всю доступную память в системе, ограничены потреблением до 80 процентов доступной ОЗУ.
Set-VMFirmware -VMName "VMname" -EnableSecureBoot Off
- Войдите на существующую виртуальную машину поколения 2.
- Измените каталог на каталог загрузки EFI:
# sudo mv shimx64.efi bootx64.efi
См. также:
Установка служб интеграции Hyper-V (LIS) в Linux
При развёртывании виртуальной машины Hyper-V с Linux необходимо установить в гостевой ОС Linux службы интеграции со средой виртуализации. Hyper-V LIS (Linux Integration Services) позволяют гостевой ОС взаимодействовать с гипервизором – передавать свое состояние, также нужны для корректной работы резервного копирования через VSS. В этой статье мы рассмотрим, как установить Hyper-V Linux Integration Services в популярных дистрибутивах CentOS, Debian и Ubuntu.
Установка 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
После этого обновите текущие пакеты:
# apt update && apt -y upgrade
Теперь нужно установить компоненты интеграции с Hyper-V:
# apt -y install linux-virtual linux-cloud-tools-virtual linux-tools-virtual
# update-initramfs -u
# reboot
Проверьте, что компоненты интеграции LIS установлены:
Команда выведет список подключенных модулей.
В дистрибутивах Ubuntu 16.04, 18.04, 20.04, 22.04 LTS можно установить драйверы интеграции Hyper-V, которые Microsoft использует для ВМ в Azure:
# apt update
# apt install linux-azure
Проверьте версию модулей ядра Linux Integration Services с помощью команды:
filename: /lib/modules/2.6.32-71.el6.x86_64/extra/microsoft-hyper-v/hv_vmbus.ko version: 4.3.5
Если у вас в Ubuntu установлена более старая версия LIS, вы можете обновить ее с помощью команд:
# wget https://download.microsoft.com/download/6/8/F/68FE11B8-FAA4-4F8D-8C7D-74DA7F2CFC8C/lis-rpms-4.3.5.x86_64.tar.gz
# tar -xzf lis-rpms-4.3.5.x86_64.tar.gz
# cd LISISO/
# ./upgrade.sh
# reboot
Проверьте версию hv_vmbus после обновления:
Установка компонент интеграции LIS Hyper-V в Debian
В версиях Debian 9 и более ранних, вам нужно вручную добавить модули LIS в initramfs:
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:
- Проверьте, что для ВМ выбрано второе поколение виртуальных машин 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).
$ wget https://raw.githubusercontent.com/Microsoft/linux-vm-tools/master/ubuntu/18.04/install.sh$ sudo chmod +x install.sh
$ sudo ./install.sh
Enable Hyper-V Integration Services for your Ubuntu guest VMs
For some legacy reasons, my main hypervisor has been Hyper-V running on a Windows Server. And contrary to popular belief, Linux actually supports Secure Boot and UEFI boot pretty well, and so you can create Generation 2 VM that runs Linux OS just fine. However, after installing the OS, you might have noticed that Hyper-V doesn’t talk to the guest VM very well – features such as shutdown or reset do not work. That is because the Linux kernel does not include Hyper-V drivers and agents. This is akin to VMware’s vmtools for the ESXi platform.
This can be easily rectified by manually installing those components. First, you will have to edit the file at /etc/initramfs-tools/modules and add in the following modules:
hv_utils hv_vmbus hv_storvsc hv_blkvsc hv_netvsc
After saving the modules file, install the virtual tools:
apt install linux-virtual linux-cloud-tools-virtual linux-tools-virtual
Don’t forget to update initramfs :
Finally, restart the VM. When all is done, you’ll notice your guest VM would run a little bit faster, and you are able to see Networking details of that Linux VM in your Hyper-V Manager. Shutdown and Reset commands from the Hyper-V to the Linux VM should also work.
Azure Kernel
If you do not want to mess with the above, you may also replace your Ubuntu main kernel with an Azure-tuned kernel. This is the same kernel which Microsoft runs on their Azure environment. Simply run the following command as root: