KVM mit libvirt

15. Juni 2009 at 10:00

Virtualisierungslösungen nutzen meist Config-Files, um die Einstellungen der virtuellen Maschine zu speichern. So läßt sich meist mit einem START und einem STOP Kommando eine virtuelle Maschine starten oder stoppen?

Kürzlich berichtete ich über Kernel-based Virtual Machine (KVM), welches ja per Kommandozeile sehr variabel eingesetzt werden kann, jedoch von Haus aus keine Config-Files kennt.

RedHat brachte mit libvirt hier eine nette Lösung: Eine Virtualisierungs-API.

Mit LibVirt kann kann virtuelle Maschinen in XML-Dateien konfigurieren, die dann mit einem einheitlichen Kommando (virsh) bedient werden. Dabei spielt es übrigens keine Rolle, ob dahinter KVM oder XEN zum Einsatz kommt. Damit ist LibVirt nicht nur für den Produktivbetrieb gut geeignet, sondern auch bei der Umstellung sicherlich schon hilfreich.

Nach der Installation mit ‚apt-get install libvirt-bin‘ ist in /etc/libvirt/qemu die Konfigurationsdatei (servername.xml) anzulegen, die in etwa wie folgt aussieht:

<!-- Manual: http://libvirt.org/formatdomain.html -->
<domain type='kvm'>

<name>servername</name>
<vcpu>1</vcpu>
<memory>2096128</memory>

<os>
<type arch='x86' machine='pc'>hvm</type>
<boot dev='hd' /> <!-- fd, hd, cdrom, network -->
</os>

<devices>
<emulator>/usr/bin/kvm</emulator>

<disk type="file" device="disk">
<source file='/home/kvm/servername.img' />
<target dev='hda' bus='ide' />
</disk>

<disk type="file" device="cdrom">
<source file='/home/kvm/debian-lenny.iso' />
<target dev='hdc' bus='ide' />
</disk>

<interface type='bridge'>
<mac address='00:16:3E:00:00:01'/>
<source bridge='br0' />
<target dev='tap0' />
</interface>

<graphics type='vnc' listen='127.0.0.1' port='5900' keymap='de' />
</devices>

<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>restart</on_crash>

<features>
<acpi/>
</features>

</domain>

Servername, Image-File, MAC-Adresse, Target Interface sowie VNC-Port sollte natürlich je virtueller Maschine anders gesetzt werden. Beim Kopieren aus dem Beispiel oben bitte auch beachten, dass die Quotes ganz normale einfache Quotes (Shift + #) sind. Die Blogsoftware zeigt das falsch an, was bei unbedachtem Copy&Paste zu Fehlern führt!

Eine ausführtliche Anleitung mit genauer Erklärung zu jeder Option im Config-File ist auf der FormatDomain Seite der Projekthomepage unter http://libvirt.org/formatdomain.html zu finden.

Alle im Autostart-Ordner verlinkten Konfigurationsdateien starten beim Systemstart automatisch. Ansonsten ist die Steuerung der virtuellen Maschinen sehr einfach. Hier ein Überblick über die wichtigsten Kommandos:

# Alle Kommandos im Überblick
virsh help

# Liste der laufenden Server
virsh list

# Server starten
virsh start servername

# Server rebooten
virsh reboot servername

# Server stoppen (sauber herunterfahren)
virsh shutdown servername

# Server killen (aus dem Speicher kicken, kein sauberer Shutdown)
virsh destroy servername

Sicherlich gibt es noch viel mehr interessante Askepte an LibVirt, doch ich denke, dieser Artikel gibt erstmal einen Grundüberblick über eine einfache Installation.