Eine gestoppte Test-VM ist nicht unbedingt ausgefallen. Auf einem KVM-Host besteht das erste Risiko darin, Befehle im falschen Bereich auszuführen und dann das Bridge oder das Produktionsnetzwerk zu ändern, während es ausreicht, den Status von libvirt zu überprüfen.
Mit virsh können Sie die VM identifizieren, sie starten und dann die Schnittstelle und die erhaltene IP-Adresse überprüfen. Das folgende Verfahren ist absichtlich auf eine Labor-VM und das libvirt virtuelle Netzwerk beschränkt.

Identifizieren der VM und ihres Netzwerks vor dem Start
Melden Sie sich am KVM-Host an, nicht im Gast. Halten Sie auch einen Konsolenzugriff auf die VM bereit. Wenn das Netzwerk nach dem Start nicht reagiert, verhindert diese Konsole, dass Sie blind die Netzwerkkonfiguration des Hosts ändern.
sudo virsh list --all
sudo virsh net-list --all
sudo virsh domiflist vm-lab
Ersetzen Sie vm-lab durch den Namen, der von virsh list --all angezeigt wird. Der erste Befehl gibt an, ob die Domäne gestoppt ist. Der zweite zeigt die verfügbaren libvirt-Netzwerke an. Der dritte verknüpft die Schnittstelle der VM mit einem virtuellen Netzwerk, einem Bridge oder einer physischen Schnittstelle.
- Eine Schnittstelle, die mit
defaultverbunden ist, verwendet oft das von libvirt bereitgestellte NAT-Netzwerk. - Ein Bridge wie
br0platziert die VM im Netzwerk des Hosts und erfordert eine Kontrolle über DHCP oder VLAN. - Eine leere Quelle oder eine fehlende Schnittstelle bedarf einer Diagnose der XML-Definition der VM, nicht eines Neustarts von libvirt.
Ich würde das Netzwerk default für eine Test-VM beibehalten. Es bietet eine einfache Grenze, die mit den DHCP-Leases von libvirt leicht zu lesen ist. Ein Produktionsbridge ändert die Diagnose und sollte nicht geändert werden, um nur eine Maschine zu testen.
Das Domäne starten und ihren Status überprüfen
Wenn der Domänenname und die Schnittstelle konsistent sind, starten Sie nur diese VM.
sudo virsh start vm-lab
sudo virsh list --all
sudo virsh dominfo vm-lab
virsh start sollte Domain 'vm-lab' started zurückgeben, dann sollte virsh list --all den Status running anzeigen. virsh dominfo bestätigt die Domäne, ihren Status und die angeforderte Speichermenge, ohne die grafische Konsole zu öffnen.
Wenn der Start fehlschlägt, lesen Sie das Protokoll des aktuellen Bootvorgangs, bevor Sie etwas ändern. Neuere Installationen können virtqemud verwenden, ältere libvirtd.
sudo journalctl -u virtqemud -u libvirtd -b --no-pager | tail -n 50
Ein Fehler bei der ISO-Pfad, der Festplattendatei, den Rechten oder der Ressource tritt häufig hier auf. Das Protokoll liefert einen präzisen Ausgangspunkt. Alle Virtualisierungsdienste neu zu starten, kann andere aktive VMs unterbrechen.
Die IP-Adresse der VM finden
Eine laufende VM hat möglicherweise keine von dem Host sichtbare Adresse. Mit dem NAT-Netzwerk default beginnen Sie mit den DHCP-Leases von libvirt.
sudo virsh domifaddr vm-lab --source lease
sudo virsh net-dhcp-leases default
Der erste Befehl verknüpft eine Adresse mit der Schnittstelle der Domäne, wenn libvirt das Lease kennt. Der zweite zeigt die Leases des Netzwerks default an. Wenn die VM mit einem Bridge verbunden ist, können diese Befehle leer bleiben, während der Gast einwandfrei funktioniert.
In diesem Fall verwenden Sie den QEMU-Agenten, falls der Gast ihn ausführt, und dann die Konsole, falls erforderlich.
sudo virsh domifaddr vm-lab --source agent
sudo virsh console vm-lab
Starten Sie von der Konsole der VM den Befehl ip -br addr und dann ip route. Die Anleitungen Ip addr unter Linux und Route IP unter Linux helfen bei der Interpretation der Schnittstelle und des Gateways. Um virsh console zu verlassen, verwenden Sie Ctrl + ].
Das Netzwerk überprüfen, ohne das Bridge zu verändern
Wenn die VM startet, aber keine Adresse im Netzwerk default hat, überprüfen Sie zunächst ihren Status.
sudo virsh net-info default
sudo virsh net-list --all
In einer Testumgebung kann ein als inaktiv erklärtes Netzwerk default mit sudo virsh net-start default gestartet werden. Überprüfen Sie dann wieder mit virsh domifaddr vm-lab --source lease. Diese Aktion ist nicht geeignet für eine Geschäftsanwendung, ein VLAN oder ein Netzwerk, das von einem anderen Team verwaltet wird.
Wenn die Schnittstelle an einem Bridge angeschlossen ist, überprüfen Sie im Gast, ob die Schnittstelle eine Adresse und eine Route erhalten hat. Das Problem liegt dann oft auf der DHCP-, VLAN- oder Netzfilterseite, nicht im Befehl virsh start.
Die Test-VM ordnungsgemäß stoppen
Nach der Überprüfung fordern Sie einen sauberen Stopp im Gast an und überprüfen Sie dessen Status. virsh destroy trennt die virtuelle Stromversorgung sofort. Behalten Sie dies für eine blockierte VM, nachdem Sie das Risiko einer Beschädigung bewertet haben.
sudo virsh shutdown vm-lab
sudo virsh list --all
Die Dokumentation virsh von libvirt beschreibt die Varianten jedes Befehls. Auf einem Host, der aktive VMs beherbergt, bleibt die richtige Grenze einfach: Lesen Sie die Domäne und ihre Schnittstelle, bevor Sie globale Aktionen auf Diensten oder dem Netzwerk durchführen.