KVM Grundlagen

Aus Xinux Wiki
Version vom 11. Oktober 2026, 17:46 Uhr von Thomas.will (Diskussion | Beiträge)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Zur Navigation springen Zur Suche springen

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