KVM Virtualisierungsumgebung unter Debian Wheezy

Dienste direkt auf Servern laufen zu lassen war gestern. Zur besseren Skalierbarkeit eines Rechenzentrums wird in Zukunft immer mehr auf Virtualisierung umgestellt. Die bekanntesten Virtualisierungslösungen stammen von Herstellern wie VMware, Parallels, Citrix, Microsoft etc. Eine bestimmte Open Source Virtualisierungssoftware ist aber besonders interessant: KVM.

KVM steht nicht für KVM-Switches (Keyboard, Video, Mouse), sondern für Kernel-based Virtual Machine. Dies ist ein Linux-Kernel-Modul für die Virtualisierung von Betriebssystemen. Die Software arbeitet dabei mit Hardware-Virtualisierungstechniken von Intel und AMD. Bei der Auswahl des Servers ist also auf die Kompatibilität zu achten. Obwohl glücklicherweise fast alle moderneren Rechner über diese Features verfügen, sollte man dies trotzdem im Hinterkopf behalten.

1. Grundkonfiguration des Host-Systems

Das Host-System für unsere KVM-Installation bildet Debian. In dieser Anleitung möchte ich nicht weiter auf die Grundinstallation eingehen. Eine grafische Oberfläche wird für das Host-System nicht benötigt und nicht empfohlen.

1.1.Voraussetzungen überprüfen

KVM setzt Hardware-Virtualisierung voraus. Mit folgendem Befehl kann getestet werden, ob die CPU dies unterstützt:

$ egrep '(vmx|svm)' --color=always /proc/cpuinfo

Erscheint gar keine Ausgabe, so wird Hardwarevirtualisierung nicht unterstützt!

1.2. Sudo konfigurieren

Damit man nicht als Root alle Arbeiten erledigen muss, kann sudo installiert werden.

$ apt-get install sudo

User als Sudoer hinzufügen:

$ EDITOR=nano visudo

1.3. SSH installieren

$ sudo apt-get install openssh-server

2. KVM installieren und konfigurieren

Als nächster Schritt, installieren wir die für KVM benötigten Pakete:

$ sudp apt-get install kvm qemu-kvm libvirt-bin virtinst

2.1. Benutzer als KVM User definieren

Root und non-root User den KVM gruppen zuordnen:

$ sudo usermod -a -G libvirt,kvm nm
$ sudo usermod -a -G libvirt,kvm root

Damit diese Änderung übernommen wird, muss der aktuell angemeldete User neu eingeloggt werden.

2.2. Installation von KVM testen

Zum Testen der KVM Installation kann per Kommandozeilentool virsh eine Verbindung mit dem Virtualisierungsdienst aufgebaut werden.

$ virsh -c qemu:///system list

3. Netzwerkanbindung für Guestsysteme (Bridge erstellen)

Damit sich später auch die Gastsysteme mit dem Netzwerk Verbinden können, müssen die bridge-utils und eine Bridge konfiguriert sein.

Die bridge-utils lassen sich bequem per Paketmanager installieren:

$ apt-get install bridge-utils

Die Netzwerkkonfiguration des Host-Systems muss wie folgt angepasst werden:

$ sudo nano /etc/network/interfaces

Alte Konfiguration (normalerweise noch für DHCP konfiguriert):

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
#allow-hotplug eth0
#iface eth0 inet dhcp
auto eth0
iface eth0 inet dhcp

Neue Konfiguration (Statische Konfiguration + Bridgeinterface):

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
#allow-hotplug eth0
#iface eth0 inet dhcp
auto eth0
iface eth0 inet manual

auto br0
iface br0 inet static
        address 192.168.0.100
        network 192.168.0.0
        netmask 255.255.255.0
        broadcast 192.168.0.255
        gateway 192.168.0.1
        bridge_ports eth0
        bridge_fd 9
        bridge_hello 2
        bridge_maxage 12
        bridge_stp off

Damit diese Änderung übernommen wird, müssen die Netzwerkdienste neu gestartet werden:

$ sudo service networking stop && sudo service networking start

Die neue Konfiguration kann per Befehl ip addr angezeigt werden.

4. Erste Gast-VM erstellen

4.1. Download eines Installationsimages

Zur vorbereitung kopieren wir das ISO-Image des zu installierenden Betriebssystems nach /var/lib/libvirt/images/. Dieser Ordner beinhaltet auch später die virtuellen Festplatten.

$ sudo wget http://cdimage.debian.org/debian-cd/7.6.0/amd64/iso-cd/debian-7.6.0-amd64-netinst.iso -P /var/lib/libvirt/images/

4.2. Erzeugung der ersten virtuellen Maschine

Der Befehl zur Erstellung einer virtuellen Maschine ist relativ lang und sollte auf die eigenen Bedürfnisse angepasst werden. Weitere Informationen zu diesem Befehl entnimmt man am besten man virt-install.

$ sudo virt-install --connect qemu:///system -n vm01 -r 4096 --vcpus=2 --disk path=/var/lib/libvirt/images/vm01.img,size=12 -c /var/lib/libvirt/images/debian-7.6.0-amd64-netinst.iso --vnc --noautoconsole --os-type linux --os-variant debianwheezy --accelerate --network=bridge:br0 --hvm

Wie die Installation des Gastsystems gestartet wird, folgt in einem nächsten Beitrag.