Open Source im professionellen Einsatz
Linux-Magazin 12/2011
© kay_1, photocase.com

© kay_1, photocase.com

Virtuelle Maschinen fernsteuern mit Virsh

Herr im Maschinenraum

Wer mit der Bibliothek Libvirt seine virtuellen Maschinen jongliert, findet das kleine Kommandozeilen-Werkzeug virsh auf der Festplatte. Es fragt blitzschnell die virtuelle Maschine nach ihrem Befinden, startet sie oder fährt sie herunter. Bequem sind diese Tasks in Skripte einzubinden.

746

Das Libvirt-Projekt hat es sich zum Ziel gesetzt, eine einheitliche Verwaltungszentrale für unterschiedliche Virtualisierungslösungen und Hypervisoren zu schaffen [1]. In der Praxis kennen es viele Administratoren nur als die bunte Oberfläche »virt-manager« , die virtuelle Maschinen mit Qemu/KVM verwaltet. Dabei gehört der »virt-manager« gar nicht zum Libvirt-Projekt. Letzteres liefert nur eine Handvoll Kommandozeilen-Programme aus. Darunter befindet sich auch das zu Unrecht übersehene, in vielen Lebenslagen äußerst nützliche »virsh« .

Bauhaus

Wie alle anderen Libvirt-Werkzeuge, basiert »virsh« auf der Libvirt-Bibliothek. Die bildet wiederum die Schnittstelle zum »libvirtd« -Daemon. Er läuft auf dem Rechner mit den virtuellen Maschinen, dem so genannten Knoten (Node), und übernimmt die eigentliche Steuerung der Hypervisoren. Libvirtd ist somit gewissermaßen der verlängerte Arm des Admin. Das Zusammenspiel verdeutlicht Abbildung 1.

Abbildung 1: Virsh leitet die Befehle an die übrigen Komponenten des Libvirt-Pakets weiter.

Nach der Installation von »libvirt« lässt sich »virsh« sofort nutzen – normalerweise. Viele Distributionen lagern Libvirt-Tools in ein eigenes Paket aus. Dazu gehören Debian und Ubuntu, bei denen der Admin »virsh« unter Umständen erst über das Paket »libvirt-bin« hinzuholen muss. Unter Open Suse heißt das Pendant »libvirt-client« .

Ob das so auf der Platte angekommene Progrämmchen einsatzfähig ist, prüft die Eingabe von »virsh version« . Gibt es eine Fehlermeldung, sollte der Nutzer sich Rootrechte beschaffen und sein Glück erneut probieren. Fabuliert »virsh« etwas von einem Verbindungsfehler, gilt es, noch den Libvirtd-Daemon zu aktivieren. Die meisten Distributionen starten ihn zwar automatisch mit der Installation der Libvirt-Pakete. Manchmal ist aber Handarbeit gefragt, unter Open Suse 11.3 per »rclibvirtd start« . Nun sollte »virsh version« aber brav die Versionsnummern der beteiligten Komponenten ausspucken und auf weitere Befehle warten.

URIg

Einen Überblick über die gerade laufenden virtuellen Maschinen verschafft die Eingabe der Zeile:

virsh -c qemu:///system list --all

Sie verbindet Virsh (»-c« für Connect) mit Qemu auf dem aktuellen System und »list« -et alle vorhandenen virtuellen Maschinen auf, darunter die laufenden und die pausierten (»--all« ). Das kryptische »qemu:///system« ist ein Uniform Resource Identifier (URI), der »virsh« die genutzte Virtualisierungslösung mitteilt. Im Beispiel ist dies Qemu/KVM. Tabelle 1 zeigt weitere mögliche URIs. Libvirt und somit auch »virsh« steuern prinzipiell die virtuellen Maschinen von Qemu/KVM, Xen, LXC, Open VZ, Virtualbox, Microsoft Hyper-V sowie VMware ESX, GSX, Workstation und Player.

Dies setzt aber voraus, dass Libvirt mit entsprechender Unterstützung übersetzt wurde (oder die entsprechenden Treiber vorhanden sind). In den Libvirt-Paketen der Distributionen schlummern häufig nur Fassungen, die mit Qemu/KVM umgehen können. Die folgenden Beispiele beschränken sich auf diese Virtualisierungslösung.

Sofern die virtuellen Maschinen auf einem entfernten Rechner vor sich hin werkeln, integriert der Administrator noch die IP-Adresse beziehungsweise den Domainnamen in den URI. Der Befehl

virsh -c qemu://example.com/systemlist --all

gibt eine Liste aller auf dem Rechner »example.com« laufenden virtuellen Maschinen aus. Falls nötig, gibt der Admin noch die Verbindungsart an:

virsh -c qemu+ssh://admin example.com/↩
system list --all

In diesem Beispiel verbindet sich »virsh« mit dem Rechner »example.com« und mit dem Benutzer »admin« über eine gesicherte SSH-Verbindung. Weitere Beispiele zum Aufbau der URIs zeigt [2].

Alles Top!

Virsh ergänzt auch noch das in der Regel über den Paketmanager separat zu installierende »virt-top« [4]. Es zeigt die Lastverteilung aller gerade laufenden virtuellen Maschinen an (Abbildung 3), für Qemu/KVM beispielsweise mit:

virt-top -c qemu:///system

»virt-top« funktioniert ähnlich wie das bekannte »top« , lässt sich also auch per [q]-Taste beenden.

Um Tipparbeit zu sparen, legt man den URI in der Umgebungsvariablen »VIRSH _DEFAULT_CONNECT_URI« ab und braucht ihn künftig beim Aufruf von »virsh« nicht mehr:

export VIRSH_DEFAULT_CONNECT_URI↩
=qemu:///system
virsh list --all

Konkretere Informationen zur virtuellen Maschine »debian« liefert:

virsh -c qemu:///system dominfo debian

Den aktuellen Zustand des Gastrechners zeigt

virsh -c qemu:///system nodeinfo

dem Admin an (siehe Abbildung 2).

Abbildung 2: Auf diesem Rechner laufen zwei virtuelle Maschinen, die mit dem Namen debian[UCC:x00-fake-italic] nutzt nur eine CPU, obwohl der echte Prozessor ihr mehr abgeben könnte. Die Informationen landen in der Standardausgabe und lassen sich dann etwa mit Grep auseinandernehmen.

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 3 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

Linux-Magazin kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ähnliche Artikel

  • Virt-Manager

    In der aktuellen Entwicklerversion kann der Virtual Machine Manager (Virt-Manager) endlich seine virtuellen Maschinen einfrieren und als so genannten Snapshot abspeichern. Das klappt auf zwei verschiedene Arten, die aber ihre Vor- und Nachteile haben. Mit der Kommandozeile gelingt das sicherer.

  • Senkrechtstarter

    Dank Libvirt-Toolkit wildert KVM auch unter den Gäste-Images der Mitbewerber. Der Newcomer KVM, überhaupt erst seit 2007 am Start, ist den etablierten Mitbewerbern wie VMware und Xen technologisch inzwischen dicht auf den Fersen.

  • Archipel

    Das Hypervisor-übergreifende Management-Tool Archipel landet ein schickes GUI an und kommunziert mit den virtuellen Instanzen, die Server mit Xen, KVM, Open VZ und VMware bereitstellen. Dazu nutzt es das Jabber-Protokoll und erweist sich als ausgesprochen unterhaltsam.

  • Virt-Manager in Version 1.4

    Virt-Manager ist eine grafische Oberfläche für Qemu und jetzt in Version 1.4 erschienen. Dank Spice und Virgil kann der Host-Nutzer nun auch erste Open-GL-Möglichkeiten der VMs abrufen.

  • KVM-Security

    Virtualisierung isoliert systembedingt seine VMs wesentlich wirksamer als ein Containerhost seine Gäste. Allerdings bergen Implementierungsschwächen im Hypervisor und Konfigurationsfehler das Restrisiko von folgenreichen Ausbrüchen – hier erklärt am Beispiel von KVM.

comments powered by Disqus

Ausgabe 10/2017

Digitale Ausgabe: Preis € 6,40
(inkl. 19% MwSt.)

Artikelserien und interessante Workshops aus dem Magazin können Sie hier als Bundle erwerben.