Vai al contenuto
Sistema

Libvirt : avviare una VM con virsh e verificare la sua rete

Avatar illustré de Julien Macé 3 min di lettura
Manchot Tux entre deux machines virtuelles reliées par un réseau libvirt
Virsh démarre le domaine, puis libvirt permet de lire son interface et son réseau.

Una VM di test fermata non è necessariamente guasta. Su un host KVM, il primo rischio è eseguire comandi nel dominio sbagliato e poi modificare il bridge o la rete di produzione quando basta leggere lo stato di libvirt.

Con virsh, puoi identificare la VM, avviarla e poi verificare l’interfaccia e l’indirizzo IP ottenuto. La procedura qui sotto rimane volutamente limitata a una VM di laboratorio e alla rete virtuale libvirt.

Pinguino Tux tra due macchine virtuali collegate da una rete libvirt
Virsh avvia il dominio, poi libvirt consente di leggere la sua interfaccia e la sua rete.

Identificare la VM e la sua rete prima dell’avvio

Accedi all’host KVM, non all’invitato. Mantieni anche un accesso console alla VM. Se la rete non risponde dopo l’avvio, questa console evita di modificare la configurazione di rete dell’host a caso.

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

Sostituisci vm-lab con il nome visualizzato da virsh list --all. Il primo comando indica se il dominio è fermo. Il secondo mostra le reti libvirt disponibili. Il terzo associa l’interfaccia della VM a una rete virtuale, un bridge o un’interfaccia fisica.

  • Un’interfaccia connessa a default utilizza spesso la rete NAT fornita da libvirt.
  • Un bridge come br0 posiziona la VM sulla rete dell’host e richiede un controllo lato DHCP o VLAN.
  • Una sorgente vuota o un’interfaccia mancante merita una diagnostica della definizione XML della VM, non un riavvio di libvirt.

Terrò la rete default per una VM di test. Fornisce un perimetro semplice da leggere con i lease DHCP di libvirt. Un bridge di produzione cambia la diagnostica e non dovrebbe essere modificato per testare una sola macchina.

Avviare il dominio e controllare il suo stato

Quando il nome del dominio e l’interfaccia sono coerenti, avvia solo questa VM.

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

virsh start deve restituire Domain 'vm-lab' started, poi virsh list --all deve mostrare lo stato running. virsh dominfo conferma il dominio, il suo stato e la quantità di memoria richiesta senza aprire la console grafica.

Se l’avvio fallisce, leggi il journal dell’ultimo avvio prima di cambiare qualcosa. Le installazioni recenti possono usare virtqemud, le più vecchie libvirtd.

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

Un errore di percorso ISO, immagine disco, diritti o risorsa appare spesso qui. Il journal fornisce un punto di partenza preciso. Riavviare tutti i servizi di virtualizzazione può interrompere altre VM attive.

Trovare l’indirizzo IP della VM

Una VM in esecuzione potrebbe non avere un indirizzo visibile dall’host. Con la rete NAT default, inizia con i lease DHCP di libvirt.

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

Il primo comando collega un indirizzo all’interfaccia del dominio quando libvirt conosce il lease. Il secondo mostra i lease della rete default. Se la VM è collegata a un bridge, questi comandi possono restare vuoti mentre l’invitato funziona correttamente.

In questo caso, usa l’agente QEMU se l’invitato lo esegue, poi la console se necessario.

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

Dal console della VM, esegui ip -br addr poi ip route. Le guide Ip addr sotto Linux e Route IP sotto Linux aiutano ad interpretare l’interfaccia e il gateway. Per uscire da virsh console, usa Ctrl + ].

Controllare la rete senza toccare al bridge

Se la VM si avvia ma rimane senza indirizzo sulla rete default, controlla prima il suo stato.

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

In un ambiente di test, una rete default dichiarata inattiva può essere avviata con sudo virsh net-start default. Poi riprendi virsh domifaddr vm-lab --source lease. Questa azione non è adatta per un bridge di produzione, un VLAN o una rete gestita da un altro team.

Quando l’interfaccia è su un bridge, verifica nell’invito che l’interfaccia abbia ricevuto un indirizzo e una rotta. Il problema si trova spesso lato DHCP, VLAN o filtrazione di rete, non nel comando virsh start.

Arrestare correttamente la VM di test

Dopo il controllo, richiedi un arresto pulito all’invitato e controlla il suo stato. virsh destroy interrompe l’alimentazione virtuale immediatamente. Tienilo per una VM bloccata, dopo aver valutato il rischio di corruzione.

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

La documentazione virsh di libvirt dettaglia le varianti di ogni comando. Su un host che ospita VM attive, il limite corretto rimane semplice: leggi il dominio e la sua interfaccia prima di qualsiasi azione globale sui servizi o sulla rete.

Condividi Facebook X WhatsApp LinkedIn Pinterest Reddit E-mail