Центр Диагностики & База Системных Ошибок

Решения для Windows Server, Active Directory, 1С, СУБД, Linux, Cisco, MikroTik и IP-телефонии.

⚠️ Важная информация Все материалы, инструкции, команды и скрипты предоставлены исключительно в ознакомительных целях. Их применение может повлиять на работу операционной системы, баз данных и сетевого оборудования. Перед выполнением действий обязательно создайте резервную копию. При отсутствии необходимой квалификации обратитесь к ИТ-специалистам.
KVM: nested virtualization VM-entry failure Linux / DevOps

KVM: nested virtualization VM-entry failure — Решение вложенной виртуализации

Обновлено: 18.08.2026  ·  Официальная база знаний

Архитектура ошибки и симптомы сбоя

Ошибка «KVM: nested virtualization VM-entry failure» (сопровождающаяся статусом nested_vmx_entry_failed или VM-instruction error) возникает при использовании вложенной виртуализации (L0 хост -> L1 гипервизор -> L2 гость, например, запуск Minikube/EVE-NG/Proxmox внутри KVM). Ошибка указывает на то, что физический процессор отклонил инструкцию входа в виртуальный режим VMLAUNCH / VMRESUME (Intel VT-x) или VMRUN (AMD-V) из-за неконсистентного состояния полей структуры управления виртуальной машиной VMCS (Virtual Machine Control Structure) или отсутствия обязательных процессорных инструкций.

Диагностическая таблица параметров сбоя

ПараметрЗначениеИнженерный смысл сбоя
VMCS / VMCBControl Data StructureАппаратная структура памяти, описывающая контекст процессора L1 и L2 гостя.
VM-entry FailureHardware VMX TrapАппаратный отказ процессора перейти к исполнению инструкций вложенной ВМ.
L0 / L1 / L2 LevelsVirtualization LayersL0 — Bare Metal хост, L1 — промежуточная ВМ, L2 — вложенная целевая ВМ.

Пошаговое дерево решений и сценарии траблшутинга

Сценарий 1: Проверка включения вложенной виртуализации на L0 хосте

# Для процессоров Intel:
cat /sys/module/kvm_intel/parameters/nested
# Вывод должен быть 'Y' или '1'

# Для процессоров AMD:
cat /sys/module/kvm_amd/parameters/nested
# Вывод должен быть '1'

Сценарий 2: Активация Nested Virtualization в модулях ядра

Создайте конфигурационный файл для включения вложенной виртуализации:

# Для Intel (/etc/modprobe.d/kvm-nested.conf):
options kvm_intel nested=1
options kvm_intel enable_shadow_vmcs=1
options kvm_intel ept=1

# Для AMD (/etc/modprobe.d/kvm-nested.conf):
options kvm_amd nested=1

# Перезагрузка модуля (без перезагрузки хоста):
sudo modprobe -r kvm_intel && sudo modprobe kvm_intel

Сценарий 3: Настройка режима процессора host-passthrough в QEMU/libvirt

В конфигурации виртуальной машины L1 обязательно включите сквозную передачу всех инструкций CPU:

# В XML-конфигурации домена libvirt (virsh edit L1_VM):
<cpu mode='host-passthrough' check='none'>
  <topology sockets='1' dies='1' cores='4' threads='2'/>
  <feature policy='require' name='vmx'/>
</cpu>
Вложенные виртуальные лаборатории (EVE-NG, GNS3, K8s) падают с ошибкой VM-entry?
ITSTM выполнит корректную конфигурацию гипервизоров для Nested Virtualization, настроит Shadow VMCS и обеспечит стабильную работу тестовых сред.
Практический опыт инженера: При использовании вложенной виртуализации на процессорах AMD EPYC всегда проверяйте включение флага NPT (Nested Paging) в опциях модуля kvm_amd npt=1 — отключение NPT снижает производительность L2 машин в 10–15 раз.

Частые вопросы (FAQ)

Почему режим CPU host-model вызывает VM-entry failure во вложенных машинах?

Режим host-model может маскировать некоторые аппаратные флаги управления VMX/SVM или биты управления EPT. Режим host-passthrough передает процессорные возможности физического кристалла на 100% без искажений.

Что такое Shadow VMCS в процессорах Intel?

Shadow VMCS — это аппаратная технология Intel, позволяющая гипервизору L1 читать и модифицировать поля VMCS без постоянных выходов из виртуального режима (VM-Exit) в хост L0, что ускоряет вложенную виртуализацию в несколько раз.

Можно ли запустить вложенную виртуализацию KVM внутри гипервизора Hyper-V или ESXi?

Да. В Hyper-V необходимо выполнить PowerShell команду Set-VMProcessor -VMName <VM> -ExposeVirtualizationExtensions $true, а в VMware ESXi включить флаг 'Expose hardware assisted virtualization to guest OS'.

Как проверить доступность флагов VMX/SVM внутри виртуальной машины L1?

Выполните команду egrep -c '(vmx|svm)' /proc/cpuinfo. Ненулевое значение подтверждает, что процессор гостя видит аппаратные инструкции виртуализации.