Поделиться через


Запуск Hyper-V на виртуальной машине с вложенной виртуализацией

Вложенная виртуализация позволяет запускать Hyper-V внутри виртуальной машины, что позволяет эмулировать сложные среды без использования нескольких физических узлов. В этой статье объясняется, как настроить и использовать вложенную виртуализацию на поддерживаемых платформах Windows, включая предварительные требования, шаги установки и параметры сети. Используйте эту статью для тестирования сценариев, запуска эмуляторов или разработки решений, требующих нескольких уровней виртуализации.

Дополнительные сведения о вложенной виртуализации и поддерживаемых сценариях см. в статье Что такое вложенная виртуализация для Hyper-V?.

Необходимые условия

Процессор Intel с технологией VT-x и EPT

  • Узел Hyper-V должен быть windows Server 2016 или более поздней версии, либо Windows 10 или более поздней версии.
  • Конфигурация виртуальной машины версии 8.0 или более поздней.

ПРОЦЕССОР AMD EPYC / Ryzen или более поздней версии

  • Узел Hyper-V должен быть Windows Server 2022 или более поздней версии, или Windows 11 или более поздней версии.
  • Конфигурация виртуальной машины версии 9.3 или более поздней.

Заметка

Гость может быть любой поддерживаемой гостевой операционной системой Windows. Некоторые более новые версии Windows могут использовать дополнительные функции ЦП, которые повышают производительность. Чтобы включить вложенную виртуализацию на виртуальной машине Azure, установите тип безопасности как "Стандартный".

Включение вложенной виртуализации

Чтобы включить вложенную виртуализацию, выполните следующие действия.

  1. Создайте виртуальную машину. Ознакомьтесь с предварительными требованиями для необходимых версий ОС и виртуальных машин.

  2. Хотя виртуальная машина находится в состоянии OFF, выполните следующую команду на физическом узле Hyper-V, чтобы включить вложенную виртуализацию для виртуальной машины.

    Set-VMProcessor -VMName <VMName> -ExposeVirtualizationExtensions $true
    
  3. Запустите виртуальную машину.

  4. Установите Hyper-V на виртуальной машине так же, как и для физического сервера. Дополнительные сведения об установке Hyper-V см. .

Заметка

При использовании Windows Server 2019 и более ранних версий в качестве виртуальной машины первого уровня количество виртуальных ЦП должно составлять 225 или меньше. Дополнительные сведения об ограничениях виртуальных машин см. в разделе "Максимальные значения" для виртуальных машин.

Отключение вложенной виртуализации

Вы можете отключить вложенную виртуализацию для остановленной виртуальной машины с помощью следующей команды PowerShell:

Set-VMProcessor -VMName <VMName> -ExposeVirtualizationExtensions $false

Параметры сети

Существует два варианта сетевого взаимодействия с вложенными виртуальными машинами:

  1. Спуфинирование MAC-адресов
  2. Сеть NAT

Спуфинирование MAC-адресов

Чтобы сетевые пакеты перенаправлялись через два виртуальных коммутатора, необходимо включить подпуфинирование MAC-адресов на первом уровне виртуального коммутатора (L1). Чтобы включить спуфинирование MAC-адресов, выполните следующую команду PowerShell.

Get-VMNetworkAdapter -VMName <VMName> | Set-VMNetworkAdapter -MacAddressSpoofing On

Преобразование сетевых адресов (NAT)

Второй вариант зависит от преобразования сетевых адресов (NAT). Этот подход лучше всего подходит для случаев, когда подпуфинирование MAC-адресов невозможно, например в общедоступной облачной среде.

Во-первых, виртуальный коммутатор NAT должен быть создан на виртуальной машине узла (средняя виртуальная машина). В следующем примере создается новый внутренний коммутатор с именем VmNAT и создается объект NAT для всех IP-адресов в подсети 192.168.100.0/24.

New-VMSwitch -Name VmNAT -SwitchType Internal
New-NetNat –Name LocalNAT –InternalIPInterfaceAddressPrefix “192.168.100.0/24”

Затем назначьте IP-адрес сетевому адаптеру:

Get-NetAdapter "vEthernet (VmNat)" | New-NetIPAddress -IPAddress 192.168.100.1 -AddressFamily IPv4 -PrefixLength 24

Каждая вложенная виртуальная машина должна иметь IP-адрес и шлюз, назначенные ему. IP-адрес шлюза должен указывать на адаптер NAT из предыдущего шага. Также может потребоваться назначить DNS-сервер:

Get-NetAdapter "vEthernet (VmNat)" | New-NetIPAddress -IPAddress 192.168.100.2 -DefaultGateway 192.168.100.1 -AddressFamily IPv4 -PrefixLength 24
Netsh interface ip add dnsserver “vEthernet (VmNat)” address=<my DNS server>

Дальнейшие действия