¿Cómo habilitar la virtualización anidada para usar VirtualBox dentro de una máquina virtual KVM?

¿Cómo habilitar la virtualización anidada para usar VirtualBox dentro de una máquina virtual KVM?

Tenemos un hipervisor KVM ( L0, AMD, Kernel:) Linux level0kvmhypervisor 4.19.0-12-amd64 #1 SMP Debian 4.19.152-1 (2020-10-18) x86_64 GNU/Linux, que ejecuta una máquina virtual que me gustaría usar como hipervisor VirtualBox anidado ( L1). Entonces, lo que intento hacer es ejecutar VirtualBox dentro de KVM. Algunos detalles sobre el hipervisor KVM ( L0):

# cat /proc/cpuinfo
processor       : 0 ... 23
vendor_id       : AuthenticAMD
cpu family      : 23
model           : 113
model name      : AMD Ryzen 9 3900 12-Core Processor
stepping        : 0
microcode       : 0x8701021
cpu MHz         : 2193.155
cache size      : 512 KB
physical id     : 0
siblings        : 24
core id         : 0
cpu cores       : 12
apicid          : 0
initial apicid  : 0
fpu             : yes
fpu_exception   : yes
cpuid level     : 16
wp              : yes
flags           : ... svm ...
bugs            : sysret_ss_attrs spectre_v1 spectre_v2 spec_store_bypass
bogomips        : 6188.58
TLB size        : 3072 4K pages
clflush size    : 64
cache_alignment : 64
address sizes   : 43 bits physical, 48 bits virtual
power management: ts ttp tm hwpstate cpb eff_freq_ro [13] [14]
# dpkg --list | egrep -- "(kvm|libvirt)" | sed 's/amd64.*//g'
ii  libsys-virt-perl                     5.0.0-1                             
ii  libvirt-clients                      5.0.0-4+deb10u1                     
ii  libvirt-daemon                       5.0.0-4+deb10u1                     
ii  libvirt-daemon-system                5.0.0-4+deb10u1                     
ii  libvirt-glib-1.0-0:
ii  libvirt0:
ii  python3-libvirt                      5.0.0-1                             
ii  qemu-kvm                             1:3.1+dfsg-8+deb10u8

La opción anidada también está habilitada:

# cat /sys/module/kvm_amd/parameters/nested 
1

Dentro de la máquina virtual KVM, donde está instalado VirtualBox (L1): estoy intentando iniciar una VM creada por Vagrant y aparece el siguiente mensaje de error:

...
==> default: Booting VM...
There was an error while executing `VBoxManage`, a CLI used by Vagrant
for controlling VirtualBox. The command and stderr is shown below.
Command: ["startvm", "357a07b4-7d81-4336-9ea6-0dbf0ab49d18", "--type", "headless"]                                                                 
Stderr: VBoxManage: error: AMD-V is not available (VERR_SVM_NO_SVM)
VBoxManage: error: Details: code NS_ERROR_FAILURE (0x80004005), component ConsoleWrap, interface IConsole

Estas son las configuraciones de CPU KVM XML para el L1hipervisor VirtualBox:

<vcpu placement='static'>1</vcpu>
<cpu mode='host-model' check='partial'>
  <model fallback='allow'/>
</cpu>

Creo que hay que cambiar algo aquí, pero no estoy muy seguro de qué. No puedo encontrar ningún recurso sobre ese tema, por eso pregunto aquí. ¿Cómo puedo hacer que el hipervisor VirtualBox ( L1) se ejecute dentro de una máquina virtual KVM para iniciar una VM?

Cualquier ayuda sería muy apreciada.

Respuesta1

<cpu mode='host-passthrough'>
    <feature policy='require' name='svm'/>
</cpu>

Utilice estas configuraciones para una CPU AMD en el archivo de configuración de la máquina virtual.

información relacionada