KVM Grundlagen: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
Thomas (Diskussion | Beiträge) (→KVM) |
|||
| (16 dazwischenliegende Versionen von 3 Benutzern werden nicht angezeigt) | |||
| Zeile 1: | Zeile 1: | ||
| − | + | = 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 (<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. |
| − | * | + | * Fester Bestandteil des Linux-Kernels seit Version 2.6.20 (Februar 2007). |
| − | |||
| − | = | + | == Webseiten == |
| − | + | * https://www.linux-kvm.org/page/Main_Page | |
| − | + | * https://www.qemu.org/ | |
| − | = | + | * https://libvirt.org/ |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | *kvm. | ||
| − | * | ||
| − | * | ||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | = | + | == 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 == | ||
[[Datei:kvm-101.png|500px]] | [[Datei:kvm-101.png|500px]] | ||
| − | * | + | ''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 | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | * | ||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | =Folien= | + | == Folien == |
| − | *[[Datei:kvm- | + | * [[Datei:kvm-302.odp]] |
| − | *[[Datei:kvm- | + | * [[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 |
| + | [[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.kobzw.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 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-scsifür Festplattenvirtio-netfür Netzwerkvirtio-balloonfü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).
- Ausführlich: X86-Virtualisierung
Libvirt Übersicht
- Libvirt ist eine einheitliche Schnittstelle zur Verwaltung von KVM/QEMU und anderen Hypervisoren.
- Werkzeuge wie
virshundvirt-managersprechen mit dem Dienstlibvirtd, der die QEMU-Prozesse startet und verwaltet. - Die Beschreibung einer VM liegt als XML-Datei unter
/etc/libvirt/qemu/.
VM Lifecycle
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
- https://de.wikipedia.org/wiki/Kernel-based_Virtual_Machine
- https://de.wikipedia.org/wiki/Hypervisor
- 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
