KVM
Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:
Ubuntu 20.04 Focal Fossa
Du möchtest den Artikel für eine weitere Ubuntu-Version testen? Mitarbeit im Wiki ist immer willkommen! Dazu sind die Hinweise zum Testen von Artikeln zu beachten.
Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:
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
qemu-kvm
Befehl zum Installieren der Pakete:
sudo apt-get install qemu-kvm
Oder mit apturl 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, zB. mit dem Befehl id
. 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
Links¶
AQEMU - grafische Oberfläche für QEMU/KVM
QEMU - Grundlagen von QEMU
KVM-Eintrag 🇬🇧 im englischen Ubuntu-Community-Wiki mit vielen zusätzlichen Tipps und Infos
KVM im englischen Ubuntu-Wiki, recht kurzer Eintrag
Einführungsvortrag über QEMU und KVM 🇩🇪 Youtube-Video von der Ubucon 2011
Multiheaded NVIDIA Gaming using Ubuntu 14.04+KVM 🇬🇧 - Beispiel wie man eine oder mehrere Grafikkarten an ein virtuelle Maschine durchschleift