41.4libvirt-Kommandos

Nachdem ich Ihnen im vorigen Abschnitt recht ausführlich den Virtual Machine Manager als wichtigsten Vertreter der libvirt-Werkzeuge präsentiert habe, folgen in diesem Abschnitt einige Kommandos, deren Nutzung keine grafische Benutzeroberfläche voraussetzt.

virsh

Mit dem Kommando virsh starten Sie die libvirt-Shell. Darin können Sie Kommandos zur Verwaltung aller virtuellen Maschinen ausführen, die libvirt bekannt sind.

root# virsh virsh# list --all Id Name Status ---------------------------------------------------- 9 ubuntu laufend 13 fedora laufend 15 win10 laufend 16 userver1510 laufend - centos ausschalten virsh# start centos Domain centos gestartet virsh# exit

Mit der virsh können Sie virtuelle Maschinen mit start, suspend/resume, shutdown, destroy, save/restore bzw. undefine starten, vorübergehend anhalten und wieder fortsetzen, geordnet herunterfahren (ACPI Shutdown), sofort ausschalten, speichern und wieder fortsetzen oder aus der Liste der libvirt-Definitionen löschen.

edit ermöglicht es, die XML-Datei mit der Beschreibung der virtuellen Maschine direkt in einem Editor zu bearbeiten. Als Editor kommt üblicherweise vi zum Einsatz. Wenn Sie mit einem anderen Editor arbeiten möchten, müssen Sie die Umgebungsvariable EDITOR entsprechend einstellen.

Bei allen oben aufgezählten virsh-Kommandos müssen Sie den Namen der virtuellen Maschine, deren UUID-Nummer oder bei laufenden virtuellen Maschinen die ID-Nummer angeben. Die UUID-Nummer geht aus der XML-Definitionsdatei hervor. Auskunft über die ID-Nummern laufender virtueller Maschinen gibt das virsh-Kommando list.

Sofern virsh erkennt, dass der Rechner ein KVM-Host ist, stellt es nach Möglichkeit eine Verbindung zu dem auf Systemebene laufenden Dämon libvirtd her. Wenn virsh nur mit Benutzerrechten ausgeführt wird, erfordert eine Verbindung auf Systemebene unter Ubuntu die Zugehörigkeit zur Gruppe libvirtd. Unter CentOS, Fedora und RHEL müssen Sie das Kommando als root starten, wenn Sie auf Systemebene arbeiten möchten.

Es ist möglich, innerhalb der virsh-Shell die Verbindung mit dem Kommando connect zu verändern: qemu:///session bezeichnet dabei eine Verbindung auf Benutzerebene, qemu:///system eine Verbindung auf Systemebene.

virsh# connect qemu:///system

Via SSH können Sie auch eine Verbindung zum Dämon libvirtd auf einem anderen Rechner herstellen. Wenn es sich beim KVM-Host um einen RHEL- oder Fedora-Rechner handelt, müssen Sie als Benutzername root angeben, weil auf diesen Systemen nur root eine Verbindung zum libvirt-Systemdämon herstellen darf. Beachten Sie, dass nach qemu+ssh: nur zwei Schrägstriche folgen, nicht drei! Wenn auf dem KVM-Host aus Sicherheitsgründen ein root-Login mit Passwortangabe via SSH unmöglich ist, müssen Sie vor dem ersten Verbindungsaufbau Ihren öffentlichen SSH-Schlüssel auf dem KVM-Host einrichten.

virsh# connect qemu qemu+ssh://user@hostname/system user@hostname's password: *******

Anstatt virsh interaktiv zu verwenden, können Sie ein einzelnes virsh-Kommando in der Form virsh kommando ausführen:

root# virsh list --all ...

Wenn Sie dabei nicht die von virsh standardmäßig vorgesehene Verbindung verwenden möchten, geben Sie die Verbindungszeichenkette mit der Option -c an:

root# virsh -c qemu:///session list --all ...

Zum Abschluss stelle ich Ihnen einige ausgewählte virsh-Kommandos vor. man virsh dokumentiert mindestens hundert weitere Kommandos. Innerhalb der Shell erhalten Sie mit help name eine ausführliche Beschreibung des jeweiligen Kommandos.

virt-clone

Das Einrichten einer neuen virtuellen Maschine nimmt normalerweise geraume Zeit in Anspruch. Wenn Sie eine virtuelle Maschine wünschen, die im Wesentlichen dieselben Eckdaten wie eine bereits vorhandene virtuelle Maschine hat, ist es wesentlich schneller, diese einfach zu kopieren bzw. zu »klonen«. Dabei hilft das Kommando virt-clone: Standardmäßig erzeugt es eine neue XML-Definitionsdatei, kopiert die Image-Datei für die virtuelle Festplatte und gibt dem Netzwerkadapter eine neue, zufällige MAC-Adresse. Die restlichen Hardware-Komponenten bleiben unverändert. Die virtuelle Maschine muss vor dem Kopieren heruntergefahren werden.

Das folgende Kommando kopiert eine Ubuntu-Server-Installation. Die neue virtuelle Maschine erhält den Namen userver6, die neue Image-Datei wird in der Datei /var/lib/libvirt/images/userver6.img gespeichert. Achten Sie darauf, die neue Image-Datei in einem libvirt-Speicherpool anzulegen: So verhindern die SELinux-Regeln unter RHEL/Fedora die Ausführung der virtuellen Maschine.

root# virt-clone --original userver5 --name userver6 \ --file /var/lib/libvirt/images/userver6.img

Nach dem Kopieren müssen Sie in der virtuellen Maschine diverse Anpassungen vornehmen. Beispielsweise müssen Sie die Netzwerkkonfiguration ändern, damit es keine IP-Adresskonflikte gibt. Je nach Konfiguration ist es erforderlich, auch die Dateien /etc/hosts und /etc/hostname zu aktualisieren. Wenn es in der ursprünglichen virtuellen Maschine einen SSH-Server gab, sollten Sie in der virtuellen Maschine unbedingt einen neuen SSH-Schlüssel erzeugen:

root# service ssh stop (Debian/Ubuntu) root# rm /etc/ssh/ssh_host_* root# dpkg-reconfigure openssh-server root# service sshd stop (CentOS/Fedora/RHEL) root# rm /etc/ssh/ssh_host_* root# service sshd start

virt-viewer

virt-viewer aus dem gleichnamigen Paket ist ein VNC- und Spice-Client zur Darstellung des Bildschirminhalts sowie zur Kommunikation mit einer virtuellen Maschine. virt-viewer vm-name stellt die Verbindung zu einer laufenden virtuellen Maschine her. Das setzt voraus, dass die virtuelle Maschine VNC oder Spice nutzt.

root# virt-viewer vm-name

Wenn Sie virt-viewer ohne root-Rechte ausführen, aber die Verbindung zu einer auf Systemebene laufenden virtuellen Maschine herstellen möchten, geben Sie die Verbindungszeichenkette mit der Option -c an:

user$ virt-viewer -c qemu:///system vm-name

Sofern die virtuelle Maschine VNC zur Weitergabe des virtuellen Grafiksystems nutzt, können Sie statt virt-viewer jeden beliebigen anderen VNC-Client einsetzen. Der einzige Unterschied besteht darin, dass Sie zuerst mit dem virsh-Kommando vncdisplay die Verbindungsdaten ermitteln müssen.

Um virtuelle Maschinen von Windows aus zu steuern, können Sie virt-viewer von der folgenden Seite auch als Windows-Programm herunterladen:

http://www.spice-space.org/download.html

virt-top

Das Kommando virt-top aus dem gleichnamigen Paket liefert ähnlich wie top eine Auflistung aller virtuellen Maschinen. Zu jeder virtuellen Maschine werden deren Speicher- und CPU-Bedarf sowie diverse andere Parameter angezeigt.

user$ virt-top virt-top 10:41:40 - x86_64 4/4CPU 1600MHz 15860MB 0,6% 6 domains, 2 active, 2 running, 0 sleeping, 0 paused, 4 inactive D:0 O:0 X:0 CPU: 25,0% Mem: 2048 MB (2048 MB von Gast) ID S RDRQ WRRQ RXBY TXBY %CPU %MEM TIME NAME 15 R 0 0 0 0 24,8 6,0 0:07.57 ubuntu 13 R 0 0 104 0 0,2 6,0 1:24.07 centos - (debian) - (windows)