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
- Inicio: Archivo → Conectar → QEMU/KVM.
- Nuevo → Asistente de creación de VM.
- Seleccionar ISO o red de instalación.
- Asignar CPU, memoria y disco.
- Configurar red (NAT/Bridge).
- 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
oamd_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
yvirsh 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:
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.
Leave a Reply