qemu, kvm, xen & libvirtHauptseite | Über | Hilfe | FAQ | Spezialseiten | Anmelden

Druckversion | Impressum | Datenschutz

Installation libvirt, virsh, Virtual Machine Manager, virsh console, virt-manager

(Link zu dieser Seite als [[QEMU-KVM-Buch/ Managementtools/ libvirt-Tools/ Installation]])

<<<|###| >>> | English


Inhaltsverzeichnis

[bearbeiten] Installation der Bibliothek libvirt

[bearbeiten] Als Paket

Ab Ubuntu 8.10 gibt es das Meta-Paket ubuntu-virt-server. Es beinhaltet kvm, libvirt-bin und openssh-server. Dieses Meta-Paket wird installiert, wenn man bei der Installation von Ubuntu den Virtualization Host auswählt (tasksel).

Host ~$ sudo apt-get install ubuntu-virt-server ubuntu-virt-mgmt

Stehen diese Meta-Pakete nicht zur Verfügung beziehungsweise benötigt man nur das Paket libvirt-bin, ist folgende Befehlszeile einzugeben.

Host ~$ sudo apt-get install libvirt-bin

[bearbeiten] Quellen kompilieren

Liegt libvirt nicht als aktuelles Paket vor, kompiliert man es aus den Quellen. Dazu sind diese Pakete notwendig:

Host ~$ sudo apt-get install libxml2-dev libdevmapper-dev
Host ~$ sudo apt-get install libgnutls-dev libxml++2.6-dev
Host ~$ sudo apt-get install libssh2-1-dev gettext autoconf
Host ~$ sudo apt-get install libtool git-core checkinstall
Host ~$ sudo apt-get install libnl-dev python-dev libyajl-dev

Für den Daemon libvirtd ist eine gleichnamige Gruppe notwendig. Für den QEMU-Treiber ist der Benutzer QEMU anzulegen. Weiterhin ist der aktuelle Benutzer in die Gruppe libvirtd aufzunehmen.

Host ~$ sudo groupadd libvirtd
Host ~$ sudo useradd -g libvirtd qemu
Host ~$ sudo adduser `id -un` libvirtd

Man muss sich anschließend ab- und wieder anmelden. Wenn danach die Zugriffsrechte immer noch nicht stimmen, hilft ein Reboot. Getestet wird die eigene Gruppenzugehörigkeit mit dem Befehl groups.

Host ~$ groups
... libvirtd

Es werden die Quellpakete für libvirt heruntergeladen, entpackt und kompiliert. Das Skript autogen.sh ruft das Skript configure auf. Mögliche Optionen werden mit dem Befehl ./configure --help angezeigt. Diese Optionen werden an das Skript autogen.sh angefügt. Weitere Informationen findet man in der Datei INSTALL.

Host ~$ mkdir -p ~/source
Host ~$ cd ~/source
Host ~$ wget http://libvirt.org/sources/libvirt-1.0.2.tar.gz
Host ~$ tar xzvf libvirt-1.0.2.tar.gz
Host ~$ cd libvirt-1.0.2
Host ~$ ./autogen.sh --with-qemu-user=qemu --with-qemu-group=libvirtd
Host ~$ sudo make

Zu empfehlen ist das Generieren eines Softwarepaketes mit checkinstall. Es wird statt make install aufgerufen. Eine Hilfestellung erhält man mit checkinstall --help. Das Programm checkinstall stellt einige Fragen, die meist mit den Default-Vorgaben beantwortet werden können. Eindeutig ist der Paket-Name vorzugeben, zum Beispiel libvirt-self-compiled. Im aktuellen Verzeichnis wird das Paket angelegt und installiert. Unter Debian/Ubuntu listet es der Befehl dpkg -l auf und mit dpkg -r deinstalliert man es bei Bedarf.

Host ~$ sudo checkinstall --fstrans=no --pkgname=libvirt-self-compiled
Das Paket wird entsprechend dieser Vorgaben erstellt:
0 -  Maintainer: [ root@knut ]
1 -  Summary: [ libvirt-self-compiled ]
2 -  Name:    [ libvirt-self-compiled ]

Alternativ kann man auch die Software mit make install installieren.

Host ~$ sudo make install

Es ist die Liste der installierten Shared Libraries zu aktualisieren.

Host ~$ sudo ldconfig

Die kompilierte Library wird im Verzeichnis /usr/local/lib abgelegt. Getestet wird die Installation mit folgenden Befehl.

Host ~$ virsh version
        Kompiliert gegen die Bibliothek: libvir 1.0.2
        Verwende Bibliothek: libvir 1.0.2
        Verwende API: QEMU 1.0
        Laufender Hypervisor: QEMU 1.2.1

Der QEMU-Treiber von libvirt sucht in dem Verzeichnis /usr/bin nach den QEMU-Binaries qemu und qemu-system-*. Der KVM-Treiber überprüft zusätzlich das Device /dev/kvm. Das Ergebnis wird mit dem folgenden Befehl im XML-Format ausgegeben.

Host ~$ virsh capabilities

Liegen die QEMU-Binaries in einem anderen Verzeichnis, ist eine Anpassung mit Links möglich. In diesem Beispiel befinden sich die Binaries im Verzeichnis /usr/local/bin/

Host ~$ sudo ln -sf /usr/local/bin/qemu /usr/bin/qemu

[bearbeiten] Installation der Managementtools

Die Managementtools müssen nicht unbedingt auf den Host mit dem Hypervisor installiert sein.

[bearbeiten] Als Software-Pakete

Für die Managementtools gibt es das Meta-Paket ubuntu-virt-mgmt mit den Managementtools python-vm-builder, virt-manager und virt-viewer. Die Tools können auch einzeln installiert werden. Die Tools virt-install und virt-clone sind im Paket python-virtinst enthalten. Für die GUI virt-manager (http://virt-manager.org) sind die Pakete virt-manager und virt-viewer zu installieren. Die Installation von virt-top erfolgt mit dem gleichnamigen Paket.

Host ~$ sudo apt-get install python-virtinst virt-manager 
Host ~$ sudo apt-get install virt-viewer virt-top

Für das Python-Skript vmbuilder benötigt man das Paket python-vm-builder.

Host ~$ sudo apt-get install python-vm-builder

Eine Sammlung von Tools für libvirt beinhaltet das Paket virt-goodies (https://launchpad.net/virt-goodies).

Host ~$ sudo apt-get install virt-goodies

[bearbeiten] Quellen kompilieren

Liegen diese Tools nicht als aktuelle Pakete vor, werden sie kompiliert. Für das Kompilieren der Managementtools werden zusätzlich folgende Pakete benötigt.

Host ~$ sudo apt-get install intltool rarian-compat 
Host ~$ sudo apt-get install python-libvirt python-gtk2 
Host ~$ sudo apt-get install python-glade2 python-dbus python-gconf 
Host ~$ sudo apt-get install python-libxml2 python-urlgrabber 
Host ~$ sudo apt-get install dbus-x11 python-gtk-vnc python-vte 
Host ~$ sudo apt-get install libgtk-vnc-1.0-dev gawk 
Host ~$ sudo apt-get install checkinstall libglade2-dev
Host ~$ sudo apt-get install python-rsvg

Die Tools virt-viewer, virtinst und virt-manager werden von der Website http://virt-manager.org heruntergeladen, entpackt, kompiliert und installiert.

Host ~$ mkdir -p ~/source
Host ~$ cd ~/source
Host ~$ wget http://virt-manager.org/download/sources/virt-viewer/virt-viewer-0.2.0.tar.gz
Host ~$ tar xzvf virt-viewer-*.tar.gz
Host ~$ cd virt-viewer-*
Host ~$ ./configure 
Host ~$ make
Host ~$ sudo checkinstall --fstrans=no
Das Paket wird entsprechend dieser Vorgaben erstellt:
0 -  Maintainer: [ root@knut ]
1 -  Summary: [ virt-viewer-self-compiled ]
2 -  Name:    [ virt-viewer-self-compiled ]
Host ~$ cd ~/source
Host ~$ wget http://virt-manager.org/download/sources/virtinst/virtinst-0.500.4.tar.gz
Host ~$ tar xzvf virtinst-*.tar.gz
Host ~$ cd virtinst-*
Host ~$ sudo python setup.py install
Host ~$ sudo python setup.py sdist
Host ~$ sudo python setup.py refresh_translations
Host ~$ cd ~/source
Host ~$ wget http://virt-manager.org/download/sources/virt-manager/virt-manager-0.8.5.tar.gz
Host ~$ tar xzvf virt-manager-*.tar.gz
Host ~$ cd virt-manager-*
Host ~$ ./configure && make
Host ~$ sudo checkinstall --fstrans=no
Das Paket wird entsprechend dieser Vorgaben erstellt:
0 -  Maintainer: [ root@knut ]
1 -  Summary: [ virt-manager-self-compiled ]
2 -  Name:    [ virt-manager-self-compiled ]

[bearbeiten] Konfiguration

[bearbeiten] Zugriffsrechte

Das Paket libvirt-bin enthält das Managementtool virsh. Als ersten Test wird eine Verbindung zu dem Dummy-Hypervisor hergestellt. Der Befehl list listet laufende virtuelle Maschinen auf. Der Dummy-Hyperviser zeigt per Default eine fiktive virtuelle Maschine an.

Host ~$ virsh -c test:///default list
Id Name                 Status
----------------------------------
 1 test                 laufend

Im nächsten Schritt ist die qemu:///session zu testen.

Host ~$ virsh -c qemu:///session list
Id Name                 Status
----------------------------------

Bei Verwendung des Verbindungstyps system erscheint eine Fehlermeldung, wenn entsprechende Rechte fehlen.

Host ~$ virsh -c qemu:///system list
libvir: Remote Fehler : Permission denied
Fehler: Verbindung zum Hypervisor scheiterte

Zuerst ist zu prüfen, ob der Deamon libvirtd läuft.

Host ~$ ps aux | grep libvirt[d]

Erfolgt keine Ausgabe, ist zum Test der Deamon manuell auf einer anderen Konsole zu starten. Die Option -v generiert ausführliche Ausgaben.

Host ~$ sudo /usr/local/sbin/libvirtd -v

Da der Verbindungstyp system privilegierte Rechte benötigt, wird zum Test sudo eingesetzt.

Host ~$ sudo virsh -c qemu:///system list
Id Name                 Status
----------------------------------

Mit dem Start von libvirtd wurde zwar auch der QEMU-Treiber gestartet, die Zugriffsrechte für den Socket erlauben aber keine Verwendung durch andere Benutzer.

Host ~$ ls -l /usr/local/var/run/libvirt/libvirt-sock
srwx------ 1 root root 0 2010-01-27 17:39 /usr/local/var/run/libvirt/libvirt-sock

Der manuell gestartete Deamon ist mit [Strg]+[C] zu beenden. Die Zugriffsrechte sind durch Anpassen der Dateien libvirtd.conf und qemu.conf zu ändern. Wurde libvirt ohne die Option --prefix= kompiliert, liegen diese Dateien im Verzeichnis /usr/local/etc/libvirt/. Vor dem Editieren sind Sicherungskopien anzulegen.

Host ~$ sudo cp /usr/local/etc/libvirt/libvirtd.conf \
/usr/local/etc/libvirt/libvirtd.conf.bak
Host ~$ sudo cp /usr/local/etc/libvirt/qemu.conf \
/usr/local/etc/libvirt/qemu.conf.bak 

Diese Konfiguration ist für die ersten Tests gedacht. Eine weitere Anpassung ist mit den gut dokumentierten Konfigurationsdateien vorzunehmen. Dies gilt besonders für die Verbesserung der Sicherheit. Die Datei libvirtd.conf wird wie folgt angepasst:

# libvirtd.conf
unix_sock_group = "libvirtd"
unix_sock_ro_perms = "0777"
unix_sock_rw_perms = "0770"
unix_sock_dir = "/usr/local/var/run/libvirt/"

Die Konfigurationsdatei für den QEMU-Treiber qemu.conf erhält diesen Inhalt:

# qemu.conf
user = "qemu"
group = "libvirtd"

Die Eigentumsverhältnisse dieser Verzeichnisse sind anzupassen.

Host ~$ sudo chown -R qemu.libvirtd /usr/local/var/run/libvirt/qemu
Host ~$ sudo chown -R qemu.libvirtd /usr/local/var/lib/libvirt/qemu
Host ~$ sudo chown -R qemu.libvirtd /usr/local/var/cache/libvirt/qemu

Auf der zweiten Konsole startet man wieder libvirtd.

Host ~$ sudo /usr/local/sbin/libvirtd -v

Die Verbindung mit qemu:///system ist nun ohne sudo erfolgreich.

Host ~$ virsh -c qemu:///system list
Connecting to uri: qemu:///system
Id Name                 Status
----------------------------------

Zum automatischen Starten von libvirtd nach einem Reboot ist ein entsprechendes Init-Skript notwendig. Beim Kompilieren wird das Init-Skript nur für Red Hat-Distributionen generiert. Man kann zwar den Befehl zum Starten in die Datei /etc/rc.local eintragen, ein sauberes Beenden wird damit nicht erreicht. Unter Ubuntu ist es möglich das Init-Skript /etc/init.d/libvirt-bin aus dem Paket libvirt-bin zu kopieren und anzupassen. Alternativ schreibt man ein eigenes Skript auf Grundlage der Datei /etc/init.d/skeleton.

[bearbeiten] Netzwerk

Eine Art die virtuellen Maschinen zu vernetzen ist das Bridging mit den bridge-utils. Die Installation unter Debian/Ubuntu ist mit folgender Befehlszeile erledigt.

Host ~$ sudo apt-get install bridge-utils

Zur Konfiguration ist der Netzwerkdienst zu stoppen.

Host ~$ sudo invoke-rc.d networking stop

Weiterhin ist zu empfehlen, die Netzwerk-Konfigurationsdatei vor dem Bearbeiten zu sichern.

Host ~$ sudo cp /etc/network/interfaces /etc/network/interfaces-bak

In diesem Beispiel hat das Interface eth0 des Host-System die IP-Adresse 192.168.1.210. Das Gateway hat die IP-Adresse 192.168.1.1. Die Datei /etc/network/interfaces hat bisher folgenden Inhalt:

# /etc/network/interfaces
auto lo
 iface lo inet loopback
auto eth0
 iface eth0 inet static
   address 192.168.1.210
   netmask 255.255.255.0
   gateway 192.168.1.1

Für das Briding ist die Datei /etc/network/interfaces anzupassen. Dabei ist zu beachten, dass das Interface eth0 keine IP-Adresse mehr besitzt. Die ehemalige IP-Adresse von eth0 wird dem Interface br0 zugewiesen.

# /etc/network/interfaces
auto lo
 iface lo inet loopback
auto eth0
 iface eth0 inet manual
auto br0
 iface br0 inet static
      address 192.168.1.210
      network 192.168.1.0
      netmask 255.255.255.0
      broadcast 192.168.1.255
      gateway 192.168.1.1
      bridge_ports eth0
      bridge_fd 9
      bridge_hello 2
      bridge_maxage 12
      bridge_stp off

Anschließend ist der Netzwerkdienst neu zu starten.

Host ~$ sudo /etc/init.d/networking restart

Wenn alles geklappt hat, ist der Rechner wieder unter der alten IP-Adresse erreichbar. Allerdings wird damit nicht das Interface eth0 adressiert, sondern das neu angelegte Interface br0. Zur Kontrolle dient der Befehl ifconfig.

Host ~$ ifconfig
 br0  ... inet Adresse:192.168.1.210 Bcast:192.168.1.255 Maske:255.255.255.0 ...
 eth0 ...
 lo   ...

Ein Neustart der Rechners ist zu empfehlen, um die korrekte Netzwerkkonfiguration nach dem Booten zu testen.

Host ~$ sudo reboot

libvirt verwendet dnsmasq, um Gast-Systemen per DHCP IP-Adressen zuzuweisen. dnsmasq ist ein einfacher DNS- und DHCP-Server für kleine Netzwerke. Die Namen aus dem lokalen Netz werden entsprechend der Datei /etc/hosts aufgelöst. Unbekannte Namensanfragen werden an andere DNS-Server weitergeleitet und im Cache gespeichert. Um dnsmasq unter libvirt zu nutzen, ist in der Datei /etc/resolv.conf des Host-Systems die IP-Adresse 192.168.122.1 als ersten Nameserver einzufügen. Die vorher vorhandenen Einträge für Nameserver sind nicht zu löschen. Mit der Namensauflösung ist es möglich, angelegte virtuelle Maschinen mit ihrem Namen im Netzwerk zu adressieren. Dabei ist jeweils ein Punkt an den Namen anzuhängen.

# /etc/resolv.conf
nameserver 192.168.122.1
nameserver ...


<<<|###| >>>

Von „http://qemu-buch.de/de/index.php?title=QEMU-KVM-Buch/_Managementtools/_libvirt-Tools/_Installation

Diese Seite wurde bisher 35.483 mal abgerufen. Diese Seite wurde zuletzt am 18. Februar 2013 um 06:23 Uhr geändert. Inhalt ist verfügbar unter der GNU Free Documentation License 1.2.


Finden

Blättern

News

Deutsch
Weitersagen
Tipps für Autoren
Autoren
Impressum


English
Recommendation
The Authors
Contact



Letzte Änderungen


Ändern
Seite bearbeiten
Bearbeitungshilfe
Seitenoptionen
Diskussion
Kommentar hinzufügen
Druckversion
Seitendaten
Versionen
Links auf diese Seite
Änderungen an verlinkten Seiten
Meine Seiten
Anmelden
Spezialseiten
Neue Seiten
Dateiliste
Statistik
Kontakt
Mehr …