Libvirt: VM Management Library (Artikel 042)
Beherrschung der Libvirt-Toolchain für das Management von virtuellen Maschinen. Einsatz von virsh, XML-Konfigurationen und Storage-Pool-Verwaltung im Enterprise-Umfeld.
# Libvirt Deep Dive: Das Gehirn Ihrer Virtualisierung
TL;DR / Management Summary Während KVM die Muskeln (Hypervisor) bereitstellt, ist Libvirt das Gehirn. Es bietet eine einheitliche API, um virtuelle Maschinen, Netzwerke und Speicher zu verwalten – egal ob KVM, QEMU, Xen oder sogar LXC dahintersteckt. Das wichtigste Werkzeug für den Admin ist
virsh(CLI). Wer die Libvirt-XML-Struktur versteht, kann komplexe Setups automatisieren, die über Web-GUIs nicht möglich wären.
# 1. Einführung & Architektur
Die Management-Schicht.
Libvirt abstrahiert die hypervisorspezifischen Befehle in eine standardisierte XML-Sprache.
graph TD
A[Admin: virsh / virt-manager] --> B[libvirtd Daemon]
B --> C[Driver: QEMU/KVM]
B --> D[Driver: LXC]
B --> E[Driver: Storage & Network]
C --> F[Running VM 1]
C --> G[Running VM 2]
E --> H[Bridge / NAT / Pools]
# 2. Das CLI-Werkzeug: virsh
Präzision in der Konsole.
virsh ist das Schweizer Taschenmesser. Fast jeder Befehl kann interaktiv oder als One-Liner ausgeführt werden.
# Lifecycle Management
# VM definieren (aus XML)
virsh define myvm.xml
# Starten & Stoppen
virsh start myvm
virsh shutdown myvm # Sanft via ACPI
virsh destroy myvm # Hart (wie Stecker ziehen)
# Autostart beim Booten des Hosts
virsh autostart myvm
# 3. Storage Pools & Netzwerke
Infrastruktur für VMs.
Libvirt verwaltet nicht nur VMs, sondern auch die Ressourcen dahinter.
# Storage Pools (Wo liegen die Disks?)
# Pools anzeigen
virsh pool-list --all
# Neuen Verzeichnis-Pool erstellen
virsh pool-define-as data dir - - - - /var/lib/libvirt/images/data
virsh pool-autostart data
virsh pool-start data
# Virtuelle Netzwerke
Standardmäßig nutzt Libvirt ein NAT-Netzwerk (default). Im Enterprise nutzen wir oft Bridges.
# Netzwerkstatus
virsh net-list --all
# 4. Day-2 Operations: XML Editing & Migration
Unter die Haube schauen.
Wenn Sie eine Einstellung ändern wollen (z.B. mehr RAM), nutzen Sie virsh edit <name>. Dies öffnet den Standardeditor mit der XML-Konfiguration.
# Beispiel: RAM & CPU anpassen
<domain type='kvm'>
<name>myvm</name>
<memory unit='KiB'>4194304</memory>
<vcpu placement='static'>4</vcpu>
...
</domain>
# Live Migration (Voraussetzung: Shared Storage)
Eines der mächtigsten Features: Eine VM von Host A nach Host B schieben, ohne sie auszuschalten.
virsh migrate --live myvm qemu+ssh://host-b.company.com/system
# 5. Troubleshooting & “War Stories”
Wenn Libvirt streikt.
# Story 1: “Der hängende Shutdown”
Symptom: virsh shutdown macht nichts, die VM läuft weiter.
Ursache: Das Gast-Betriebssystem reagiert nicht auf ACPI-Signale (kein QEMU Guest Agent installiert oder Dienst im Gast hängt).
Lösung: Installieren Sie qemu-guest-agent im Gast. Falls das nicht hilft: virsh destroy.
# Story 2: “XML-Fehler: Domain not found”
Symptom: virsh edit meldet, dass die Domain nicht existiert, obwohl virsh list sie anzeigt.
Ursache: Sie befinden sich in der falschen URI. Libvirt unterscheidet zwischen qemu:///session (User-Space) und qemu:///system (Root/System).
Lösung: Nutzen Sie immer virsh -c qemu:///system oder setzen Sie den Alias permanent in Ihrer Shell.
# 6. Fazit & Empfehlung
- Sicherheit: Nutzen Sie Libvirt-Zertifikate für Remote-Zugriffe (TCP statt nur SSH).
- Backup: Sichern Sie die XML-Dateien Ihrer VMs unter
/etc/libvirt/qemu/. Ohne diese Datei ist die Wiederherstellung einer Disk mühsam. - Tools: Für eine schnelle GUI-Übersicht ist virt-manager (X11/Wayland) die ideale Ergänzung zu
virsh.
# Anhang: Cheatsheet
| Aufgabe | Befehl |
|---|---|
| Konsolenzugriff | virsh console <name> |
| Details zur VM | virsh dominfo <name> |
| Block-Devices (Disks) | virsh domblklist <name> |
| Netzwerk-Interfaces | virsh domiflist <name> |
| Snapshot-Liste | virsh snapshot-list <name> |
| Resource Monitoring | virt-top |
| VNC Port finden | virsh vncdisplay <name> |