KVM Grundlagen: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
 
(6 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
[[Datei:KVM.media]]
+
= KVM Grundlagen =
=Name=
 
*Kernel-based Virtual Machine
 
=Webseiten=
 
*https://www.linux-kvm.org/page/Main_Page
 
*https://www.qemu.org/
 
  
=Läuft auf=
+
== Übersicht ==
*Intel (VT)
+
* Kernel-based Virtual Machine (KVM) ist eine Virtualisierungslösung für Linux.
*AMD (AMD-V)  
+
* Nutzt Hardwarevirtualisierung (Intel VT, AMD-V).
*System-z-Architektur
+
* Besteht aus Kernelmodulen (kvm.ko, kvm_intel.ko, kvm_amd.ko) und setzt auf QEMU für Geräteemulation auf.
*PowerPC
+
* Seit 2007 im Linux-Kernel enthalten.
*ARM
 
  
=Veröffentlicht=
+
== Webseiten ==
*Oktober 2006
+
* https://www.linux-kvm.org/page/Main_Page
*Kernel 2.6.20
+
* https://www.qemu.org/
=Entwickelt=
 
*Israel
 
*Avi Kivity
 
*Qumranet
 
*2008 Red Hat
 
=Portierungen=
 
*FreeBSD
 
*Illumos
 
=Besteht aus=
 
*kvm.ko
 
*kvm_intel.ko
 
*kvm_amd.ko
 
  
=Open Virtualization Alliance (OVA)=
+
== Geschichte ==
*Gegründet Mai 2011
+
* Veröffentlicht: Oktober 2006 (Kernel 2.6.20)
*Virtualisierung und cloudbasierte Lösungen
+
* Entwickelt von Avi Kivity bei Qumranet in Israel.
*um dies auf dem Markt zu etablieren
+
* 2008 Übernahme von Qumranet durch Red Hat → treibt Entwicklung weiter.
*Mitglieder
+
* Portierungen existieren für FreeBSD und Illumos.
**BMC Software
 
**Eucalyptus Systems
 
**HP
 
**IBM
 
**Intel
 
**Red Hat  
 
**SUSE
 
  
=KVM=
+
== Unterstützte Architekturen ==
*keine Emulation
+
* Intel (VT-x)
*nur Infrasruktur
+
* AMD (AMD-V)
=Qemu=
+
* System-z
*virtualisierte Gastsysteme
+
* PowerPC
*Festplatten
+
* ARM
*Netzwerk
+
 
*Sound
+
== Open Virtualization Alliance (OVA) ==
*Grafikkarten
+
* Gegründet Mai 2011 zur Förderung von KVM und Cloud-Lösungen.
=Übersicht=
+
* Wichtige Mitglieder: BMC, Eucalyptus, HP, IBM, Intel, Red Hat, SUSE.
 +
 
 +
== Architektur von KVM ==
 +
* KVM ist reiner Kernel-Hypervisor → keine Emulation von Hardware.
 +
* Für Geräteemulation wird QEMU genutzt.
 +
* Kombination aus KVM + QEMU ergibt 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)
 +
** Haiku, AROS, ReactOS, FreeDOS, Solaris, BSD-Derivate
 +
 
 +
== Paravirtualisierung mit VirtIO ==
 +
* Spezielle paravirtualisierte Treiber für:
 +
** Festplatten
 +
** Netzwerkgeräte
 +
* Erhöht die Performance durch optimierten Zugriff auf Host-Ressourcen.
 +
 
 +
== Verwaltungswerkzeuge ==
 +
* qemu/kvm (Direkter Start)
 +
* virsh (CLI)
 +
* Virtual Machine Manager (VMM)
 +
* AQemu
 +
* UCS Virtual Machine Manager
 +
* Proxmox VE
 +
* oVirt
 +
* Kimchi
  
=Gastsysteme=
+
== VT Modell (CPU Privilegienstufen) ==
*Linux (32 und 64 Bit),
 
*Windows (32 und 64 Bit)
 
*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=
 
=VT Modell=
 
 
{{#drawio:vt-ring}}
 
{{#drawio:vt-ring}}
=Thread 1=
+
''Zeigt die CPU-Ringe: Ring -1 (Hypervisor), Ring 0 (Kernel), Ring 3 (User). KVM nutzt Ring -1.''
*KVM, das für Kernel-basierte Virtualisierung steht, ist ein Linux-Kernel, der in Kombination mit dem kvm-Kernelmodul den üblichen Linux-Kernel in einen Bare-Metal-Hypervisor verwandelt.
 
*Sobald KVM im Kernel installiert ist, können wir virtuelle Maschinen darin erstellen und sie mit verschiedenen Userspace-Tools wie qemu, libvirt oder virsh steuern.
 
*CPU-Virtualisierung: Um die CPU zu virtualisieren, nutzt KVM die Hardwarelösung, d. h. CPUs, in die Virtualisierungsanweisungen integriert sind.
 
*Intel nennt dies VT-X und AMD nennt es AMD-V.
 
*Die traditionelle Architektur von CPUs hatte den standardmäßigen ringbasierten Betrieb, wie unten gezeigt.
 
*Das Betriebssystem würde die privilegierten Befehle im Ring 0 ausführen und die Benutzerraumanwendungen würden im Ring 3 ausgeführt.
 
*Die Einführung der Virtualisierung erforderte das Vorhandensein einer neuen Schicht zwischen der Hardware und dem Betriebssystem.
 
*Dies hätte auf zwei Arten erreicht werden können: 0/1/3-Modell, bei dem das Betriebssystem in Ring 1 verschoben und der Hypervisor in Ring 0 ausgeführt wird
 
*0/3/3-Modell, bei dem das Betriebssystem und die Anwendungen beide im Ring3 ausgeführt werden und der Hypervisor im Ring 0 ausgeführt wird.
 
*Beide Modelle, die das Betriebssystem von Ring 0 wegbewegen, führen zu mehreren Problemen, da das Betriebssystem so konzipiert ist, dass es immer in Ring 0 ausgeführt wird.
 
*Die Softwarelösungen wie binäre Übersetzung und Paravirtualisierung versuchen, die Probleme aufgrund dieser Änderung des Betriebsrings anzugehen das Betriebssystem.
 
*Die von Intel und AMD-V eingeführte Hardwarelösung löst dies, indem sie neue Betriebsmodi in der CPU einführt.
 
*Die für die Intel-Virtualisierung aktivierte Hardware verfügt über die neuen Betriebsmodi VMX Root und VMX Non Root.
 
*Die VMX-Root-Operation wird verwendet, um den Hypervisor auszuführen, und die VMX-Non-Root-Operation wird verwendet, um die VM selbst auszuführen
 
*Jeder dieser CPU-Modi hat Ring 0,1,2,3.
 
*Somit kann das Betriebssystem weiterhin in ring0 im VMX-Non-Root-Modus arbeiten und somit seine gesamte Kontrolle über die Hardware wie bei einem herkömmlichen Betriebssystem behalten.
 
*Der Hypervisor hingegen wird im VMX-Root-Modus in Ring 0 ausgeführt.
 
*Somit erhält sogar der Hypervisor die vollständige Kontrolle über die Hardware, indem er im ring0 vorhanden ist.
 
*Aber zu jedem beliebigen Zeitpunkt würde entweder die andere VM oder der Hypervisor im Ring-0-Modus arbeiten.
 
*Dies löst eine Reihe von Problemen, die in den Softwarelösungen der Virtualisierung bestehen, und macht die Virtualisierung viel schneller,
 
*Die VM während des normalen Betriebs ohne Eingriff des Hypervisors direkt auf der Hardware arbeiten kann.
 
*Die Steuerung verlagert sich aus der VM nur bei einer E/A, die von der im Host-Kernel laufenden Userspace-Anwendung gehandhabt wird, und bei Interrupts oder anderen Signalen, die vom Hypervisor gehandhabt werden.
 
  
*KVM nutzt diese Hardwarefunktion, während die virtuellen Maschinen ausgeführt werden.
+
== Libvirt Übersicht ==
*Somit gibt es neben dem traditionellen Kernel-Space und User-Space einen neuen Modus, der als Gast-Betriebsmodus im Kernel bezeichnet wird.
 
*Die VM arbeitet in diesem Gastmodus, der den VMX-Nicht-Root-Modus nutzt.
 
*Das Gastbetriebssystem arbeitet im Ring 0 des VMX-Non-Root-Modus und die Anwendungen im Gastbetriebssystem im Ring 3 des VMX-Non-Root-Modus.
 
*Der KVM-Kernel hingegen arbeitet im Ring 0 des VMX-Root-Modus.
 
*Der Kernel, der als Hypervisor fungiert, wird im Kernelraum des vmx-Root-Modus ausgeführt.
 
==Libvirt supports==
 
 
[[Datei:kvm-104.png|500px]]
 
[[Datei:kvm-104.png|500px]]
 +
*'''Libvirt Architektur: API für Verwaltung von KVM/QEMU und anderen Hypervisoren.'''
  
=VM lifecycle=
+
== VM Lifecycle ==
 
[[Datei:kvm-105.png|500px]]
 
[[Datei:kvm-105.png|500px]]
 +
''Lebenszyklus einer virtuellen Maschine (erstellt, gestartet, gestoppt, gelöscht).''
  
=Folien=
+
== Folien ==
*[[Datei:kvm-302.odp]]
+
* [[Datei:kvm-302.odp]]
*[[Datei:kvm-302.pdf]]
+
* [[Datei:kvm-302.pdf]]
  
=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/
+
* 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
+
* http://tuxthink.blogspot.de/2011/12/kvm-introduction.html

Aktuelle Version vom 5. Mai 2025, 05:37 Uhr

KVM Grundlagen

Übersicht

  • Kernel-based Virtual Machine (KVM) ist eine Virtualisierungslösung für Linux.
  • Nutzt Hardwarevirtualisierung (Intel VT, AMD-V).
  • Besteht aus Kernelmodulen (kvm.ko, kvm_intel.ko, kvm_amd.ko) und setzt auf QEMU für Geräteemulation auf.
  • Seit 2007 im Linux-Kernel enthalten.

Webseiten

Geschichte

  • Veröffentlicht: Oktober 2006 (Kernel 2.6.20)
  • Entwickelt von Avi Kivity bei Qumranet in Israel.
  • 2008 Übernahme von Qumranet durch Red Hat → treibt Entwicklung weiter.
  • Portierungen existieren für FreeBSD und Illumos.

Unterstützte Architekturen

  • Intel (VT-x)
  • AMD (AMD-V)
  • System-z
  • PowerPC
  • ARM

Open Virtualization Alliance (OVA)

  • Gegründet Mai 2011 zur Förderung von KVM und Cloud-Lösungen.
  • Wichtige Mitglieder: BMC, Eucalyptus, HP, IBM, Intel, Red Hat, SUSE.

Architektur von KVM

  • KVM ist reiner Kernel-Hypervisor → keine Emulation von Hardware.
  • Für Geräteemulation wird QEMU genutzt.
  • Kombination aus KVM + QEMU ergibt 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)
    • Haiku, AROS, ReactOS, FreeDOS, Solaris, BSD-Derivate

Paravirtualisierung mit VirtIO

  • Spezielle paravirtualisierte Treiber für:
    • Festplatten
    • Netzwerkgeräte
  • Erhöht die Performance durch optimierten Zugriff auf Host-Ressourcen.

Verwaltungswerkzeuge

  • qemu/kvm (Direkter Start)
  • virsh (CLI)
  • Virtual Machine Manager (VMM)
  • AQemu
  • UCS Virtual Machine Manager
  • Proxmox VE
  • oVirt
  • Kimchi

VT Modell (CPU Privilegienstufen)

Zeigt die CPU-Ringe: Ring -1 (Hypervisor), Ring 0 (Kernel), Ring 3 (User). KVM nutzt Ring -1.

Libvirt Übersicht

Kvm-104.png

  • Libvirt Architektur: API für Verwaltung von KVM/QEMU und anderen Hypervisoren.

VM Lifecycle

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

Folien

Quellen