En esta guía, veremos cómo habilitar la virtualización anidada en KVM en linux Virtualización anidada es una función que le permite ejecutar una máquina virtual dentro de otra máquina virtual mientras sigue utilizando la aceleración de hardware del sistema host. En otras palabras, la virtualización anidada es un mecanismo para ejecutar un hipervisor dentro de una máquina virtual (VM), que a su vez se ejecuta en un hipervisor.
Habilite la virtualización anidada en KVM en Linux
Antes de habilitar la función de VT anidado, apague todas las máquinas virtuales en ejecución.
A continuación, descargue los módulos KVM.
Para descargar el módulo KVM en INTEL sistemas, ejecute:
$ sudo modprobe -r kvm_intel
En AMD sistemas:
$ sudo modprobe -r kvm_amd
Vuelva a cargar el módulo KVM con la función anidada habilitada en las CPU INTEL con el comando:
$ sudo modprobe kvm_intel nested=1
Vuelva a cargar el módulo KVM con la función anidada habilitada en las CPU AMD usando el comando:
$ sudo modprobe kvm_amd nested=1
Habilitar la virtualización anidada de forma permanente
Tenga en cuenta que la función de VT anidado solo está habilitada hasta que reinicie el sistema host KVM. Para habilitar permanentemente la función anidada, edite /etc/modprobe.d/kvm.conf archivo:
$ sudo vi /etc/modprobe.d/kvm.conf
Si el archivo no existe, simplemente créelo.
Agregue la siguiente línea en INTEL anfitriones:
options kvm_intel nested=1
Agregue la siguiente línea en AMD anfitriones:
options kvm_amd nested=1
Guarde y cierre el archivo.
¡Hecho! Hemos habilitado VT anidado en el sistema host KVM.
Verificar si la virtualización anidada está habilitada en el host KVM
Si su procesador es INTEL, consulte "/sys/module/kvm_intel/parameters/nested" archivo usando el comando "gato":
$ cat /sys/module/kvm_intel/parameters/nested
Compruebe si la virtualización anidada es compatible con Linux
Si devuelve "Y" o "1" , significa que su sistema admite la virtualización anidada. Si la salida es "N" o "0" , su sistema no admitirá la virtualización anidada.
Si su procesador es AMD, verifique el contenido de "/sys/module/kvm_amd/parameters/nested" archivo.
Alternativamente, puede usar el siguiente comando para asegurarse de que el módulo kernel "kvm_intel" tenga habilitado el anidamiento:
$ modinfo kvm_intel | grep -i nested
Salida de muestra:
parm: nested_early_check:bool parm: nested:bool
En CPU AMD:
$ modinfo kvm_amd | grep -i nested
Bueno, mi host KVM admite la virtualización anidada y ya está habilitada.
Habilite la virtualización anidada en máquinas invitadas KVM
Podemos habilitar la función anidada en una máquina virtual KVM desde la línea de comandos o mediante aplicaciones gráficas de administración de KVM como Virt-manager .
Habilite la función anidada en invitados KVM desde la línea de comandos
Inicie sesión en la consola de virsh:
$ virsh
Edite la máquina virtual en la que desea habilitar la función anidada:
virsh # edit centos
Para encontrar todas las máquinas virtuales disponibles, ejecute este comando dentro de la consola virsh:
virsh # list --all
Busque el parámetro "modo cpu" y establezca su valor como "modelo de host".
<cpu mode='host-model' check='partial'/>
Habilite la función anidada en invitados KVM usando el comando virsh
Guarde y cierre el archivo.
Inicie la máquina virtual:
virsh # start centos8
Verifique si la función anidada está habilitada para la VM:
virsh # dumpxml centos8
Debería ver que todas las políticas de funciones necesarias en la directiva "modo de CPU" se actualizan ahora:
<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>
La función de virtualización anidada se ha habilitado para CentOS 8 VM.
Habilite la función anidada en invitados KVM usando Virt-manager
Abra la aplicación GUI de Virt-manager y haga doble clic en el invitado KVM en el que desea habilitar la función VT anidada. Haga clic en el botón "Mostrar detalles de hardware virtual" y vaya a la sección "CPU" en el menú de la izquierda.
Seleccione "Copiar la configuración de la CPU del host" marque la casilla en la ventana de configuración de la CPU y haga clic en Aplicar.
Configurar virtualización anidada en VIrt-manager
Ahora el modelo de CPU del host físico y la configuración se aplicarán a la máquina virtual.
Compruebe si los invitados KVM admiten la virtualización
Encienda e inicie sesión en la máquina invitada KVM en la que habilitó la función anidada.
Ejecute el siguiente comando en la Terminal del invitado KVM para verificar si la virtualización está habilitada o no:
# egrep --color -i "svm|vmx" /proc/cpuinfo
Salida de muestra:
Compruebe si los invitados KVM son compatibles con la tecnología de virtualización en Linux
Si ve “vmx” (tecnología Intel-VT) o “svm” (Compatibilidad con AMD-V) en la salida, la máquina invitada KVM puede funcionar como hipervisor y host de máquinas virtuales. Como puede ver en el resultado anterior, mi máquina virtual CentOS 8 KVM admite la virtualización.
Consulte la siguiente guía para conocer más formas de comprobar si un sistema Linux es compatible con VT o no.
- Cómo averiguar si una CPU es compatible con la tecnología de virtualización (VT)
Lectura relacionada:
- Cómo habilitar la virtualización anidada en VirtualBox