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


Руководство по устранению неполадок: вложенная виртуализация Hyper-V

Вложенная виртуализация позволяет запускать Hyper-V (или другие гипервизоры) на виртуальной машине, обеспечивая мощные сценарии разработки, тестирования и обучения, где требуются виртуальные машины в других виртуальных машинах. Обычно это доступно в Windows Server 2016 или более поздних версиях, Windows 10 или Windows 11 Pro и Enterprise (с Hyper-V), а также поддерживается серия виртуальных машин Azure. Вложенная виртуализация представляет сложность— сеть, память, совместимость ЦП, конфигурация узла и гостя и производительность часто требуют тщательного рассмотрения. В этом руководстве представлен структурированный подход к устранению проблем с вложенной виртуализацией в физических и облачных средах.

Контрольный список устранения неполадок

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

  1. Проверка совместимости узла:

    • Хост — это Windows Server 2016 или более поздняя версия, Windows 10 или Windows 11 Pro или Enterprise.
    • ЦП узла поддерживает VT-x (Intel) или AMD-V (AMD); виртуализация оборудования, включенная в BIOS/UEFI.
  2. Подтвердите параметры гостевой виртуальной машины:

    • Гостевая виртуальная машина поколения 2.
    • Гостевая виртуальная машина под управлением совместимой ОС (Windows Server 2016 или более поздней версии, Windows 10, Windows 11 или более поздней версии) выберите Linux с поддержкой Hyper-V.
  3. Включите вложенную виртуализацию:

    • Для Hyper-V установите с помощью PowerShell:

      Set-VMProcessor -VMName "<VMName>" -ExposeVirtualizationExtensions $true
      
    • Виртуальная машина должна быть выключена.

  4. Выделение ресурсов ЦП, памяти и ресурсов:

    • Назначьте не менее двух виртуальных процессоров вложенным виртуальным машинам.
    • Достаточно памяти, назначенной (рекомендуется ≥ 4 ГБ для виртуальных машин с вложенными виртуальными машинами).
  5. Конфигурация сети:

    • Используйте виртуальный коммутатор "Внешний" для гостевой виртуальной машины, чтобы включить исходящий доступ.
    • Убедитесь, что при необходимости переадресация NAT/портов настроена правильно.
  6. Обновление хоста и гостя:

    • Полностью обновите и установите патчи для ОС Windows на хосте и госте.
    • Используйте последние службы и драйверы Hyper-V Integration Services.
  7. Проверьте безопасность и политику:

    • Credential Guard и Device Guard могут блокировать вложенную виртуализацию.
    • Конфликтующие групповые политики или антивирусы не блокируют процессы Hyper-V.

Ниже приведены распространенные проблемы и соответствующие решения.

Невозможно запустить роль Hyper-V в вложенной виртуальной машине или установить другие гипервизоры.

  • Ошибки при включении или установке Hyper-V на виртуальной машине.
  • "не удается установитьHyper-V: процессор не имеет необходимых возможностей виртуализации" или аналогичных сообщений об ошибках.
  • Установка ролей завершается сбоем без предоставления подробных сообщений об ошибках.

Первопричины

  • Расширения виртуализации, не предоставляемые гостевой виртуальной машине.
  • Гостевая виртуальная машина не является поколением 2 или запущена неподдерживаемая ОС или версия.
  • Недостаточно назначенных ресурсов.

Резолюция

  1. Выключите гостевую виртуальную машину.

  2. Запустите PowerShell на узле:

    Set-VMProcessor -VMName "<VMName>" -ExposeVirtualizationExtensions $true
    
  3. Убедитесь, что гостевая виртуальная машина — поколения 2 (Диспетчер Hyper-V>свойства виртуальной машины).

  4. Убедитесь, что выделены по крайней мере два виртуальных ЦП и ≥ ГБ ОЗУ.

  5. Перезагрузите систему и повторите запуск для включения роли Hyper-V в гостевой операционной системе.

Проблемы с сетевым подключением в вложенных виртуальных машинах

  • Вложенная виртуальная машина не может получить доступ к внешней сети.
  • Работает только внутреннее подключение (узел — гостевой), а не узел <—> физическая локальная сеть <—> вложенная ВМ.
  • Недоступный IP-адрес, неудачный ping или связь с приложением.

Первопричины

  • Виртуальный коммутатор, настроенный как "Внутренний" или "Закрытый".
  • Неправильная конфигурация NAT. Перенаправление портов не задано.
  • Брандмауэр Windows или программное обеспечение безопасности блокирует трафик.

Резолюция

  1. В Hyper-V Manager создайте или выберите виртуальный коммутатор "Внешний".

  2. Назначьте внешний коммутатор сетевому адаптеру вложенной виртуальной машины.

  3. При использовании NAT с несколькими гостями настройте перенаправление портов:

    netsh int portproxy add v4tov4 listenaddress=<host IP> listenport=<port> connectaddress=<nested VM IP> connectport=<port>
    
  4. Проверьте брандмауэр Windows и отключите или создайте правила, чтобы разрешить трафик.

  5. Перезапустите виртуальные машины при изменении конфигурации сети.

Снижение производительности в вложенной виртуализации

  • Вложенные виртуальные машины медленно, отстают или не могут устанавливать операционные системы и роли.
  • Узкие места дискового и сетевого ввода-вывода.
  • Высокий уровень использования ресурсов на узле.

Первопричины

  • Недостаточно выделенные ресурсы — процессор, ОЗУ, диск.
  • Переиспользованные ресурсы хоста.
  • Устаревшие драйверы узла или гипервизора.
  • Ограничения пропускной способности из-за конфигурации виртуального коммутатора.

Резолюция

  1. Увеличьте виртуальные ЦП гостевой виртуальной машины (минимум 2; рекомендуется ≥4 для тяжелых рабочих нагрузок).
  2. Назначьте достаточно ОЗУ (рекомендуется ≥4 ГБ для гостя; ≥8 ГБ для узла).
  3. Используйте виртуальные жесткие диски фиксированного размера вместо динамически расширяемых для повышения производительности.
  4. Убедитесь, что хранилище на основе SSD используется для хостов и гостевых дисков.
  5. Обновите службы и драйверы узла и гостевой интеграции.
  6. Избегайте выполнения приложений с ресурсоемким объемом ресурсов на других виртуальных машинах узла.

Установка или эксплуатация вложенного Hyper-V заблокированы политиками безопасности

  • Установка роли Hyper-V заблокирована.
  • Ошибки, ссылающиеся на Credential Guard или Device Guard.
  • "Безопасность на основе виртуализации включена. Вложенная виртуализация не поддерживается".

Первопричины

  • VBS, Credential Guard, Device Guard активированы на сервере или гостевой виртуальной машине.
  • Групповые политики или параметры реестра препятствуют расширению виртуализации.

Резолюция

  1. Отключите Credential Guard и Device Guard в хосте и гостевой ОС.

    • Используйте редактор групповой политики (gpedit.msc) >Административные шаблоны>конфигурации> компьютераSystem>Device Guard.
  2. Если он контролируется реестром:

    reg delete HKLM\System\CurrentControlSet\Control\DeviceGuard /v EnableVirtualizationBasedSecurity /f
    reg delete HKLM\System\CurrentControlSet\Control\DeviceGuard /v RequirePlatformSecurityFeatures /f
    
  3. Перезагрузите виртуальную машину.

  4. Убедитесь с помощью Msinfo32.exe, что VBS не включен.

Проблемы с перенаправлением портов и NAT

  • Невозможно получить доступ к вложенным виртуальным машинам из внешних сетей.
  • "Процесс не может получить доступ к файлу, так как он используется другим процессом" при запуске драйвера NAT.
  • Не удается запустить службу WinNAT.

Первопричины

  • Неправильное статическое сопоставление портов.
  • Конфликтующая конфигурация NAT.
  • Блокировка файла WinNAT.

Резолюция

  1. Удалите неправильные конфигурации NAT:

    netsh nat delete <incorrect mapping>
    
  2. Перезапустите узел и убедитесь, что служба NAT/WinNAT не заблокирована.

  3. Перенастройка прокси-сервера NAT или порта для требуемого подключения:

    netsh int portproxy add v4tov4 listenaddress=<host IP> listenport=<port> connectaddress=<nested VM IP> connectport=<port>
    
  4. Проверьте подключение с внешнего узла, использовав команды ping и порты приложений.

Проблемы с моментальным снимком и контрольной точкой и различающимися дисками

  • Моментальные снимки исчезают или не могут быть объединены.
  • Операция слияния завершается ошибкой "Система не может найти указанный файл (0x80070002)" или "Цепочка виртуальных жестких дисков нарушена (0xC03A000D)."

Первопричины

  • Родительский VHD-файл перемещен или удален.
  • Сбой оборудования.
  • Разорванная цепочка дифференцирующих дисков.

Резолюция

  1. Убедитесь, что все файлы VHD/AVHDX находятся в исходных расположениях.

  2. Используйте PowerShell для проверки цепочки и слияния:

    Get-VHD -Path <AVHDX path> | fl \*
    Merge-VHD -Path <child AVHDX> -DestinationPath <parent VHD>
    
  3. Если требуется восстановление данных, восстановите родительский диск из резервной копии, а затем повторите слияние.

Изменения ресурсов виртуальной машины не распознаны (например, увеличение ОЗУ)

  • Виртуальная машина не обнаруживает увеличение ОЗУ после настройки.
  • Нет ошибок, но ресурс остается на предыдущем выделении.

Первопричины

  • Конфигурация не применена или зафиксирована во время отключения виртуальной машины.
  • Ограничения платформы (вложенные конфигурации, кластеры или hot-add не поддерживаются).

Резолюция

  1. Перед изменением размера ресурсов выключите виртуальную машину.
  2. Используйте Hyper-V Manager>Изменить параметры виртуальной машины>Увеличить ОЗУ.
  3. Запустите виртуальную машину и проверьте выделение ресурсов в гостевой ОС.
  4. Ознакомьтесь с документацией по поддержке горячего добавления в вложенных сценариях.

Сбор данных

Соберите следующие данные для диагностики и передачи на более высокий уровень поддержки:

  • Системные сведения:

    • Версии узла и гостевой ОС, номера сборки.
    • Тип ЦП, конфигурация ОЗУ.
  • Конфигурация виртуальной машины:

    • подробности о менеджере Hyper-V (поколение, ЦП, ОЗУ, диски).
    • Настройка виртуального коммутатора или сети.
  • Журналы событий:

    • Hyper-V журналы: VMMS, рабочие журналы, система, приложение.
    • Журналы кластера в случае настройки резервного переключения.
  • Выходные данные PowerShell:

    Get-VM -Name <VMName> | fl \*
    Get-VMProcessor -VMName <VMName>
    Get-VHD -Path <AVHDX path> | fl \*
    
  • Трассировки сети:

    netsh trace start capture=yes scenario=Virtualization,NetConnection tracefile=<path>
    netsh trace start capture=yes scenario=NetConnection level=5 maxsize=1024 tracefile=<path>
    
  • Снимок экрана: сообщения об ошибках:

    Ошибки установки, сообщения о сбое при добавлении ролей, состояние диспетчера устройств.

  • Трасса Procmon (для проблем с установкой и активацией ролей).

  • Файлы MiniDump (если узел или виртуальная машина завершает работу).

Распространенные проблемы с краткой справочной таблицей

Проблема Симптомы и ошибки Основная причина Способы устранения
Не удается запустить вложенную виртуальную машину Hyper-V Установка ролей завершается сбоем; Ошибка расширения ЦП Расширения не отображаются; Виртуальная машина 1-го поколения Выключите виртуальную машину; Set-VMProcessor -ExposeVirtualizationExtensions $true; используйте виртуальную машину поколения Gen2; назначьте ≥ 2 виртуальных ЦП.
Проблемы, связанные с подключением к сети Нет интернета или локальной сети в вложенной виртуальной машине Ошибка конфигурации внутреннего коммутатора или NAT Использование внешнего коммутатора; правильная конфигурация NAT; разрешить правила брандмауэра.
Низкая производительность Отставание; высокий уровень использования ресурсов Недостаточно выделенные ресурсы Увеличьте виртуальные ЦП/ОЗУ; используйте диски SSD; обновление драйверов.
Блокировка роли или установки Hyper-V системой безопасности. Ошибки политики или VBS/Credential Guard Включена функция Device/Credential Guard Отключите VBS/Credential Guard; перезагрузить.
Сбой переадресации NAT/портов Не удается подключиться к вложенной виртуальной машине; Ошибки WinNAT Неправильное сопоставление или блокировка сервиса Удалить/повторно добавить конфигурацию NAT; перезапустить узел; netshportproxy команды.
Снимок/дисковая цепочка разорвана. Сбой слияния; файл не найден; ошибки разорванной цепи Родительский диск перемещен или удален Восстановление родительского виртуального жесткого диска; Get-VHD/Merge-VHD Командлеты PowerShell.
Виртуальная машина не распознает увеличение ОЗУ Нет ошибки; Выделение без изменений Настройка не сохранена и не применена на платформе Отключение виртуальной машины; изменение параметров; запуск виртуальной машины; проверьте поддержку узла, кластера или вложенного файла.

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

Ссылки