Virtualización
¿Qué es Nested virtualisation?
Nested virtualisation lets a virtual machine itself run virtual machines, by exposing the processor virtualisation extensions to the guest. It is required for Proxmox VE, VM-based CI jobs and some Docker configurations. Many providers disable it, which is the usual reason those workloads fail elsewhere.
Por qué es importante Nested virtualisation
Se requiere para Proxmox VE, trabajos de CI basados en VM y algunas configuraciones de Docker. Muchos proveedores la desactivan, que es la razón habitual por la que esas cargas de trabajo fallan en otros sitios.
Nested virtualisation en la práctica
Cuando ejecutas virtualización anidada, arrancas un hipervisor dentro de un invitado KVM y pasas las extensiones de virtualización de la CPU del host. Comprobarás en /proc/cpuinfo dentro del invitado los flags svm o vmx. Si están ausentes, tu hipervisor interno recurre a la emulación por software, que puede reducir el rendimiento en un orden de magnitud. También puede que necesites habilitar el tipo de CPU "host" en lugar de un modelo genérico para obtener esos flags. Si lo haces mal, tu carga de trabajo de Proxmox o CI va lenta.
Lo que se suele malinterpretar sobre Nested virtualisation
La gente asume que la virtualización anidada solo importa para ejecutar sistemas operativos completos como Windows en una VM. La corrección: también rompe el networking overlay predeterminado de Docker y ciertos módulos del kernel, porque esos dependen de las características de virtualización dentro del invitado. Así que una carga de trabajo de contenedores puede fallar en un proveedor que deshabilite el anidamiento, incluso si nunca tuviste intención de ejecutar una VM.
Nested virtualisation — preguntas frecuentes
¿Puedo ejecutar Docker dentro de una VM anidada?
Sí, y esta es la razón más común por la que la gente necesita virtualización anidada. El networking bridge predeterminado de Docker usa iptables y módulos del kernel que pueden comportarse de manera diferente sin las extensiones de virtualización de CPU expuestas. Nuestros planes KVM incluyen virtualización anidada, así que tus contenedores Docker funcionan como se espera.
¿Cómo compruebo si la virtualización anidada está habilitada?
Dentro de tu VM, ejecuta grep -E '(svm|vmx)' /proc/cpuinfo. Si ves esos flags, el anidamiento está disponible. Si no, el hipervisor no los está exponiendo, lo que normalmente significa que el proveedor lo ha deshabilitado.
Dónde aparece Nested virtualisation
- ¿Puedo ejecutar virtualización anidada en un VPS? Sí. La virtualización anidada está habilitada en cada instancia de OnionVPS, por lo que puedes ejecutar invitados KVM dentro de tu instancia, instalar Prox…
- ¿Cuál es el VPS más barato que realmente se puede utilizar? Unos 4 $ al mes compran 1 vCPU, 1 GB de RAM y 20 GB de NVMe en virtualización KVM real. Eso es realmente suficiente para una VPN WireGuard, un resolutor de…
- ¿Qué es la virtualización KVM? KVM (máquina virtual basada en kernel) es virtualización completa de hardware integrada en el kernel de Linux, que utiliza extensiones del procesador para …
- KVM vs OpenVZ: por qué el tipo de virtualización importa KVM es virtualización completa de hardware: su instancia ejecuta su propio kernel y no puede ver el host. OpenVZ y LXC son tecnologías de contenedores que …
Más de virtualización
- KVM
- KVM es virtualización completa por hardware integrada en el kernel de Linux, lo que da a cada invitado su propio kernel y un aislamiento reforzado por hardware de otros inquilinos.
- OpenVZ
- OpenVZ es virtualización por contenedores en la que cada instancia comparte el kernel del host, por lo que los invitados no pueden cargar módulos del kernel ni ejecutar un sistema operativo diferente.
- LXC
- LXC es contenedorización nativa de Linux que aísla procesos con namespaces y cgroups mientras comparte el kernel del host.
- Hipervisor
- Un hipervisor es la capa de software que crea y ejecuta máquinas virtuales, asignando CPU física, memoria y E/S entre ellas.
- vCPU
- Una vCPU es un procesador virtual presentado a un invitado, respaldado por tiempo de planificación en un núcleo o hilo físico.
- cloud-init
- cloud-init es el mecanismo estándar para configurar una máquina virtual en el primer arranque, usando metadatos proporcionados por la plataforma.