Как включить вложенную виртуализацию в KVM в Linux
В этом руководстве мы увидим, как включить вложенную виртуализацию в KVM в Linux. Вложенная виртуализация – это функция, позволяющая запускать виртуальную машину внутри другой виртуальной машины, при этом используя аппаратное ускорение хост-системы. Другими словами, вложенная виртуализация — это механизм запуска гипервизора внутри виртуальной машины (ВМ), которая сама работает на гипервизоре.
Включить вложенную виртуализацию в KVM в Linux
Прежде чем включать вложенную функцию VT, отключите все работающие виртуальные машины.
Далее выгрузите модули KVM.
Чтобы выгрузить модуль KVM в системах INTEL, запустите:
sudo modprobe -r kvm_intel
В системах AMD:
sudo modprobe -r kvm_amd
Перезагрузите модуль KVM с включенной вложенной функцией на процессорах INTEL с помощью команды:
sudo modprobe kvm_intel nested=1
Перезагрузите модуль KVM с включенной вложенной функцией на процессорах AMD с помощью команды:
sudo modprobe kvm_amd nested=1
Включить вложенную виртуализацию навсегда
Обратите внимание, что вложенная функция VT активна только до перезагрузки хост-системы KVM. Чтобы навсегда включить вложенную функцию, отредактируйте файл /etc/modprobe.d/kvm.conf
:
sudo vi /etc/modprobe.d/kvm.conf
Если файл не существует, просто создайте его.
Добавьте следующую строку на хосты INTEL:
options kvm_intel nested=1
Добавьте следующую строку на хосты AMD:
options kvm_amd nested=1
Сохраните и закройте файл.
Сделанный! Мы включили вложенный VT в хост-системе KVM.
Проверьте, включена ли вложенная виртуализация на хосте KVM
Если у вас процессор INTEL, проверьте файл "/sys/module/kvm_intel/parameters/nested
" с помощью команды "cat
":
cat /sys/module/kvm_intel/parameters/nested
Проверьте, поддерживается ли вложенная виртуализация в Linux
Если он возвращает "Y" или "1", это означает, что ваша система поддерживает вложенную виртуализацию. Если выходные данные — "N" или "0", ваша система не будет поддерживать вложенную виртуализацию.
Если у вас процессор AMD, проверьте содержимое файла "/sys/module/kvm_amd/parameters/nested
".
В качестве альтернативы вы можете использовать следующую команду, чтобы убедиться, что в модуле ядра «kvm_intel» включена вложенность:
modinfo kvm_intel | grep -i nested
Пример вывода:
parm: nested_early_check:bool
parm: nested:bool
На процессоре AMD:
modinfo kvm_amd | grep -i nested
Что ж, мой хост KVM поддерживает вложенную виртуализацию, и она уже включена.
Включить вложенную виртуализацию на гостевых машинах KVM
Мы можем включить вложенную функцию на виртуальной машине KVM либо из командной строки, либо с помощью графического приложения управления KVM, такого как Virt-manager.
Включить вложенную функцию в гостях KVM из командной строки
Войдите в консоль virsh:
virsh
Отредактируйте виртуальную машину, в которой вы хотите включить вложенную функцию:
virsh # edit centos
Чтобы найти все доступные виртуальные машины, запустите эту команду в консоли virsh:
virsh # list --all
Найдите параметр «режим процессора» и установите для него значение «модель хоста».
<cpu mode='host-model' check='partial'/>
Включите вложенную функцию в гостях KVM с помощью команды virsh.
Сохраните и закройте файл.
Запустите виртуальную машину:
virsh # start centos8
Проверьте, включена ли вложенная функция для виртуальной машины:
virsh # dumpxml centos8
Вы должны увидеть, что все необходимые политики функций в директиве «режим процессора» теперь обновлены:
<cpu mode='custom' match='exact' check='full'>
<model fallback='forbid'>SandyBridge-IBRS</model>
<vendor>Intel</vendor>
<feature policy='require' name='vme'/>
<feature policy='require' name='vmx'/>
<feature policy='require' name='pcid'/>
<feature policy='require' name='hypervisor'/>
<feature policy='require' name='arat'/>
<feature policy='require' name='tsc_adjust'/>
<feature policy='require' name='umip'/>
<feature policy='require' name='md-clear'/>
<feature policy='require' name='stibp'/>
<feature policy='require' name='arch-capabilities'/>
<feature policy='require' name='ssbd'/>
<feature policy='require' name='xsaveopt'/>
<feature policy='require' name='ibpb'/>
<feature policy='require' name='amd-ssbd'/>
<feature policy='require' name='skip-l1dfl-vmentry'/>
<feature policy='disable' name='aes'/>
</cpu>
Проверьте, включена ли вложенная функция для гостя KVM.
Для виртуальной машины CentOS 8 включена функция вложенной виртуализации.
Включить вложенную функцию в гостях KVM с помощью Virt-manager
Откройте приложение с графическим интерфейсом Virt-manager и дважды щелкните гостевую KVM, в которой вы хотите включить вложенную функцию VT. Нажмите кнопку «Показать сведения о виртуальном оборудовании» и перейдите в раздел «ЦП» в левом меню.
Установите флажок Копировать конфигурацию ЦП хоста в окне конфигурации ЦП и нажмите Применить.
Настройка вложенной виртуализации в VIrt-manager
Теперь модель и конфигурация ЦП физического хоста будут применены к виртуальной машине.
Проверьте, поддерживают ли гости KVM виртуализацию
Включите питание и войдите на гостевую машину KVM, на которой вы включили вложенную функцию.
Запустите следующую команду в гостевом терминале KVM, чтобы проверить, включена ли виртуализация:
egrep --color -i "svm|vmx" /proc/cpuinfo
Пример вывода:
Проверьте, поддерживают ли гости KVM технологию виртуализации в Linux
Если вы видите в выводе “vmx” (технология Intel-VT) или “svm” (поддержка AMD-V), гостевая машина KVM может работать как гипервизор и размещать виртуальные машины. Как вы можете видеть из приведенного выше вывода, моя виртуальная машина KVM CentOS 8 поддерживает виртуализацию.
Ознакомьтесь со следующим руководством, чтобы узнать больше о способах проверить, поддерживает ли система Linux VT или нет.
- Как узнать, поддерживает ли процессор технологию виртуализации (VT)
Ресурс:
- Вложенные гости KVM
Связанное чтение:
- Как включить вложенную виртуализацию в VirtualBox
- Как включить вложенную виртуализацию в Proxmox VE