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)

  1. Abrir virt-manager
  2. Clic en Nueva máquina virtual
  3. Seleccionar Medio de instalación local (ISO)
  4. Elegir la ISO y el sistema operativo
  5. Configurar memoria y CPUs
  6. Crear o seleccionar un disco
  7. 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
          

Con estos comandos se cubre el ciclo de vida completo de una VM en KVM: creación, arranque, parada, snapshots, clonado y acceso. Para entornos de producción, herramientas como Terraform + libvirt provider o Ansible permiten automatizar todo este proceso de forma reproducible.

Conceptos de contenedores

Índice de la sección

Índice del curso