Creación de máquinas virtuales con KVM y virt-manager

Introducción a KVM y virt-manager

En el entorno de la virtualización de código abierto, KVM (Kernel-based Virtual Machine) se ha consolidado como una de las soluciones más versátiles y potentes a nivel empresarial y doméstico. Asociado a libvirt y a herramientas gráficas como virt-manager, ofrece un conjunto completo para la creación, gestión y monitorización de máquinas virtuales (VMs) sobre sistemas Linux.

1. Requisitos previos

  • Un servidor o equipo con Linux (preferiblemente distribuciones como Ubuntu, CentOS, Fedora o Debian).
  • Un procesador con soporte de virtualización: Intel VT-x o AMD-V.
  • Acceso con privilegios de root o mediante sudo.
  • Conectividad de red configurada (puente, NAT o VLAN).
  • Almacenamiento suficiente para imágenes de disco (formato QCOW2, RAW, LVM, ZFS…).

2. Instalación de KVM y virt-manager

2.1 En Ubuntu/Debian

sudo apt update
sudo apt install qemu-kvm libvirt-daemon-system libvirt-clients virt-manager
  

2.2 En CentOS/RHEL

sudo yum install qemu-kvm libvirt libvirt-python libguestfs-tools virt-install virt-manager
sudo systemctl enable --now libvirtd
  

3. Comprobación de soporte de virtualización

Para verificar que el núcleo reconoce las extensiones VT-x/AMD-V:

egrep -c (vmxsvm) /proc/cpuinfo
  

Un valor ≥1 significa que dispone de soporte.

4. Configuración básica de libvirt

  • Arrancar el servicio: sudo systemctl start libvirtd.
  • Añadir tu usuario al grupo libvirt: sudo usermod -aG libvirt USER.
  • Comprobar estado: virsh list --all (debe devolver al menos la red default).

5. Gestión de almacenamiento

5.1 Almacenamiento en fichero (QCOW2 vs RAW)

Formato Ventajas Inconvenientes
QCOW2 Snapshots, compresión, cifrado. Pequeña penalización de rendimiento.
RAW Máximo rendimiento. No soporta snapshots internos.

5.2 Pools de almacenamiento

# Crear directorio
sudo mkdir -p /var/lib/libvirt/images
# Definir pool
virsh pool-define-as defaultdir dir - - /var/lib/libvirt/images
virsh pool-build defaultdir
virsh pool-start defaultdir
virsh pool-autostart defaultdir
  

6. Redes virtuales con libvirt

  • Network default: NAT por defecto.
  • Puente (bridge): integra las VMs en la LAN física.
  • VLAN: segmenta tráfico avanzadamente.

6.1 Crear puente de red (Linux Bridge)

# /etc/network/interfaces (Debian/Ubuntu)
/etc/netplan/.yaml (Ubuntu moderno)
auto br0
iface br0 inet dhcp
  bridge_ports eth0
  

7. virt-manager: la interfaz gráfica

El paquete virt-manager proporciona un cliente GTK para gestionar VMs. Permite:

  • Configuración asistida de hardware virtual (CPU, RAM, discos).
  • Monitorización en tiempo real (CPU, memoria, disco, red).
  • Gestión de snapshots y gráficos VNC/SPICE.

7.1 Crear una VM paso a paso

  1. Inicio: Archivo → Conectar → QEMU/KVM.
  2. Nuevo → Asistente de creación de VM.
  3. Seleccionar ISO o red de instalación.
  4. Asignar CPU, memoria y disco.
  5. Configurar red (NAT/Bridge).
  6. Finalizar y arrancar.

8. Línea de comandos con virsh y virt-install

8.1 Listar y controlar VMs

virsh list --all
virsh start vm01
virsh shutdown vm01
virsh undefine vm01 --remove-all-storage
  

8.2 Crear una VM con virt-install

virt-install 
--name vm01 
--ram 2048 
--vcpus=2 
--disk path=/var/lib/libvirt/images/vm01.qcow2,size=20 
--os-type linux 
--os-variant ubuntu20.04 
--network bridge=br0 
--graphics spice 
--cdrom /isos/ubuntu-20.04.iso
  

9. Funciones avanzadas

9.1 Snapshots

virsh snapshot-create-as 
--domain vm01 
--name before-update 
--description Estado previo a actualización
  

9.2 Passthrough de GPU (IOMMU)

  • Habilitar IOMMU en boot: intel_iommu=on o amd_iommu=on.
  • Identificar dispositivo PCI: lspci -nn.
  • Configurar vfio-pci en modprobe.

9.3 Alta disponibilidad (HA)

Integrar libvirt con Corosync y Pacemaker para migración activa/pasiva de VMs en clúster.

10. Backup y migración

  • Copias de imágenes QCOW2 incrementales.
  • Exportación con virsh dumpxml y virsh domblklist.
  • Migración en vivo: virsh migrate --live vm01 qemu ssh://destino/system.

11. Seguridad y redes privadas

11.1 SELinux / AppArmor

Verificar contextos de seguridad para ficheros de imagen y directorios.

11.2 Firewall y aislamiento

Definir reglas nftables/iptables para cadenas asociadas a las interfaces de libvirt.

11.3 Uso de VPN dentro de la VM

Para asegurar el tráfico en entornos distribuidos o multi-sitio, es común instalar una VPN en la VM:

  • OpenVPN: robusta y ampliamente documentada.
  • WireGuard: ligera, de alto rendimiento y moderna.

12. Conclusión

La combinación de KVM, libvirt y virt-manager constituye una plataforma de virtualización sólida, escalable y flexible. Desde instalaciones básicas hasta despliegues complejos con HA, GPU passthrough y redes seguras mediante VPN, ofrece un abanico de posibilidades que se adapta tanto a usuarios individuales como a infraestructuras empresariales. Siguiendo las pautas y buenas prácticas expuestas en este artículo, dispondrás de los conocimientos necesarios para sacar el máximo partido a tus máquinas virtuales bajo Linux.

  • Hola 👋 , soy la IA de Linuxmind.dev, te puedo ayudar a aprender.
Gathering thoughts ...

Leave a Reply

Your email address will not be published. Required fields are marked *