linux-ubuntu-debian virtualization kvm qemu hypervisor

QEMU & KVM: Native Virtualization (Artikel 041)

Tiefgehende Analyse der nativen Linux-Virtualisierung mit KVM und QEMU. Architekturverständnis, Performance-Optimierung und CLI-basiertes VM-Management.

# QEMU & KVM: Hochleistungs-Virtualisierung im Linux-Kernel

TL;DR / Management Summary KVM (Kernel-based Machine) verwandelt den Linux-Kernel in einen Typ-1 Hypervisor. In Kombination mit QEMU (Quick Emulator), der die Hardware emuliert, entsteht eine Virtualisierungslösung, die performanter als VMware oder Hyper-V ist. Das Rückgrat von Proxmox, AWS und OpenStack. Wir schauen uns an, wie man VMs ohne GUI direkt auf der Kommandozeile erstellt und optimiert.


# 1. Einführung & Architektur

Wie Linux zum Hypervisor wird.

  • KVM: Ein Kernel-Modul, das CPUs mit Hardware-Virtualisierungsfeatures (VT-x / AMD-V) direkt ansteuert.
  • QEMU: Emuliert Peripherie wie Disks, Netzwerkkarten und Grafik.
graph TD
    A[Hardware: CPU VT-x/AMD-V] --- B[Linux Kernel + KVM Module]
    B --- C[QEMU Process / VM 1]
    B --- D[QEMU Process / VM 2]
    C --- E[Guest OS: Windows]
    D --- F[Guest OS: Linux]
    G[Management: libvirt / Proxmox] --> C
    G --> D

# 2. Hardware-Check & Installation

Ist der Server bereit?

# CPU Features prüfen

# Muss eine Zahl > 0 zurückgeben
egrep -c '(vmx|svm)' /proc/cpuinfo

# Pakete installieren

sudo apt update
sudo apt install qemu-system-x86 qemu-utils libvirt-daemon-system libvirt-clients virtinst bridge-utils

# 3. VM Erstellung via CLI

Der Profi-Weg mit virt-install.

Anstatt ISOs manuell zu brennen, nutzen wir Cloud-Images oder automatisierte Installer.

sudo virt-install \
  --name ubuntu-server \
  --memory 2048 \
  --vcpus 2 \
  --disk size=20,format=qcow2,bus=virtio \
  --os-variant ubuntu22.04 \
  --network bridge=vmbr0,model=virtio \
  --graphics none \
  --console pty,target_type=serial \
  --location 'http://archive.ubuntu.com/ubuntu/dists/jammy/main/installer-amd64/' \
  --extra-args 'console=ttyS0,115200n8 serial'

# 4. Day-2 Operations: Performance & Storage

Das System ausreizen.

# VirtIO: Die Autobahn für Daten

Nutzen Sie niemals IDE oder SATA für VMs. VirtIO ist ein paravirtualisierter Treiber, der die Latenz massiv senkt.

  • Disk: bus=virtio
  • Network: model=virtio

# QCOW2 vs. RAW

  • RAW: Schnellste Performance, aber keine Snapshots, belegt sofort den vollen Platz.
  • QCOW2: Unterstützt Snapshots, Kompression und “Thin Provisioning” (wächst mit den Daten).

# 5. Troubleshooting & “War Stories”

Wenn die VM hakt.

# Story 1: “Der hängende VNC-Zugriff”

Symptom: Die VM läuft, aber Sie kommen nicht per Konsole ran. Ursache: Standardmäßig lauscht QEMU/KVM nur auf 127.0.0.1. Lösung: In der Libvirt-XML (virsh edit <name>) den Listen-Type auf 0.0.0.0 ändern oder SSH-Tunnel nutzen. Am besten: Serial Console nutzen (siehe Artikel 012).

# Story 2: “CPU Steal Time”

Symptom: Die VM ist extrem langsam, obwohl die CPU-Last im Gast niedrig ist. Ursache: Zu viele VMs auf zu wenigen echten CPU-Kernen (Overcommitment). Der Host kommt mit dem Scheduling nicht hinterher. Lösung: Nutzen Sie top auf dem Host und achten Sie auf %st (Steal Time). Reduzieren Sie die Anzahl der vCPUs oder pinnen Sie CPUs (CPU Pinning).


# 6. Fazit & Empfehlung

  • Management: Nutzen Sie Libvirt (virsh) für Standalone-Server. Es ist der Standard-Wrapper für QEMU.
  • Hardware: Aktivieren Sie im BIOS immer “Virtualization Technology” und “SR-IOV”.
  • VirtIO: Ohne VirtIO-Treiber (besonders unter Windows) verlieren Sie bis zu 50% Performance.

# Anhang: Cheatsheet

Aufgabe Befehl
Liste aller VMs virsh list --all
VM starten virsh start <name>
VM stoppen (Hard) virsh destroy <name>
VM Editieren (XML) virsh edit <name>
Snapshot erstellen virsh snapshot-create-as <name> snap1
VM Klonen virt-clone --original <name> --name <neu> --auto-clone