KVM steht für kernel-based Virtual Machine und basiert auf QEMU von Fabrice Bellard. Damit KVM betrieben werden kann ist eine CPU von Nöten, die Intel VT bzw. AMD-V unterstützt. Sollte die CPU nicht eine dieser beiden Virtualisierungserweiterungen besitzen so ist der Betrieb von KVM nicht möglich.
CPU testen
Intel - grep vmx /proc/cpuinfo
AMD - grep svm /proc/cpuinfo
Voraussetzungen:
Ich gehe von einer frischen Debian 8 Jessie Installation aus, die eine Internetverbindung hat, 16 Gb Ram und 50 Gb Festplattenspeicher. Es werden die Repositories aus dem Internet verwendet.
Die Installation:
Zur Installation von KVM ist folgende Zeile nötig:
Jessie: apt-get -y install qemu-kvm libvirt-bin virtinst bridge-utils
Stretch: apt-get -y install qemu-kvm libvirt-daemon libvirt-daemon-system virtinst bridge-utils
Danach muss das Kernelmodul geladen werden:
modprobe vhost_net
Die Konfiguration:
Die Konfiguration eines Bridge-Devices über das die VMs mit dem Netzwerk kommunizieren sollen muss in der Konfigurationsdatei für die Netzwerkschnittstellen gemacht werden. Dabei wird die Konfiguration für das Device eth0 auskommentiert und eine neue für die Bridge (br0) erstellt. Folgende Zeilen werden in die Konfigurationsdatei /etc/network/interfaces eingefügt:
iface br0 inet static
address 10.0.0.30
network 10.0.0.0
netmask 255.255.255.0
broadcast 10.0.0.255
gateway 10.0.0.1
dns-nameservers 10.0.0.30
bridge_ports eth0
bridge_stp off
auto br0
Am einfachsten ist jetzt ein Neustart des Servers, aber man kann auch mit ifdown/ifup arbeiten, um die Devices zu stoppen/starten.
Den User, der letzendlich KVM benutzen soll, sollte man der Gruppe libvirt hinzufügen damit er die nötigen Berechtigungen hat.
Virtuelle Maschine erstellen:
Per Konsole:
Eine VM kann mit einfachen Konsolenbefehlen installiert werden. Der Nachteil dieser Methode ist, dass ttyS0 (serielle Konsole) verwendet wird. Es ist also etwas Nacharbeit fällig.
virt-install \
--name firstVM \
--ram 1024 \
--disk path=/var/lib/libvirt/images/firstVM.qcow2,size=10 \
--vcpu 2 --os-type linux \
--os-variant debian9 \
--network bridge=br0 \
--graphics none \
--console pty,target_type=serial \
--location 'http://ftp.de.debian.org/debian/dists/stretch/main/installer-amd64/' \
--extra-args 'console=ttyS0,115200n8 serial'
apt-get -y install libosinfo-bin libguestfs-tools virt-top
guestmount -d firstVM -i /mnt
ln -s /mnt/lib/systemd/system/getty@.service \
/mnt/etc/systemd/system/getty.target.wants/getty@ttyS0.service
umount /mnt
virsh start firstVM --console
ln -s /lib/systemd/system/getty\@.service /etc/systemd/system/getty.target.wants/getty\@ttyS0.service