KVM

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:

Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:

  1. Installation von Programmen

  2. Ein Terminal öffnen

  3. Umgang mit Kernelmodulen

  4. Gruppenverwaltung

Inhaltsverzeichnis
  1. Voraussetzung
  2. Installation
  3. Benutzung
  4. Unterstützte Gastsysteme
  5. Management Tools/Clients
  6. Links

kvmbanner-logo2.png KVM 🇬🇧, Kernel-based Virtual Machine ist eine Virtualisierungstechnik für Linux auf x86-Hardware. Sie wurde im Oktober 2006 der Öffentlichkeit vorgestellt. Seit der Version 2.6.20 des Linux-Kernels ist das Kernelmodul von KVM bereits in Linux enthalten. Entwickelt wird KVM von dem israelischen Unternehmen Qumranet 🇬🇧. Das Unternehmen wurde im September 2008 vom amerikanischen Linux-Distributor Red Hat 🇬🇧 übernommen. Seit Ubuntu 8.04 ist KVM die offiziell unterstützte (und im Serverbereich bevorzugte) Virtualisierungslösung von Ubuntu.

Hinweis:

Ein Vorteil von KVM ist, dass die Gastsysteme fast mit nativer Geschwindigkeit laufen, d.h. das Gastsystem reagiert nahezu so schnell wie ein natives System.

Voraussetzung

Um KVM unter Ubuntu zu nutzen, ist es zwingend erforderlich, dass man einen Prozessor hat, der Hardwarevirtualisierung direkt unterstützt. Dies kann man herausfinden, indem man cat /proc/cpuinfo in der Konsole eingibt. Ist dort unter flags entweder der Eintrag vmx oder svm vorhanden, beherrscht der Prozessor diese Technik. Dies erledigt auch der folgende Befehl [3]:

grep -E '^flags.*\b(vmx|svm)\b' /proc/cpuinfo 

Alternativ kann man natürlich auch in das Datenblatt für den Prozessor schauen; eine (nicht zwingend aktuelle) Übersicht findet man auch bei Wikipedia für Intel-Prozessoren und AMD-Prozessoren.

Unterstützt der Prozessor Hardwarevirtualisierung, so werden in der Regel die beiden benötigten Kernel-Module beim Start des Systems automatisch geladen. Dies kann man mit folgendem Befehl prüfen [2]:

lsmod | grep kvm 

Die Ausgabe sollte dann ungefähr so aussehen:

## für Intel-Prozessoren
# Module    Size   Used by
kvm_intel   86016  16
kvm        598016  1 kvm_intel

## für AMD-Prozessoren
# Module    Size   Used by
kvm_amd     86016  16
kvm        598016  1 kvm_amd

Ist KVM nicht geladen, steht da etwas wie:

kvm        598016  0

Sollten die Module nicht geladen sein, kann man sie mit den folgenden Befehlen laden:

## für Intel-Prozessoren
sudo modprobe kvm
sudo modprobe kvm_intel

## für AMD-Prozessoren
sudo modprobe kvm
sudo modprobe kvm_amd

Sollten dabei Fehler auftreten, dann liefert

dmesg | grep kvm 

meist die Fehlerursache.

Hinweis:

Bei manchen Rechnern ist die Hardwarevirtualisierung im BIOS deaktiviert. Diese muss dann natürlich erst aktiviert werden, damit man KVM nutzen kann.

Installation

Für die Emulation von x86-Maschinen (32 und 64 bit) muss nur das Paket

Paketliste zum Kopieren:

sudo apt-get install qemu-kvm 

Oder mit apturl die Pakete installieren. Link: apt://qemu-kvm

installiert werden. Dies installiert auch das Paket qemu-system-x86 und weitere Abhängigkeiten automatisch.

Falls man andere CPU-Architekturen als x86 emulieren möchte, benötigt man zusätzlich das Paket qemu-system.

Nach der Installation der Pakete sollte überprüft werden, ob man selber Mitglied in der Gruppe kvm ist. Wenn nicht, muss man sich dieser Gruppe hinzufügen [4]:

sudo adduser $USER kvm 

Die Änderung der Gruppenzugehörigkeit wird erst nach einem Neustart wirksam.

Benutzung

KVM an sich stellt "nur" die direkte Schnittstelle zum Linux-Kernel zur Verfügung, als Virtualisierungsumgebung kommt QEMU zum Einsatz. Lediglich der Aufruf erfolgt nicht mit qemu, sondern stattdessen mit kvm, also würde z.B. [2]

kvm -hda /home/otto/virtuelle_laufwerke/ubuntu.img -cdrom /dev/cdrom -m 384 -boot c 

eine virtuelle Maschine aus dem Image ubuntu.img booten, zusätzlich das CD-ROM Laufwerk einbinden und der virtuellen Maschine 384 MB RAM zur Verfügung stellen.

Weiteres Beispiel, Booten von einer ISO Datei ohne Festplatte:

kvm -cdrom lubuntu-16.04-desktop-amd64.iso -m 512 -boot d 

Alle Parameter und Optionen von KVM sind identisch mit denen von QEMU, daher sei an dieser Stelle auf den QEMU-Artikel verwiesen. KVM ist nur ein Script, das QEMU aufruft mit dem Parameter -enable-kvm.

Unterstützte Gastsysteme

Eine umfangreiche Übersicht über mögliche Gastsysteme findet man auf dieser Seite 🇬🇧 im KVM-Wiki. Demnach sollten aber die meisten produktiv eingesetzten Betriebssysteme funktionieren (Zitat von der Wikiseite: „Qemu/kvm will likely run most production operating systems“).

Management Tools/Clients

virsh ist eine Konsolenanwendung, die auf libvirt basiert. Sie eignet sich für die skriptbasierte Administration von KVM-VMs