Virtualización

¿Qué es KVM?

También conocido como: Kernel-based Virtual Machine
Definición

KVM is full hardware virtualisation built into the Linux kernel, giving each guest its own kernel and hardware-enforced isolation from other tenants. Because a KVM guest runs its own kernel, it can load kernel modules, run non-Linux operating systems, use real swap and support nested virtualisation.

Por qué es importante KVM

Como un invitado KVM ejecuta su propio kernel, puede cargar módulos del kernel, ejecutar sistemas operativos que no son Linux, usar swap real y soportar virtualización anidada. La memoria asignada a un invitado KVM está genuinamente reservada, lo que es la diferencia práctica respecto a la virtualización por contenedores.

KVM en la práctica

Cuando ejecutas un servidor KVM, lo primero que compruebas es /proc/cpuinfo en el invitado: si no coincide con los indicadores del host, es probable que estés viendo atajos paravirtualizados, no KVM completo. Configuras la asignación de memoria con reservas reales: la sobreasignación hará que el asesino OOM del invitado se active mientras el host parece inactivo. Si configuras mal la virtualización anidada, pierdes la paginación asistida por hardware y los invitados funcionan a una fracción de la velocidad. Hacerlo mal te cuesta un rendimiento que no puedes recuperar sin reiniciar.

Lo que se suele malinterpretar sobre KVM

La gente asume que KVM es lo mismo que OpenVZ o LXC porque ambos usan el kernel de Linux. La corrección es que KVM da a cada invitado su propio kernel, mientras que los contenedores comparten el kernel del host. Puedes cargar módulos del kernel y ejecutar sistemas operativos que no sean Linux solo en KVM. El aislamiento de espacios de nombres compartidos no está impuesto por hardware.

KVM — preguntas frecuentes

¿Qué significa KVM para el rendimiento?

La virtualización por hardware de KVM significa que cada invitado tiene su propio kernel, por lo que el rendimiento es casi nativo para CPU y memoria. La memoria está realmente reservada, no compartida. Puedes esperar un rendimiento predecible y aislado en comparación con los contenedores.

¿Puedo ejecutar Windows en KVM?

Sí, un invitado KVM ejecuta su propio kernel, por lo que puede ejecutar sistemas operativos que no sean Linux, como Windows. Necesitarás subir un ISO y conectar una consola VNC. Una licencia de Windows Server está disponible como extra opcional en ciertas regiones.

Más de virtualización

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.
Virtualización anidada
La virtualización anidada permite que una máquina virtual ejecute a su vez máquinas virtuales, exponiendo las extensiones de virtualización del procesador al invitado.
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.