Creación y gestión básica de máquinas virtuales
Introducción
Con KVM, libvirt y las herramientas de gestión instaladas, podemos crear y gestionar máquinas virtuales de forma completa. En este apartado se cubren los flujos habituales: crear una VM desde ISO, gestionar su ciclo de vida, trabajar con snapshots y clonar VMs.
Crear una VM desde ISO
Con virt-install (CLI)
# Ejemplo: Ubuntu Server 22.04
virt-install \
--name ubuntu-srv \
--ram 2048 \
--vcpus 2 \
--disk path=/var/lib/libvirt/images/ubuntu-srv.qcow2,size=20,format=qcow2 \
--cdrom /var/lib/libvirt/images/ubuntu-22.04-live-server-amd64.iso \
--network network=default,model=virtio \
--os-variant ubuntu22.04 \
--graphics spice \
--video virtio \
--noautoconsole
# Ver el estado de la VM recién creada
virsh list --all
Con virt-manager (GUI)
- Abrir
virt-manager - Clic en Nueva máquina virtual
- Seleccionar Medio de instalación local (ISO)
- Elegir la ISO y el sistema operativo
- Configurar memoria y CPUs
- Crear o seleccionar un disco
- Revisar y finalizar → la VM arranca automáticamente
Ciclo de vida de una VM
# Arrancar
virsh start ubuntu-srv
# Apagado ordenado (envía señal ACPI al SO guest)
virsh shutdown ubuntu-srv
# Apagado forzado (equivale a cortar la corriente)
virsh destroy ubuntu-srv
# Reiniciar
virsh reboot ubuntu-srv
# Pausar / reanudar
virsh suspend ubuntu-srv
virsh resume ubuntu-srv
# Eliminar la VM (sin borrar los discos)
virsh undefine ubuntu-srv
# Eliminar la VM y sus discos
virsh undefine ubuntu-srv --remove-all-storage
Snapshots
Los snapshots capturan el estado completo de la VM (disco + RAM si está en ejecución) y permiten volver a ese punto en cualquier momento.
# Crear snapshot (con la VM apagada o en ejecución)
virsh snapshot-create-as ubuntu-srv snap-inicial "estado limpio tras instalar"
# Listar snapshots
virsh snapshot-list ubuntu-srv
# Ver info de un snapshot
virsh snapshot-info ubuntu-srv snap-inicial
# Volver a un snapshot
virsh snapshot-revert ubuntu-srv snap-inicial
# Eliminar un snapshot
virsh snapshot-delete ubuntu-srv snap-inicial
Clonar VMs
Clonar una VM crea una copia independiente con un nuevo disco y nueva MAC de red. La VM original debe estar apagada.
virsh shutdown ubuntu-srv
virt-clone \
--original ubuntu-srv \
--name ubuntu-srv-2 \
--auto-clone
virsh start ubuntu-srv-2
Acceder a la VM
Por SSH (si la VM tiene red NAT o bridge)
# Obtener la IP de la VM (requiere qemu-guest-agent instalado en el guest)
virsh domifaddr ubuntu-srv
# SSH directo
ssh usuario@192.168.122.X
Por consola serie
# En el guest Ubuntu, habilitar consola serie:
# Añadir a /etc/default/grub:
# GRUB_CMDLINE_LINUX="console=tty0 console=ttyS0,115200n8"
# update-grub
virsh console ubuntu-srv
# Salir con: Ctrl+]
Por VNC/SPICE con virt-manager
# Desde virt-manager: doble clic sobre la VM para abrir su pantalla
# Desde CLI, ver el display asignado:
virsh vncdisplay ubuntu-srv # muestra :0, :1, etc.
# Conectar con un cliente VNC al puerto 5900 + N
qemu-guest-agent
El qemu-guest-agent es un daemon que se instala dentro del guest y permite al host comunicarse con él: obtener IPs, hacer snapshots consistentes, ejecutar comandos, etc.
# Instalar en el guest (Debian/Ubuntu)
apt install qemu-guest-agent
systemctl enable --now qemu-guest-agent
# Desde el host, obtener info del guest
virsh domifaddr ubuntu-srv --source agent
virsh guestinfo ubuntu-srv