В предыдущей теме мы установили Hyper-V на VMware Workstation, сегодня установим Hyper-V внутри Hyper-V.
Начиная с версии Server 2016 и Windows 10 Anniversary Update и старше реализована технология SLAT, что позволяет включать вложенную виртуализацию (Nested Virtualization).
Требования для Nested Virtualization:
- Узел Hyper-V и виртуальная машина (ВМ) должны быть размещены в Windows Server 2016, Windows 10 Anniversary Update или более поздней версии.
- Версия конфигурации Виртуальной машины 8.0 или более поздняя.
- Процессор Intel с технологией Intel VT-x и EPT (вложение сейчас поддерживается только для процессоров Intel).
Поддерживает ли процессор SLAT?
Итак, если попробовать установить роль Hyper-V на виртуальную машину, то получим такой результат (на виртуальной машине установлен Server 2019)

Включим возможность процессора:
Set-VMProcessor -VMName -ExposeVirtualizationExtensions $true

На ВМ не должно быть динамической памяти и live migration.

Попробуем еще раз установить роль Hyper-V

Роль Hyper-V устанавливается.
Если есть необходимость в сетевом взаимодействии с родительской Hyper-V, хостом и Интернетом, то нужно настроить сетевое взаимодействие.
По сути мы получаем виртуальную среду внутри виртуальной и логика должна быть сохранена. Т.е. мы должны разрешить виртуализацию MAC адресов (MacAddressSpoofing), создание виртуальных свитчей внутри самой виртуализации (режим NAT).
Спуфинг MAC-адресов:
Get-VMNetworkAdapter -VMName | Set-VMNetworkAdapter -MacAddressSpoofing On

Режим NAT:
New-VMSwitch -Name VmNAT -SwitchType Internal
New-NetNat –Name LocalNAT –InternalIPInterfaceAddressPrefix “ipaddress/24”

Назначим IP-адрес для сетевого адаптера NAT свитча:

Здесь мы определили тип свитча (Internal) и задали IP адресацию и получили следующее:


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

Или так, кому как удобно

Настраиваем сетевое взаимодействие между ВМ и Hyper-V хоста. В настройках ВМ Network Adapter должен быть подключен к NAT свитчу

Проверим пинги

В конце хотел бы добавить, что возможность вложенной виртуализации — это отличный инструмент для всяких тестовых стендов и для разработчиков, но пока никак не механизм для продакшн среды, именно пока. Думаю, в скором времени мы увидим и эту реализацию как обычный механизм.