
Tengo un host Linux que ejecuta Debian 11 y en ese host tengo una máquina virtual Ubuntu 22.04. Dentro de esa VM, quiero ejecutar una VM con Windows 10 usando virtualización anidada. La máquina virtual de Ubuntu se inicia mediante EFI y la virtualización anidada funciona bien.
Cuando la máquina virtual de Windows que se ejecuta dentro de la máquina virtual de Ubuntu también se inicia usando EFI, todo funciona bien, toda la memoria RAM que le doy se detecta y se puede utilizar, y la máquina virtual tiene un buen rendimiento, por lo que la virtualización anidada funciona bien.
Mi problema es que las instantáneas no son compatibles (todavía) con vibvirt cuando uso EFI, por lo que tengo que usar BIOS. Sin embargo, cuando cambio la VM a BIOS, todo funciona bien excepto el hecho de que ahora el invitado sólo ve 2 GB de RAM. Intenté iniciar Linux y memtest en esa VM y ambos solo ven los 2 GB. Intenté crear nuevas máquinas virtuales y también muestran exactamente el mismo comportamiento (funciona bien cuando se inicia en EFI pero no en BIOS)
Copié el disco de la VM y la configuración 1:1 en el host y detecta los 8 GB completos (o lo que sea que haya configurado) sin problemas. Por lo tanto, este problema solo aparece cuando se ejecuta anidado y se usa BIOS.
En este punto, probé muchas configuraciones diferentes, incluso ejecutando comandos qemu súper simples, y todavía no puedo romper la barrera de los 2 GB cuando ejecuto anidado sin EFI por alguna razón.
¿Existe alguna limitación que no conozco?
Versiones de software (en la máquina virtual Ubuntu anidada):
versión del emulador QEMU 7.2.0
libvirtd (libvirt) 9.0.0
Linux 5.19.0-35-generic
Respuesta1
Sí, existe una limitación al utilizar la virtualización anidada con el modo BIOS. El problema que está experimentando probablemente se deba al hecho de que el firmware del BIOS de la máquina virtual no es capaz de exponer más de 2 GB de RAM al sistema operativo invitado.
Esta es una limitación conocida de la virtualización basada en BIOS y se debe a la forma en que el firmware del BIOS asigna la memoria. Por el contrario, el firmware UEFI utilizado en las máquinas virtuales modernas admite E/S asignadas en memoria, lo que permite que el sistema operativo invitado acceda a más memoria.
Para solucionar esta limitación, puede continuar usando la virtualización anidada con el modo EFI o cambiar a una tecnología de virtualización diferente que admita instantáneas con el modo EFI. Alternativamente, puede intentar ajustar la configuración de la memoria en el firmware del BIOS de la máquina virtual, aunque es posible que esto no siempre sea posible o efectivo.
En resumen, la limitación de la virtualización basada en BIOS con virtualización anidada es que es posible que el sistema operativo invitado solo pueda acceder a hasta 2 GB de RAM.