Modul 9 von 16 · 📖 10 min Lesezeit · ⏱ 60 min gesamt

FUTO 09 KVM Virtualisierung

Inhaltsverzeichnis (6 Abschnitte)
  1. Konzepte und Hintergrund
  2. Architektur-Diagramm
  3. Praktische Schritte
  4. Häufige Fallstricke
  5. Weiterführende Ressourcen
  6. Wissens-Check

FUTO 09 KVM Virtualisierung

In diesem Modul erlernen Sie die Grundlagen der Virtualisierung mit KVM/QEMU unter Linux. Sie erfahren, wie Sie virtuelle Maschinen effizient erstellen und verwalten, und erhalten Einblicke in die wichtigsten Werkzeuge wie libvirt, virsh und virt-manager. Der Fokus liegt auf praktischer Anwendung für den Einsatz in kleinen und mittelständischen Unternehmen.

Sie werden verstehen, wie KVM als Hypervisor funktioniert, wie Sie virtuelle Hardware mit virtio-Treibern optimieren und wie Sie Cloud-init für die automatische Initialisierung von VMs nutzen. Nach Abschluss dieses Moduls können Sie eigene virtuelle Infrastrukturen aufsetzen und verwalten.

Konzepte und Hintergrund

KVM/QEMU
Kernel-based Virtual Machine (KVM) ist ein Hypervisor, der direkt im Linux-Kernel integriert ist. QEMU (Quick Emulator) stellt die Emulation der Hardware bereit. Zusammen ermöglichen sie vollvirtualisierte Maschinen mit nahezu nativer Leistung.
libvirt
Die libvirt-API ist eine Sammlung von Tools zur Verwaltung von Virtualisierungsplattformen. Sie bietet ein einheitliches Interface für verschiedene Hypervisors und ist die Grundlage für viele Verwaltungswerkzeuge wie virsh und virt-manager.
virtio
Virtio ist ein Standard für paravirtualisierte Geräte in virtuellen Maschinen. Diese speziellen Treiber ermöglichen eine deutlich höhere Leistung bei Netzwerk- und Festplattenzugriffen, da sie den Overhead der Emulation reduzieren.
cloud-init
cloud-init ist ein Standard für die Initialisierung von Cloud-Instanzen. In VMs sorgt es für die automatische Konfiguration beim ersten Start, wie das Setzen von Hostnamen, Erstellen von Benutzern oder Einbinden von SSH-Schlüsseln.

Architektur-Diagramm

flowchart TB
    Host[Host-System
Linux mit KVM] -->|Hardware-Abstraktion| Hypervisor[KVM Hypervisor] Hypervisor --> VM1[VM 1
Debian] Hypervisor --> VM2[VM 2
Ubuntu] Hypervisor --> VM3[VM 3
CentOS] VM1 -->|virtio| Netz[Netzwerk-Interface] VM2 -->|virtio| Netz VM3 -->|virtio| Netz VM1 -->|virtio| Speicher[Virtuelle Festplatte] VM2 -->|virtio| Speicher VM3 -->|virtio| Speicher

Praktische Schritte

  1. Installieren Sie die notwendigen Pakete mit
    sudo apt install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils virt-manager
    . Dies installiert den KVM-Hypervisor, die libvirt-Verwaltungstools und die grafische Oberfläche.
  2. Fügen Sie Ihren Benutzer zur libvirt-Gruppe hinzu mit
    sudo usermod -aG libvirt $USER
    . Dies ermöglicht Ihnen die Verwaltung von VMs ohne Root-Rechte.
  3. Starten und aktivieren Sie den libvirt-Daemon mit
    sudo systemctl enable --now libvirtd
    . Der Daemon ist für die Verwaltung der virtuellen Maschinen zuständig.
  4. Erstellen Sie eine virtuelle Festplatte mit
    qemu-img create -f qcow2 /var/lib/libvirt/images/debian.qcow2 20G
    . Das qcow2-Format ermöglicht Snapshots und effiziente Speichernutzung.
  5. Installieren Sie eine VM mit virt-install über die Konsole oder verwenden Sie virt-manager für die grafische Installation. Für eine Debian-VM im Netzwerk "default" verwenden Sie:
    virt-install --name debian --memory 2048 --vcpus 2 --disk path=/var/lib/libvirt/images/debian.qcow2,size=20 --os-variant debian10 --network network=default --graphics spice
    .
  6. Konfigurieren Sie die VM mit cloud-init für die automatische Initialisierung. Erstellen Sie eine user-data-Datei und binden Sie sie bei der Installation ein:
    virt-install --cloudinit user-data=cloud-init.cfg ...
    .
  7. Verwalten Sie VMs mit virsh, der Kommandozeilen-Schnittstelle zu libvirt. Starten Sie eine VM mit
    virsh start debian
    und erhalten Sie Informationen mit
    virsh dominfo debian
    .
  8. Erstellen Sie Snapshots von VMs mit
    virsh snapshot-create-as debian pre-upgrade
    . Snapshots ermöglichen das schnelle Zurücksetzen eines VM-Zustands.

Häufige Fallstricke

Weiterführende Ressourcen

Wissens-Check

Vier Fragen zur Selbstkontrolle. Klicken Sie jede Frage an, um die richtige Antwort und Erklärung zu sehen.

Was ist der Hauptunterschied zwischen KVM und QEMU in der Virtualisierung?
  • A) KEMU ist eine Abkürzung für Kernel-based Emulation Utility, während QEMU für Quick Emulator steht.
  • B) KVM ist ein Hypervisor, der direkt im Linux-Kernel integriert ist, während QEMU die Hardware-Emulation bereitstellt.
  • C) KVM ist nur für Windows-Hosts geeignet, während QEMU ausschließlich auf Linux läuft.
  • D) KVM dient zur Verwaltung von virtuellen Maschinen, während QEMU ausschließlich zur Installation von Betriebssystemen verwendet wird.

Richtige Antwort: B. KVM ist ein Kernel-basierter Hypervisor, während QEMU die Hardware-Emulation bereitstellt. Option A ist falsch, da es keine Abkürzung KEMU gibt. Option C ist falsch, da KVM primär für Linux-Hosts entwickelt wurde. Option D ist falsch, da KVM nicht direkt zur Verwaltung dient, sondern die Virtualisierungsebene bereitstellt.

Welcher Vorteil bietet der Einsatz von virtio-Treibern in virtuellen Maschinen?
  • A) Sie ermöglichen die Nutzung von 3D-Grafikbeschleunigung in VMs.
  • B) Sie reduzieren den Overhead bei Netzwerk- und Festplattenzugriffen durch paravirtualisierte Geräte.
  • C) Sie erlauben die direkte Verbindung von physischen USB-Geräten an die VM ohne Umweg über den Host.
  • D) Sie ermöglichen die Live-Migration von VMs ohne Unterbrechung des Netzwerkverkehrs.

Richtige Antwort: B. Virtio-Treiber reduzieren den Overhead durch paravirtualisierte Geräte, was zu besserer Leistung bei I/O-Operationen führt. Option A bezieht sich auf GPU-Passthrough, nicht auf virtio. Option C beschreibt USB-Passthrough, nicht virtio. Option D ist zwar ein Vorteil von KVM, aber nicht spezifisch für virtio-Treiber.

Was ist der Hauptzweck von cloud-init in einer virtuellen Maschine?
  • A) Die Überwachung der Systemleistung und Ressourcennutzung der VM.
  • B) Die automatische Initialisierung und Konfiguration der VM beim ersten Start.
  • C) Die Sicherung und Wiederherstellung von VM-Konfigurationen.
  • D) Die Verwaltung von Netzwerkbrücken und VLAN-Konfigurationen auf dem Host-System.

Richtige Antwort: B. cloud-init sorgt für die automatische Konfiguration bei der ersten Initialisierung einer VM. Option A beschreibt Monitoring-Tools, nicht cloud-init. Option C bezieht sich auf Backup-Lösungen, nicht cloud-init. Option D betrifft Netzwerkkonfiguration auf Host-Ebene, nicht die VM-Initialisierung.

Was ist die Hauptfunktion der libvirt-API in einer KVM-Umgebung?
  • A) Die direkte Emulation von physischer Hardware für die virtuellen Maschinen.
  • B) Die Bereitstellung eines einheitlichen Interfaces zur Verwaltung verschiedener Hypervisors.
  • C) Die Optimierung der CPU-Zuweisung für verschiedene VMs basierend auf ihrer Auslastung.
  • D) Die Verschlüsselung von VM-Images und Datenübertragung zwischen Host und VMs.

Richtige Antwort: B. libvirt bietet ein einheitliches Interface zur Verwaltung verschiedener Hypervisors. Option A beschreibt die Funktion von QEMU, nicht libvirt. Option C bezieht sich auf CPU-Scheduling-Funktionen des Host-Kernels, nicht libvirt. Option D betrifft Sicherheitsfunktionen, die nicht im Kern von libvirt implementiert sind.