V této příručce uvidíme, jak povolit vnořenou virtualizaci v KVM v Linuxu. Vnořená virtualizace je funkce, která vám umožňuje spouštět virtuální stroj uvnitř jiného virtuálního stroje a přitom stále používat hardwarovou akceleraci z hostitelského systému. Jinými slovy, vnořená virtualizace je mechanismus spouštění hypervizoru uvnitř virtuálního stroje (VM), který sám běží na hypervizoru.
Povolit vnořenou virtualizaci v KVM v Linuxu
Před povolením vnořené funkce VT vypněte všechny spuštěné virtuální počítače.
Dále uvolněte moduly KVM.
Chcete-li uvolnit modul KVM na INTEL systémy, spusťte:
$ sudo modprobe -r kvm_intel
Na AMD systémy:
$ sudo modprobe -r kvm_amd
Znovu načtěte modul KVM s povolenou vnořenou funkcí na CPU INTEL příkazem:
$ sudo modprobe kvm_intel nested=1
Znovu načtěte modul KVM s povolenou vnořenou funkcí na procesorech AMD pomocí příkazu:
$ sudo modprobe kvm_amd nested=1
Trvale povolit vnořenou virtualizaci
Vezměte prosím na vědomí, že funkce vnořené VT je povolena pouze do doby, než restartujete hostitelský systém KVM. Chcete-li trvale povolit vnořenou funkci, upravte /etc/modprobe.d/kvm.conf soubor:
$ sudo vi /etc/modprobe.d/kvm.conf
Pokud soubor neexistuje, stačí jej vytvořit.
Přidejte následující řádek na INTEL hostitelé:
options kvm_intel nested=1
Přidejte následující řádek na AMD hostitelé:
options kvm_amd nested=1
Uložte a zavřete soubor.
Hotovo! Povolili jsme vnořené VT na hostitelském systému KVM.
Ověřte, zda je v hostiteli KVM povolena vnořená virtualizace
Pokud je váš procesor INTEL, zkontrolujte "/sys/module/kvm_intel/parameters/nested" soubor pomocí příkazu "cat":
$ cat /sys/module/kvm_intel/parameters/nested

Zkontrolujte, zda je v Linuxu podporována vnořená virtualizace
Pokud vrátí "Y" nebo "1" , to znamená, že váš systém podporuje vnořenou virtualizaci. Pokud je výstup "N" nebo "0" , váš systém nebude podporovat vnořenou virtualizaci.
Pokud je váš procesor AMD, zkontrolujte obsah "/sys/module/kvm_amd/parameters/nested" soubor.
Alternativně můžete použít následující příkaz, abyste zajistili, že modul jádra "kvm_intel" má povoleno vnořování:
$ modinfo kvm_intel | grep -i nested
Ukázkový výstup:
parm: nested_early_check:bool parm: nested:bool
Na procesoru AMD:
$ modinfo kvm_amd | grep -i nested
Můj hostitel KVM podporuje vnořenou virtualizaci a je již povolena.
Povolit vnořenou virtualizaci na hostujících počítačích KVM
Můžeme povolit vnořenou funkci na virtuálním počítači KVM buď z příkazového řádku nebo pomocí grafických aplikací pro správu KVM, jako je Virt-manager .
Povolte vnořenou funkci v hostech KVM z příkazového řádku
Přihlaste se do virsh konzole:
$ virsh
Upravte virtuální počítač, ve kterém chcete povolit vnořenou funkci:
virsh # edit centos
Chcete-li najít všechny dostupné virtuální počítače, spusťte tento příkaz v konzole virsh:
virsh # list --all
Najděte parametr "cpu mode" a nastavte jeho hodnotu jako "host-model".
<cpu mode='host-model' check='partial'/>

Povolte vnořenou funkci v hostech KVM pomocí příkazu virsh
Uložte a zavřete soubor.
Spusťte virtuální počítač:
virsh # start centos8
Ověřte, zda je pro virtuální počítač povolena vnořená funkce:
virsh # dumpxml centos8
Měli byste vidět, že všechny nezbytné zásady funkcí pod direktivou "cpu mode" jsou nyní aktualizovány:
<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>
Funkce vnořené virtualizace byla povolena pro virtuální počítač CentOS 8.
Povolte vnořenou funkci v hostech KVM pomocí Virt-manager
Otevřete aplikaci Virt-manager GUI a dvakrát klikněte na hosta KVM, ve kterém chcete povolit vnořenou funkci VT. Klikněte na tlačítko "Zobrazit podrobnosti o virtuálním hardwaru" a přejděte do sekce "CPU" v levé nabídce.
Vyberte možnost Kopírovat konfiguraci hostitelského CPU zaškrtněte políčko v okně konfigurace CPU a klepněte na tlačítko Použít.

Nakonfigurujte vnořenou virtualizaci ve VIrt-manager
Nyní bude model CPU a konfigurace fyzického hostitele aplikován na virtuální počítač.
Zkontrolujte, zda hosté KVM podporují virtualizaci
Zapněte a přihlaste se k hostujícímu počítači KVM, ve kterém jste povolili vnořenou funkci.
Spusťte následující příkaz v terminálu hosta KVM a ověřte, zda je virtualizace povolena či nikoli:
# egrep --color -i "svm|vmx" /proc/cpuinfo
Ukázkový výstup:

Zkontrolujte, zda hosté KVM podporují technologii virtualizace v systému Linux
Pokud vidíte „vmx“ (technologie Intel-VT) nebo svm (podpora AMD-V) ve výstupu může hostující stroj KVM pracovat jako hypervizor a hostitelské virtuální počítače. Jak můžete vidět na výše uvedeném výstupu, můj virtuální počítač CentOS 8 KVM podporuje virtualizaci.
V následující příručce se dozvíte další způsoby, jak zkontrolovat, zda systém Linux podporuje VT nebo ne.
- Jak zjistit, zda procesor podporuje technologii virtualizace (VT)
Související čtení:
- Jak povolit vnořenou virtualizaci ve VirtualBoxu