Поиск по сайту:

Как включить вложенную виртуализацию в 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

Статьи по данной тематике