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


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

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

Дополнительные сведения о вложенной виртуализации и поддерживаемых сценариях см. в статье Что такое вложенная виртуализация для 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>

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