[[Vorlage(getestet, bionic, focal, jammy)]] {{{#!vorlage Wissen [:Pakete_installieren: Installation von Programmen] [:Terminal: Ein Terminal öffnen] [:Kernelmodule:Umgang mit Kernelmodulen] [:Benutzer und Gruppen: Gruppenverwaltung] }}} [[Inhaltsverzeichnis(1)]] [[Bild(kvmbanner-logo2.png, 128, align=left)]] [http://kvm.qumranet.com KVM] {en}, Kernel-based Virtual Machine ist eine [:Virtualisierung: 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 [http://www.qumranet.com Qumranet] {en}. Das Unternehmen wurde im September 2008 vom amerikanischen Linux-Distributor [http://www.redhat.com Red Hat] {en} übernommen. Seit Ubuntu 8.04 ist KVM die offiziell unterstützte (und im Serverbereich bevorzugte) Virtualisierungslösung von Ubuntu. {{{#!vorlage 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]: {{{#!vorlage Befehl 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 [wikipedia:Intel_VT:Intel-Prozessoren] und [wikipedia:AMD_Virtualization: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]: {{{#!vorlage Befehl 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 {{{#!vorlage Befehl dmesg | grep kvm }}} meist die Fehlerursache. {{{#!vorlage 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 {{{#!vorlage Paketinstallation 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]: {{{#!vorlage Befehl 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] {{{#!vorlage Befehl 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: {{{#!vorlage Befehl 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: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 [http://www.linux-kvm.org/page/Guest_Support_Status dieser Seite] {en} 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 * [wikipedia:Kernel-based_Virtual_Machine:Wikipedia zu KVM] * [https://help.ubuntu.com/community/KVM KVM-Eintrag] {en} im englischen Ubuntu-Community-Wiki mit vielen zusätzlichen Tipps und Infos * [ubuntu:kvm:KVM] im englischen Ubuntu-Wiki, recht kurzer Eintrag * [http://www.youtube.com/watch?v=2I6P8SN1tmE Einführungsvortrag über QEMU und KVM] {de} Youtube-Video von der Ubucon 2011 * [http://www.pugetsystems.com/labs/articles/Multiheaded-NVIDIA-Gaming-using-Ubuntu-14-04-KVM-585/ Multiheaded NVIDIA Gaming using Ubuntu 14.04+KVM] {en} - Beispiel wie man eine oder mehrere Grafikkarten an ein virtuelle Maschine durchschleift # tag: Emulation und Virtualisierung, KVM, QEMU