virsh es una potente herramienta de línea de comandos incluida en libvirt que permite gestionar máquinas virtuales y recursos asociados en KVM.
A través de virsh, puedes crear, iniciar, detener, modificar y supervisar dominios (máquinas virtuales), así como gestionar redes, volúmenes y pools de almacenamiento.


1. Gestión de dominios (máquinas virtuales)

ComandoDescripción
virsh list --allLista todas las máquinas virtuales, activas e inactivas.
virsh start vm_nameInicia una máquina virtual previamente definida.
virsh shutdown vm_nameApaga una máquina virtual de forma ordenada.
virsh destroy vm_nameDetiene una máquina virtual de inmediato (similar a apagarla forzosamente).
virsh suspend vm_nameSuspende la ejecución de la máquina virtual.
virsh resume vm_nameReanuda una máquina suspendida.
virsh reboot vm_nameReinicia la máquina virtual.
virsh reset vm_nameResetea una máquina virtual como si se pulsara el botón de reset físico.
virsh autostart vm_nameActiva el inicio automático de la VM al arrancar el host.
virsh dominfo vm_nameMuestra información detallada sobre la VM (estado, UUID, CPU, memoria, etc.).
virsh dumpxml vm_nameMuestra la definición XML completa de la VM.
virsh edit vm_nameAbre la definición XML de la VM en un editor para modificarla.
virsh undefine vm_nameElimina la definición de una VM sin borrar su disco.
virsh domrename old_name new_nameCambia el nombre de una máquina virtual.

2. Información y monitorización

ComandoDescripción
virsh domstate vm_nameMuestra el estado actual de una VM (running, shut off, etc.).
virsh domstats vm_nameMuestra estadísticas de CPU, red y disco en tiempo real.
virsh domblklist vm_nameLista los dispositivos de bloque (discos) asociados a una VM.
virsh domblkinfo vm_name vdaMuestra información detallada sobre un disco virtual.
virsh domiflist vm_nameMuestra las interfaces de red conectadas a la VM.
virsh domifaddr vm_nameMuestra las direcciones IP asignadas a las interfaces de red de la VM.
virsh cpu-stats vm_nameMuestra estadísticas detalladas del uso de CPU por parte de la VM.
virsh dommemstat vm_nameMuestra estadísticas de uso de memoria de una VM.
virsh console vm_nameConecta a la consola de texto de la máquina virtual.
virsh vncdisplay vm_nameMuestra el puerto VNC asignado a la VM para acceso gráfico.

3. Almacenamiento

ComandoDescripción
virsh pool-listLista todos los pools de almacenamiento.
virsh pool-info pool_nameMuestra información detallada de un pool.
virsh pool-start pool_nameInicia un pool de almacenamiento.
virsh pool-destroy pool_nameDetiene un pool de almacenamiento.
virsh pool-undefine pool_nameElimina la definición del pool.
virsh vol-list pool_nameLista los volúmenes (discos) dentro de un pool.
virsh vol-info --pool pool_name vol_nameMuestra información sobre un volumen.
virsh vol-create-as pool_name vol_name 20G --format qcow2Crea un nuevo volumen de 20 GB en formato QCOW2.
virsh vol-delete --pool pool_name vol_nameElimina un volumen de un pool.
virsh vol-clone --pool pool_name source_vol new_volClona un volumen existente.

4. Redes virtuales

ComandoDescripción
virsh net-list --allLista todas las redes virtuales, activas e inactivas.
virsh net-info net_nameMuestra información detallada de una red.
virsh net-start net_nameInicia una red virtual.
virsh net-destroy net_nameDetiene una red virtual.
virsh net-autostart net_nameHabilita el inicio automático de una red.
virsh net-edit net_nameEdita la configuración XML de una red.
virsh net-dumpxml net_nameMuestra la definición XML de una red.
virsh net-update net_nameActualiza parámetros de una red sin necesidad de reiniciarla.
virsh net-dhcp-leases net_nameMuestra las direcciones IP entregadas por DHCP en una red.

5. Snapshots y backups

ComandoDescripción
virsh snapshot-list vm_nameLista los snapshots disponibles de una VM.
virsh snapshot-create-as vm_name snapshot_name "Descripción"Crea un snapshot con nombre y descripción.
virsh snapshot-revert vm_name snapshot_nameRevierte la VM al estado guardado en un snapshot.
virsh snapshot-delete vm_name snapshot_nameElimina un snapshot específico.
virsh backup-begin vm_name --target /backup/Inicia una copia de seguridad de los discos de la VM.
virsh backup-dumpxml vm_nameMuestra información XML sobre una tarea de backup en curso.

6. Migración y guardado de estado

ComandoDescripción
virsh save vm_name /ruta/estado.saveGuarda el estado actual de una VM en un archivo.
virsh restore /ruta/estado.saveRestaura una VM desde un archivo guardado.
virsh migrate --live vm_name qemu+ssh://host_destino/systemMigra una VM en ejecución a otro host mediante SSH.

7. Información del host e hipervisor

ComandoDescripción
virsh nodeinfoMuestra información sobre la CPU, memoria y arquitectura del host.
virsh capabilitiesMuestra las capacidades del hipervisor (CPU, virtualización, etc.).
virsh domcapabilitiesMuestra las capacidades soportadas por las VMs.
virsh versionMuestra la versión de libvirt y del hipervisor.
virsh hostnameMuestra el nombre del host que ejecuta libvirt.
virsh uriMuestra la URI de conexión al hipervisor.

8. Consejos adicionales

  • Para ejecutar comandos sin privilegios, puedes usar --connect qemu:///session o añadir tu usuario a los grupos libvirt y kvm.
  • Si gestionas VMs del sistema, utiliza sudo virsh --connect qemu:///system.
  • Usa virsh help <sección> para ver todos los comandos disponibles en un grupo (por ejemplo, virsh help domain).
  • Todos los cambios realizados mediante virsh edit se guardan directamente en los XML de configuración en /etc/libvirt/qemu/.