KVM (Kernel-based Virtual Machine)

Introducción

KVM (Kernel-based Virtual Machine) es un módulo del kernel Linux que convierte Linux en un hipervisor de tipo 1. Está integrado en el kernel desde la versión 2.6.20 (2007) y es la solución de virtualización estándar en distribuciones Linux para servidores. Se combina siempre con QEMU para emular los dispositivos de hardware de las VMs.

Requisitos de hardware

KVM requiere extensiones de virtualización en la CPU:

  • Intel: extensión VT-x (Intel Virtualization Technology)
  • AMD: extensión AMD-V (AMD Virtualization)

Para verificar si la CPU las soporta:


# Buscar flags vmx (Intel) o svm (AMD) en la info de CPU
grep -E 'vmx|svm' /proc/cpuinfo

# Alternativa con lscpu
lscpu | grep Virtualization

# Comprobar si el módulo KVM está cargado
lsmod | grep kvm
          

Si aparece vmx (Intel) o svm (AMD), el hardware es compatible. También hay que asegurarse de que la virtualización esté habilitada en la BIOS/UEFI.

Instalación

Debian/Ubuntu


apt install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils virtinst virt-manager
          

RHEL / Rocky Linux / AlmaLinux


dnf install qemu-kvm libvirt libvirt-client virt-install virt-manager
          

Habilitar y arrancar libvirtd


systemctl enable --now libvirtd
systemctl status libvirtd
          

Añadir el usuario al grupo libvirt


usermod -aG libvirt $USER
usermod -aG kvm $USER
# Cerrar sesión y volver a entrar para que tenga efecto
          

Componentes principales

  • Módulo kvm (kvm.ko): núcleo de la virtualización, integrado en el kernel. Carga automáticamente kvm_intel o kvm_amd según la CPU.
  • QEMU: emulador que proporciona los dispositivos virtuales (disco, red, USB, VGA). Cuando usa KVM, delega la ejecución de código al módulo del kernel, obteniendo rendimiento casi nativo.
  • libvirt: capa de gestión que proporciona una API unificada sobre QEMU/KVM. Es lo que usan herramientas como virsh y virt-manager.
  • virtio: drivers paravirtualizados para red (virtio-net), disco (virtio-blk, virtio-scsi) y otros dispositivos. Ofrecen mayor rendimiento que la emulación completa.

Verificar la instalación


# Comprobar que KVM está disponible
kvm-ok                          # en Ubuntu (paquete cpu-checker)
virt-host-validate              # validación completa del host

# Ver los módulos cargados
lsmod | grep kvm
# kvm_intel          (o kvm_amd)
# kvm

# Ver la versión de QEMU
qemu-system-x86_64 --version
          

Red por defecto: NAT con virbr0

La instalación de libvirt crea automáticamente una red virtual NAT llamada default, accesible a través del bridge virbr0 (192.168.122.0/24). Las VMs conectadas a esta red tienen salida a Internet a través del host pero no son accesibles desde el exterior.


ip addr show virbr0
virsh net-list --all
          

KVM + QEMU forma la base de la virtualización en Linux. Todo lo demás (libvirt, virt-manager, virsh) son capas de gestión que facilitan trabajar con esta combinación.

libvirt

Índice de la sección

Índice del curso