Tutoriel Linux

Libvirt : iniciar una VM con virsh y verificar su red

Débutant4 min de lecture

Una VM de prueba detenida no necesariamente está fallando. En un host KVM, el primer riesgo es ejecutar comandos en el dominio incorrecto, y luego modificar el bridge o la red de producción cuando basta con leer el estado de libvirt.

Con virsh, puedes identificar la VM, iniciarla y luego verificar la interfaz y la dirección IP obtenida. El procedimiento siguiente se limita deliberadamente a una VM de laboratorio y a la red virtual libvirt.

Pingüino Tux entre dos máquinas virtuales conectadas por una red libvirt
Virsh inicia el dominio, luego libvirt permite leer su interfaz y su red.

Identificar la VM y su red antes del inicio

Inicia sesión en el host KVM, no en el invitado. Mantén también un acceso a la consola de la VM. Si la red no responde después de que se haya iniciado, esta consola evita que se cambie la configuración de red del host a ciegas.

sudo virsh list --all
sudo virsh net-list --all
sudo virsh domiflist vm-lab

Reemplaza vm-lab por el nombre mostrado por virsh list --all. El primer comando indica si el dominio está detenido. El segundo muestra las redes libvirt disponibles. El tercero asocia la interfaz de la VM a una red virtual, un bridge o una interfaz física.

  • Una interfaz conectada a default a menudo utiliza la red NAT proporcionada por libvirt.
  • Un bridge como br0 coloca la VM en la red del host y requiere control por parte de DHCP o VLAN.
  • Una fuente vacía o una interfaz ausente merece un diagnóstico de la definición XML de la VM, no un reinicio de libvirt.

Yo mantendría la red default para una VM de prueba. Proporciona un perímetro simple de leer con los arrendamientos DHCP de libvirt. Un bridge de producción cambia el diagnóstico y no debe ser modificado para probar una sola máquina.

Iniciar el dominio y controlar su estado

Cuando el nombre del dominio y la interfaz son coherentes, inicia únicamente esta VM.

sudo virsh start vm-lab
sudo virsh list --all
sudo virsh dominfo vm-lab

virsh start debe devolver Domain 'vm-lab' started, luego virsh list --all debe mostrar el estado running. virsh dominfo confirma el dominio, su estado y la cantidad de memoria solicitada sin abrir la consola gráfica.

Si el inicio falla, lee el registro del arranque actual antes de cambiar cualquier cosa. Las instalaciones recientes pueden usar virtqemud, las más antiguas libvirtd.

sudo journalctl -u virtqemud -u libvirtd -b --no-pager | tail -n 50

Un error de ruta ISO, de imagen de disco, de permisos o de recurso suele aparecer aquí. El registro proporciona un punto de partida preciso. Reiniciar todos los servicios de virtualización puede interrumpir otras VM activas.

Encontrar la dirección IP de la VM

Una VM en ejecución puede no tener una dirección visible desde el host. Con la red NAT default, comienza por los arrendamientos DHCP de libvirt.

sudo virsh domifaddr vm-lab --source lease
sudo virsh net-dhcp-leases default

El primer comando vincula una dirección a la interfaz del dominio cuando libvirt conoce el arrendamiento. El segundo muestra los arrendamientos de la red default. Si la VM está conectada a un bridge, estos comandos pueden estar vacíos mientras el invitado funcione correctamente.

En este caso, usa el agente QEMU si el invitado lo ejecuta, luego la consola si es necesario.

sudo virsh domifaddr vm-lab --source agent
sudo virsh console vm-lab

Desde la consola de la VM, ejecuta ip -br addr y luego ip route. Las guías Ip addr en Linux y Ruta IP en Linux ayudan a interpretar la interfaz y la puerta de enlace. Para salir de virsh console, usa Ctrl + ].

Verificar la red sin tocar el bridge

Si la VM se inicia pero permanece sin dirección con la red default, primero verifica su estado.

sudo virsh net-info default
sudo virsh net-list --all

En un entorno de prueba, una red default declarada inactiva puede iniciarse con sudo virsh net-start default. Luego retoma virsh domifaddr vm-lab --source lease. Esta acción no es adecuada para un bridge empresarial, un VLAN o una red gestionada por otro equipo.

Cuando la interfaz está en un bridge, verifica en el invitado que la interfaz haya recibido una dirección y una ruta. El problema a menudo está del lado de DHCP, VLAN o filtrado de red, no en el comando virsh start.

Detener adecuadamente la VM de prueba

Después de la verificación, pide una detención adecuada al invitado y verifica su estado. virsh destroy corta la alimentación virtual de inmediato. Guárdalo para una VM bloqueada, después de evaluar el riesgo de corrupción.

sudo virsh shutdown vm-lab
sudo virsh list --all

La documentación virsh de libvirt detalla las variantes de cada comando. En un host que alberga VM activas, el buen límite sigue siendo simple: lee el dominio y su interfaz antes de cualquier acción global sobre los servicios o la red.