EN

Virtuelle Maschinen erzeugen und verwalten

Nach der notwendigen Vorbereitung kommen wir nun endlich zum zentralen Thema: wie man virtuelle Maschinen erzeugt, verwaltet und vor allem startet. Wie bereits erwähnt, stehen dafür sowohl graphische Oberflächen als auch die Kommandozeile zur Verfügung. Ein Tool wie Cockpit erleichtert den Einstieg besonders, daher beginnen wir damit.

Verwaltung über ein graphisches Frontend

Fedora empfiehlt Cockpit, eine webbasierte graphische Oberfläche, die primär für den Einsatz auf Servern konzipiert wurde. Durch eine Erweiterung lässt sich Cockpit auch zur Verwaltung virtueller Maschinen nutzen. Es ermöglicht den Zugriff auf VMs von anderen Computern im gleichen Netzwerk, wobei wir uns hier auf die lokale Nutzung konzentrieren.

Zunächst ergänzen wir Cockpit zu den bereits installierten Paketen:

sudo dnf install cockpit cockpit-machines

Cockpit verwendet einen Socket, der über den Port 9090 eine Verbindung zwischen Browser und Anwendung herstellt. Es wird wirksam, sobald Aktivität bei dem Port festgestellt wird, der mit der Anwendung verknüpft wird. Um Cockpit zu starten, aktivieren wir den Socket über Systemd:

sudo systemctl start cockpit.socket

Für den lokalen Zugriff öffnet man Cockpit im Browser über http://localhost:9090/. Nach dem Login mit einem Systembenutzer empfiehlt es sich, oben auf Administrative Access zu klicken, um dem Benutzer, um den eingeloggten Benutzer sudo-Rechte zu geben. Ohne diese Rechte können bei der Erstellung einer VM Polkit-Fehler auftreten.

Unter Virtual machines links im Menü kann man mit Create VM kann eine neue virtuelle Maschine anlegen. eine neue VM erstellen. Der Ablauf ist dabei selbsterklärend. Idealerweise legt man auch ein Root-Passwort für die VM fest.

Sobald die VM erstellt und gestartet ist, gelangt man per Klick auf den Namen zur Verwaltung. Unter Console kann man mit Launch remote viewer auf die Maschine zugreifen. Weiter unten besteht die Möglichkeit, Snapshots des aktuellen VM-Zustands zu erstellen und bei Bedarf darauf zurückzusetzen.

Verwaltung über die Kommandozeile

Die installierten Pakete ermöglichen die vollständige Verwaltung virtueller Maschinen über die Kommandozeile. Mit virsh können bei libvirt registrierte Gast-Systeme einfach gestartet , gestoppt oder auch sofort beendet werden. Diese Aktionen erfolgen über die Befehle sudo virsh start <name>, sudo virsh shutdown <name> und sudo virsh destroy <name>.

Eine Liste aller registrierten Systeme, einschließlich ihrer Namen, lässt sich mit sudo virsh list --all anzeigen. Möchte man ein System von libvirt abmelden, nutzt man sudo virsh undefine <name>. Der Befehl sudo virsh undefine <name> --remove-all-storage entfernt zusätzlich das Festplatten-Image der betreffenden VM (dazu gleich mehr).

Es ist wichtig zu beachten, dass Verwaltungstools wie virsh (oder Cockpit) keine graphische Ausgabe der gestarteten VM liefern. Für den grafischen Zugriff auf eine laufende VM kann man mit sudo -E virt-viewer einen VNC-Viewer starten, der auf virtuelle Maschinen spezialisiert ist.

Virtuelle Maschinen über die Kommandozeile erstellen

Bisher wurde nicht besprochen, wie virtuelle Maschinen erstellt und bei libvirt registriert werden. Cockpit ist komfortabel, da es den Prozess stark vereinfacht und die technischen Details abdeckt. Es kann für die Erstellung von VMs genutzt werden, während virsh und virt-viewer den schnellen Zugriff auf bereits eingerichtete Maschinen erlauben.

Wer auch die Erstellung von VMs über die Kommandozeile durchführen möchte, kann dabei auf einige bereits installierte Werkzeuge zurückgreifen. Zunächst wird eine Datei benötigt, die eine physische Festplatte simuliert (auf Englisch Virtual Disk Image). Diese Datei dient der virtuellen Maschine als Speicher. Es gibt verschiedene Möglichkeiten, ein solches Image zu erstellen, unter anderem mit dd, fallocate und truncate. Sie unterscheiden sich darin, wie genau der Speicher allokiert wird.

Für die meisten Nutzer ist es am einfachsten, ein Tool von QEMU zu verwenden, um ein qcow2-Image zu erzeugen. Dieses Format beansprucht auf der physischen Festplatte des Host-Computers nur so viel Speicher, wie von der Gast-Maschine tatsächlich beschrieben wird. Zusätzlich unterstützen qcow2-Images die Speicherung von Snapshots.

Für die Erstellung eines virtuellen Systems müssen drei wesentliche Parameter angegeben werden: ein Name, das Dateiformat und die Speichergröße, die dem Gast-System zur Verfügung stehen soll.

sudo qemu-img create -f qcow2 \
    /var/lib/libvirt/images/Fedora-Workstation-40/ \
    Fedora-Workstation-40-202408-16.qcow2 \
    20480

Nun zur eigentlichen Registrierung einer neuen virtuellen Maschine und zur Möglichkeit, das spezifizierte System zu virtualisieren. Hierfür bietet sich virt-install an, das durch verschiedene Argumente die Konfiguration des Systems ermöglicht.

Wichtige Angaben umfassen Name, Beschreibung und die Distribution bzw. Variante des Betriebssystems (z. B. Fedora 40). Die verfügbaren Optionen können mit osinfo-query os abgefragt werden. Ebenfalls ist festzulegen, wie viel CPU und Arbeitsspeicher dem Gast zur Verfügung stehen sollen. Mit den Netzwerkeinstellungen wird sichergestellt, dass die virtuelle Maschine die Internetverbindung des Hosts nutzen kann.

Wir verweisen auch auf das erstellte Festplatten-Image, das für gewöhnlich unter /var/lib/libvirt/images abgelegt wird. Zudem wird ein Image der gewünschten Distribution benötigt, um die Installation durchzuführen (im Beispiel: Fedora Workstation 40).

Die Installation einer virtuellen Maschine könnte wie folgt aussehen:

sudo virt-install --name Fedora40 \
--description 'Fedora 40 Workstation' \
--ram 8192 \
--vcpus 4 \
--disk path=/var/lib/libvirt/images/Fedora-Workstation-40/Fedora-Workstation-40-20240816.qcow2,size=10 \
--os-variant fedora40 \
--network bridge=virbr0 \
--graphics vnc,listen=127.0.0.1,port=5901 \
--cdrom /var/lib/libvirt/images/Fedora-Workstation-40/Fedora-Workstation-Live-x86_64-40-1.14.iso \
--noautoconsole

Im Anschluss kann virsh (wie oben gezeigt) zur Verwaltung der Maschine verwendet werden. Nach einiger Arbeit mit der Maschine lässt sich der aktuelle Zustand bei Bedarf durch sudo virsh save <name> als Snapshot speichern. Zu einem gespeicherten Zustand kann jederzeit mit sudo virsh restore <filename> zurückgekehrt werden.

Artikel vom 24. August 2024.