KVM Grundlagen: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
 
(23 dazwischenliegende Versionen von 3 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
−
=Name=
+
= KVM Grundlagen =
−
*Kernel-based Virtual Machine
 
−
=Läuft auf=
 
−
*Intel (VT)
 
−
*AMD (AMD-V)
 
−
*System-z-Architektur
 
−
*PowerPC
 
−
*ARM
 
  
−
=Veröffentlicht=
+
== Übersicht ==
−
*Oktober 2006
+
* Kernel-based Virtual Machine (KVM) ist die Virtualisierungslösung im Linux-Kernel.
−
*Kernel 2.6.20
+
* Nutzt Hardware-Virtualisierung (Intel VT-x, AMD-V).
−
=Entwickelt=
+
* Besteht aus Kernelmodulen (<code>kvm.ko</code>, <code>kvm_intel.ko</code> bzw. <code>kvm_amd.ko</code>) und setzt für die Geräteemulation auf QEMU auf.
−
*Israel
+
* Fester Bestandteil des Linux-Kernels seit Version 2.6.20 (Februar 2007).
−
*Avi Kivity
 
−
*Qumranet
 
−
*2008 Red Hat
 
−
=Portierungen=
 
−
*FreeBSD
 
−
*Illumos
 
−
=Besteht aus=
 
−
*kvm.ko
 
−
*kvm-intel.ko  
 
−
*kvm-amd.ko
 
−
=Open Virtualization Alliance (OVA)=
 
−
*Gegründet Mai 2011
 
−
*Virtualisierung und cloudbasierte Lösungen
 
−
*um dies auf dem Markt zu etablieren
 
−
*Mitglieder
 
−
**BMC Software
 
−
**Eucalyptus Systems
 
−
**HP
 
−
**IBM
 
−
**Intel
 
−
**Red Hat
 
−
**SUSE
 
  
−
=KVM=
+
== Webseiten ==
−
*keine Emulation
+
* https://www.linux-kvm.org/page/Main_Page
−
*nur Infrasruktur
+
* https://www.qemu.org/
−
=Qemu=
+
* https://libvirt.org/
−
*virtualisierte Gastsysteme
+
 
−
*Festplatten
+
== Geschichte ==
−
*Netzwerk
+
* Entwickelt von Avi Kivity bei Qumranet in Israel, vorgestellt im Oktober 2006.
−
*Sound
+
* Aufgenommen in Kernel 2.6.20, veröffentlicht im Februar 2007.
−
*Grafikkarten
+
* 2008 Übernahme von Qumranet durch Red Hat, das die Entwicklung seitdem maßgeblich vorantreibt.
−
=Übersicht=
+
* Heute Grundlage vieler Plattformen, z. B. Proxmox VE, OpenStack und großer Cloud-Anbieter.
 +
* Portierungen existieren für FreeBSD und Illumos.
 +
 
 +
== Unterstützte Architekturen ==
 +
* x86-64 mit Intel VT-x oder AMD-V
 +
* ARM64 (AArch64)
 +
* IBM Z (s390x)
 +
* PowerPC
 +
* RISC-V
 +
 
 +
== Architektur von KVM ==
 +
* KVM virtualisiert CPU und Arbeitsspeicher, emuliert aber selbst keine Geräte.
 +
* Die Geräte der VM (Festplatte, Netzwerkkarte, Grafik) emuliert QEMU.
 +
* Jede VM ist ein normaler QEMU-Prozess auf dem Host, den der Kernel wie jeden anderen Prozess einplant.
 +
* KVM + QEMU zusammen ergeben ein vollständiges Virtualisierungssystem.
 +
 
 +
== Übersichtsgrafik ==
 
[[Datei:kvm-101.png|500px]]
 
[[Datei:kvm-101.png|500px]]
−
*Von Shmuel Csaba Otto Traian, CC BY-SA 3.0, https://commons.wikimedia.org/w/index.php?curid=29448779
+
''KVM Architektur: KVM übernimmt CPU/RAM Virtualisierung, QEMU emuliert Geräte.''
 +
 
 +
== Gastsysteme ==
 +
* Unterstützt zahlreiche Betriebssysteme:
 +
** Linux (32/64 Bit)
 +
** Windows (32/64 Bit)
 +
** BSD-Derivate, Solaris/Illumos, Haiku, ReactOS, FreeDOS u. a.
 +
 
 +
== Paravirtualisierung mit VirtIO ==
 +
* Emulierte Geräte (z. B. Netzwerkkarte e1000, IDE-Platte) bilden echte Hardware nach. Der Gast-Treiber spricht mit ihnen wie mit echter Hardware, das erzeugt viele VM-Exits.
 +
* VirtIO-Geräte sind für VMs entworfen: Gast und Host tauschen Daten über gemeinsame Warteschlangen (virtqueues) aus, mit wenigen VM-Exits.
 +
* Wichtige VirtIO-Geräte:
 +
** <code>virtio-blk</code> / <code>virtio-scsi</code> für Festplatten
 +
** <code>virtio-net</code> für Netzwerk
 +
** <code>virtio-balloon</code> für dynamischen Arbeitsspeicher
 +
* Linux bringt die Treiber mit, für Windows gibt es die ISO <code>virtio-win</code>.
 +
* Animation: https://labs.xinux.net/kvm-praxis.html#virtio-1
 +
 
 +
== Verwaltungswerkzeuge ==
 +
* <code>qemu-system-x86_64 -accel kvm</code> (direkter Start ohne Verwaltung)
 +
* <code>virsh</code> (Kommandozeile von libvirt)
 +
* <code>virt-install</code> (VMs per Kommandozeile anlegen)
 +
* Virtual Machine Manager (<code>virt-manager</code>, grafisch)
 +
* Cockpit mit <code>cockpit-machines</code> (Weboberfläche)
 +
* Proxmox VE (eigene Verwaltung, nutzt kein libvirt)
 +
 
 +
== VT Modell (CPU Privilegienstufen) ==
 +
{{#drawio:vt-ring}}
 +
''Zeigt die CPU-Modi: VMX Root (Hypervisor, „Ring -1“) und VMX Non-Root (Gast mit eigenem Ring 0 und Ring 3).''
 +
* Ausführlich: [[X86-Virtualisierung]]
 +
 
 +
== Libvirt Übersicht ==
 +
[[Datei:kvm-104.png|500px]]
 +
* '''Libvirt''' ist eine einheitliche Schnittstelle zur Verwaltung von KVM/QEMU und anderen Hypervisoren.
 +
* Werkzeuge wie <code>virsh</code> und <code>virt-manager</code> sprechen mit dem Dienst <code>libvirtd</code>, der die QEMU-Prozesse startet und verwaltet.
 +
* Die Beschreibung einer VM liegt als XML-Datei unter <code>/etc/libvirt/qemu/</code>.
 +
 
 +
== VM Lifecycle ==
 +
[[Datei:kvm-105.png|500px]]
 +
''Lebenszyklus einer virtuellen Maschine (erstellt, gestartet, gestoppt, gelöscht).''
 +
{| class="wikitable"
 +
! Befehl !! Wirkung
 +
|-
 +
| <code>virsh define vm.xml</code> || VM anlegen (Zustand: ausgeschaltet)
 +
|-
 +
| <code>virsh start vm</code> || VM starten
 +
|-
 +
| <code>virsh suspend vm</code> / <code>virsh resume vm</code> || VM anhalten / fortsetzen
 +
|-
 +
| <code>virsh shutdown vm</code> || sauber herunterfahren (ACPI)
 +
|-
 +
| <code>virsh destroy vm</code> || hart ausschalten (Stecker ziehen), löscht nichts
 +
|-
 +
| <code>virsh undefine vm</code> || VM-Definition löschen (Platten bleiben)
 +
|}
 +
* Animation: https://labs.xinux.net/kvm-praxis.html#lifecycle-1
  
−
=Gastsysteme=
+
== Folien ==
−
*Linux (32 und 64 Bit),
+
* [[Datei:kvm-302.odp]]
−
*Windows (32 und 64 Bit)
+
* [[Datei:kvm-302.pdf]]
−
*Haiku
 
−
*AROS
 
−
*ReactOS
 
−
*FreeDOS
 
−
*Solaris
 
−
*BSD-Derivate.
 
−
=Paravirtualisierungsschnittstelle Virtio=
 
−
*Festplatten
 
−
*Netzwerkgerätetreiber
 
−
=Verwaltungswerkzeuge=
 
−
*qemu/kvm
 
−
*virsh
 
−
*Virtual Machine Manager (VMM)
 
−
*AQemu
 
−
*UCS Virtual Machine Manager
 
−
*Proxmox
 
−
*Ovirt
 
−
*Kimchi
 
−
=Einordnung=
 
−
==Typ-1-Hypervisor==
 
−
[[Datei:kvm-102.jpg|400px]]
 
−
==Typ-2-Hypervisor==
 
−
[[Datei:kvm-103.jpg|400px]]
 
−
*Von Qingqing Chen - Eigenes Werk, Gemeinfrei, https://commons.wikimedia.org/w/index.php?curid=1354683
 
−
==KVM==
 
−
*formal Typ2-Hypervisor
 
−
*da Teile in Ring0 laufen
 
−
*auch Typ1-Hypervisor
 
  
−
=Quellen=
+
== Quellen ==
−
*https://de.wikipedia.org/wiki/Kernel-based_Virtual_Machine
+
* https://de.wikipedia.org/wiki/Kernel-based_Virtual_Machine
−
*https://de.wikipedia.org/wiki/Hypervisor
+
* https://de.wikipedia.org/wiki/Hypervisor
−
*https://www.computerwoche.de/a/virtualisierung-ist-kvm-das-bessere-xen,1937585
+
* https://www.computerwoche.de/a/virtualisierung-ist-kvm-das-bessere-xen,1937585
 +
* https://mrpointy.wordpress.com/2009/05/12/is-kvm-a-type-1-or-a-type-2/
 +
* http://tuxthink.blogspot.de/2011/12/kvm-introduction.html
 +
[[Kategorie:Virtualisierung]]

Aktuelle Version vom 11. Oktober 2026, 17:46 Uhr

KVM Grundlagen

Übersicht

  • Kernel-based Virtual Machine (KVM) ist die Virtualisierungslösung im Linux-Kernel.
  • Nutzt Hardware-Virtualisierung (Intel VT-x, AMD-V).
  • Besteht aus Kernelmodulen (kvm.ko, kvm_intel.ko bzw. kvm_amd.ko) und setzt für die Geräteemulation auf QEMU auf.
  • Fester Bestandteil des Linux-Kernels seit Version 2.6.20 (Februar 2007).

Webseiten

Geschichte

  • Entwickelt von Avi Kivity bei Qumranet in Israel, vorgestellt im Oktober 2006.
  • Aufgenommen in Kernel 2.6.20, veröffentlicht im Februar 2007.
  • 2008 Übernahme von Qumranet durch Red Hat, das die Entwicklung seitdem maßgeblich vorantreibt.
  • Heute Grundlage vieler Plattformen, z. B. Proxmox VE, OpenStack und großer Cloud-Anbieter.
  • Portierungen existieren für FreeBSD und Illumos.

Unterstützte Architekturen

  • x86-64 mit Intel VT-x oder AMD-V
  • ARM64 (AArch64)
  • IBM Z (s390x)
  • PowerPC
  • RISC-V

Architektur von KVM

  • KVM virtualisiert CPU und Arbeitsspeicher, emuliert aber selbst keine Geräte.
  • Die Geräte der VM (Festplatte, Netzwerkkarte, Grafik) emuliert QEMU.
  • Jede VM ist ein normaler QEMU-Prozess auf dem Host, den der Kernel wie jeden anderen Prozess einplant.
  • KVM + QEMU zusammen ergeben ein vollständiges Virtualisierungssystem.

Übersichtsgrafik

Kvm-101.png KVM Architektur: KVM übernimmt CPU/RAM Virtualisierung, QEMU emuliert Geräte.

Gastsysteme

  • Unterstützt zahlreiche Betriebssysteme:
    • Linux (32/64 Bit)
    • Windows (32/64 Bit)
    • BSD-Derivate, Solaris/Illumos, Haiku, ReactOS, FreeDOS u. a.

Paravirtualisierung mit VirtIO

  • Emulierte Geräte (z. B. Netzwerkkarte e1000, IDE-Platte) bilden echte Hardware nach. Der Gast-Treiber spricht mit ihnen wie mit echter Hardware, das erzeugt viele VM-Exits.
  • VirtIO-Geräte sind für VMs entworfen: Gast und Host tauschen Daten über gemeinsame Warteschlangen (virtqueues) aus, mit wenigen VM-Exits.
  • Wichtige VirtIO-Geräte:
    • virtio-blk / virtio-scsi für Festplatten
    • virtio-net für Netzwerk
    • virtio-balloon für dynamischen Arbeitsspeicher
  • Linux bringt die Treiber mit, für Windows gibt es die ISO virtio-win.
  • Animation: https://labs.xinux.net/kvm-praxis.html#virtio-1

Verwaltungswerkzeuge

  • qemu-system-x86_64 -accel kvm (direkter Start ohne Verwaltung)
  • virsh (Kommandozeile von libvirt)
  • virt-install (VMs per Kommandozeile anlegen)
  • Virtual Machine Manager (virt-manager, grafisch)
  • Cockpit mit cockpit-machines (Weboberfläche)
  • Proxmox VE (eigene Verwaltung, nutzt kein libvirt)

VT Modell (CPU Privilegienstufen)

Zeigt die CPU-Modi: VMX Root (Hypervisor, „Ring -1“) und VMX Non-Root (Gast mit eigenem Ring 0 und Ring 3).

Libvirt Übersicht

Kvm-104.png

  • Libvirt ist eine einheitliche Schnittstelle zur Verwaltung von KVM/QEMU und anderen Hypervisoren.
  • Werkzeuge wie virsh und virt-manager sprechen mit dem Dienst libvirtd, der die QEMU-Prozesse startet und verwaltet.
  • Die Beschreibung einer VM liegt als XML-Datei unter /etc/libvirt/qemu/.

VM Lifecycle

Kvm-105.png Lebenszyklus einer virtuellen Maschine (erstellt, gestartet, gestoppt, gelöscht).

Befehl Wirkung
virsh define vm.xml VM anlegen (Zustand: ausgeschaltet)
virsh start vm VM starten
virsh suspend vm / virsh resume vm VM anhalten / fortsetzen
virsh shutdown vm sauber herunterfahren (ACPI)
virsh destroy vm hart ausschalten (Stecker ziehen), löscht nichts
virsh undefine vm VM-Definition löschen (Platten bleiben)

Folien

Quellen