Storage. Backup. Virtualisierung.


KVM im Cluster, Virtualisierung unter Linux · Version 1.6 · © Stor IT Back 2026



KVM Virtualisierung im Cluster unter Linux


Kurz erklärt: Ein KVM-Cluster verbindet mehrere Linux-Server zu einer gemeinsamen Virtualisierungsumgebung. KVM stellt die hardwaregestützte Virtualisierung im Linux-Kernel bereit, QEMU bildet die virtuelle Hardware ab und Libvirt übernimmt die Verwaltung der virtuellen Maschinen. Pacemaker und Corosync können Hochverfügbarkeit, Quorum und Ressourcensteuerung übernehmen. Bei blockbasiertem Shared Storage lässt sich GFS2 als Cluster-Dateisystem einsetzen, damit mehrere Hosts kontrolliert auf dieselben VM-Daten zugreifen können.

Diese Seite zeigt einen möglichen technischen Aufbau mit Debian 13 „Trixie“, KVM/QEMU, Libvirt, Pacemaker, Corosync, DLM, lvmlockd, GFS2 und gemeinsamem Fibre-Channel-Storage. Sie ist als Praxisbeispiel und technische Orientierung gedacht, nicht als 1:1-Bauanleitung für jede produktive Umgebung. Hardware, Fencing, Netzwerk, Storage und Sicherheitskonzept müssen immer an die konkrete Infrastruktur angepasst werden.


 
 

Inhaltsverzeichnis KVM Cluster installieren

Inhaltsverzeichnis: KVM-Cluster installieren und betreiben

  1. 1. Allgemeines zu KVM
    1. 1.1 Kernel-based Virtual Machine – Einführung
    2. 1.2 Warum KVM?
    3. 1.3 Grundlagen eines KVM-Clusters
  2. 2. Installation eines KVM-Clusters
    1. 2.1 Hardware für den Cluster
    2. 2.2 Betriebssystem für KVM
    3. 2.3 Pacemaker- und Corosync-Cluster installieren
    4. 2.4 Shared LVM mit lvmlockd konfigurieren
    5. 2.5 GFS2 als Cluster-Dateisystem installieren
    6. 2.6 KVM/QEMU und Libvirt installieren
    7. 2.7 Virtuelles Netzwerk einrichten
  3. 3. Betrieb von KVM
    1. 3.1 Virtuelle Maschine einrichten
    2. 3.2 Wichtige KVM- und Virsh-Befehle
    3. 3.3 Virtuelle Maschinen im HA-Cluster
    4. 3.4 Verbesserungen für produktive KVM-Cluster
  4. 4. Sonstiges zu KVM
    1. 4.1 FAQ zu KVM-Clustern
    2. 4.2 Angebote
 
 

Kernel-based Virtual Machine – eine Einführung

KVM steht für Kernel-based Virtual Machine und ist die Virtualisierungstechnik des Linux-Kernels. Auf x86-Systemen nutzt KVM die Hardware-Virtualisierung der Prozessoren, also Intel VT-x beziehungsweise AMD-V. Im Kernel kommen dazu die KVM-Module zum Einsatz; QEMU stellt die virtuelle Hardware wie CPU-Modell, Controller, Netzwerkkarten und virtuelle Datenträger bereit.

Für die Administration wird in der Praxis häufig Libvirt eingesetzt. Libvirt abstrahiert QEMU/KVM und stellt mit virsh eine Kommandozeilenverwaltung sowie Schnittstellen für weitere Management-Werkzeuge bereit. Auf einem KVM-Host können dadurch unveränderte Linux- und Windows-Gastsysteme betrieben werden. Für gute Performance sollten in den Gästen paravirtualisierte VirtIO-Treiber für Storage und Netzwerk verwendet werden.

KVM ist Open Source und seit vielen Jahren Bestandteil des Linux-Kernels. Die Virtualisierung selbst ist damit eng in Linux integriert; für eine komplette Unternehmensplattform werden jedoch zusätzliche Komponenten für Management, Storage, Netzwerk, Backup, Monitoring und Hochverfügbarkeit benötigt.


 
 

Warum KVM nutzen? Wer setzt Linux-Virtualisierung ein?

Ein wichtiger Vorteil von KVM ist die offene Architektur. KVM, QEMU und viele Verwaltungswerkzeuge sind als Open-Source-Software verfügbar. Dadurch entstehen zunächst keine klassischen Hypervisor-Lizenzkosten. Das bedeutet jedoch nicht, dass eine KVM-Plattform automatisch kostenlos betrieben werden kann: Planung, Installation, Betrieb, Updates, Monitoring, Backup und Fehleranalyse benötigen Zeit und qualifiziertes Personal.

Wer KVM direkt und ohne fertige Plattform einsetzt, sollte deshalb über fundierte Linux-, Netzwerk-, Storage- und Cluster-Kenntnisse verfügen. Für den professionellen Betrieb ist es sinnvoll, das Wissen auf mehrere Administratoren zu verteilen und Installation sowie Betriebsprozesse sauber zu dokumentieren.

Vorteile von KVM als Linux-Virtualisierung

Alternativ kann eine fertige Virtualisierungsplattform auf Basis von KVM eingesetzt werden. Proxmox VE kombiniert beispielsweise QEMU/KVM, LXC, Storage-Funktionen, Cluster, Hochverfügbarkeit und eine integrierte Weboberfläche. Damit bleibt die KVM-Technik erhalten, während viele Verwaltungsaufgaben bereits in einer fertigen Plattform zusammengeführt sind.

Die wirtschaftliche Entscheidung sollte deshalb nicht nur die Lizenzkosten betrachten. Entscheidend sind die Gesamtkosten aus Hardware, Storage, Administration, Know-how, Support, Backup, Wartung und Ausfallrisiko. Für manche Unternehmen ist eine selbst aufgebaute KVM-Lösung optimal, für andere ist eine integrierte Plattform wie Proxmox VE wirtschaftlicher.


 
 

Grundlagen eines KVM-Clusters

Ein einzelner KVM-Server kann viele virtuelle Maschinen betreiben, bleibt aber zunächst ein einzelner Ausfallpunkt. Fällt dieser Host aus, stehen die darauf laufenden VMs nicht mehr zur Verfügung. Für höhere Verfügbarkeit werden daher mehrere KVM-Nodes zu einem Cluster zusammengefasst.

Bei dem hier beschriebenen Aufbau greifen mehrere Nodes auf denselben blockbasierten Storage zu. Ein normales lokales Dateisystem wie ext4 oder XFS darf nicht gleichzeitig von mehreren Hosts auf demselben Blockdevice eingehängt werden. Für einen parallelen Zugriff wird deshalb ein Cluster-Dateisystem wie GFS2 benötigt. Der Distributed Lock Manager (DLM) koordiniert dabei Sperren zwischen den Nodes.

Die wichtigsten Bausteine dieses Beispiels sind:

Andere Architekturen sind ebenfalls möglich. NFS benötigt beispielsweise kein GFS2 auf den KVM-Hosts, und verteilte Storage-Systeme wie Ceph lösen den gemeinsamen Datenzugriff auf andere Weise. Die folgende Konfiguration zeigt bewusst einen klassischen Aufbau mit blockbasiertem Shared Storage.


 
 

Hardware für den KVM-Cluster

Für einen produktiven Cluster sind mindestens zwei KVM-Nodes erforderlich. Moderne Corosync-/Pacemaker-Umgebungen können auch als Zwei-Node-Cluster betrieben werden. Dabei ist ein korrektes Fencing besonders wichtig, damit bei einer Kommunikationsstörung eindeutig feststeht, welcher Node weiterarbeiten darf. Drei Nodes sind häufig einfacher zu planen, weil eine echte Stimmenmehrheit im Cluster vorhanden ist und Wartungsarbeiten flexibler durchgeführt werden können.

Für dieses Beispiel verwenden wir drei Server. Die Nodes sollten möglichst vergleichbare CPU-Generationen und CPU-Features besitzen, damit Live-Migrationen nicht an inkompatiblen Prozessorfunktionen scheitern.

Aufbau eines KVM-Clusters mit drei Nodes und Shared Storage

Zusätzlich benötigen wir Shared Storage. In diesem Beispiel ist der Storage per Fibre Channel redundant angebunden. Entscheidend ist, dass alle KVM-Nodes auf die benötigten LUNs lesend und schreibend zugreifen können. Bei mehreren Pfaden zum Storage sollte Device Mapper Multipath eingesetzt werden.

Warum nicht einfach NFS? NFS kann für Virtualisierung sehr gut geeignet sein und vereinfacht den Aufbau, weil kein blockbasiertes Cluster-Dateisystem benötigt wird. Ob NFS, iSCSI, Fibre Channel oder ein verteiltes Storage-System die bessere Wahl ist, hängt von Latenz, Durchsatz, Redundanz, Skalierung, Betriebsmodell und vorhandener Infrastruktur ab. Wir verwenden hier Fibre Channel, um den Aufbau mit Multipath, Shared LVM, DLM und GFS2 zu zeigen.

Für produktive Systeme sollten außerdem Management-, Cluster-, VM- und Storage-Verkehr logisch oder physisch getrennt und redundant ausgelegt werden. Ein einzelner Switch, eine einzelne NIC oder ein einzelner Storage-Pfad würde sonst einen unnötigen Single Point of Failure darstellen.


 
 

Basis-Betriebssystem installieren und konfigurieren

KVM ist Bestandteil von Linux, deshalb kann die Distribution grundsätzlich frei gewählt werden. Für einen produktiven Cluster sollte eine stabile Distribution verwendet werden, mit der das Administratorenteam gut vertraut ist. In diesem Beispiel nutzen wir Debian 13 „Trixie“.

Wir installieren eine möglichst schlanke Debian-Serverbasis ohne grafische Oberfläche. Weniger zusätzlich installierte Software reduziert die Zahl unnötiger Dienste, erleichtert Updates und verkleinert die Angriffsfläche. Für die Administration genügt zunächst SSH.

Jeder KVM-Node erhält eine feste Management-IP-Adresse und einen eindeutigen Hostnamen. DNS kann eingesetzt werden, für die Cluster-Kommunikation sollten Namensauflösung und Adressierung aber so ausgelegt sein, dass sie nicht von Diensten abhängen, die selbst als VM im gleichen Cluster laufen. Eine gepflegte /etc/hosts kann deshalb für ein kleines Test-Setup sinnvoll sein.

Hinweis: In einer produktiven Umgebung sollten Management- und Cluster-Netz redundant ausgelegt werden. Corosync kann bei passendem Design mehrere Links verwenden. Auch die Zeit-Synchronisation aller Nodes muss zuverlässig funktionieren.


 
 

Installation des Clusters mit Pacemaker und Corosync

Auf allen KVM-Nodes installieren wir die benötigten Cluster-, Storage- und Verwaltungswerkzeuge. Die Paketnamen beziehen sich auf Debian 13:

root@kvm1:~# apt-get update
root@kvm1:~# apt-get install pacemaker corosync pcs \
                    resource-agents fence-agents \
                    gfs2-utils dlm-controld lvm2-lockd \
                    multipath-tools lsscsi rsync

pcs dient zur Konfiguration von Pacemaker und Corosync. resource-agents stellt OCF-Ressourcen bereit, fence-agents enthält Fencing-Agenten, dlm-controld den Distributed Lock Manager und lvm2-lockd den für Shared LVM benötigten Dienst lvmlockd.

Danach wird auf allen Nodes pcsd aktiviert und für den Benutzer hacluster ein Passwort gesetzt:

root@kvm1:~# systemctl enable --now pcsd
root@kvm1:~# passwd hacluster

Die Hostnamen und Management-Adressen müssen auf allen Nodes korrekt auflösbar sein. Für dieses Beispiel verwenden wir die Namen kvm1, kvm2 und kvm3. Die Authentifizierung und Cluster-Erstellung erfolgen anschließend von einem Node aus:

root@kvm1:~# pcs host auth kvm1 kvm2 kvm3
Username: hacluster
Password:

root@kvm1:~# pcs cluster setup kvm_cluster kvm1 kvm2 kvm3
root@kvm1:~# pcs cluster enable --all
root@kvm1:~# pcs cluster start --all
root@kvm1:~# pcs status

Damit ist der Cluster-Grundaufbau vorhanden. Die Weboberfläche von pcsd ist standardmäßig über TCP-Port 2224 erreichbar, sofern Firewall und Netzkonzept dies zulassen.

Zusammenspiel von GFS2, Pacemaker und Corosync im KVM-Cluster

Fencing beziehungsweise STONITH

Für einen produktiven HA-Cluster ist Fencing unverzichtbar. Ein Node, dessen Zustand nicht mehr eindeutig beurteilt werden kann, muss zuverlässig vom Zugriff auf gemeinsam genutzte Ressourcen ausgeschlossen werden. Andernfalls drohen Split Brain, parallele Schreibzugriffe und im schlimmsten Fall Datenverlust.

Geeignete Fence-Mechanismen nutzen möglichst eine vom Betriebssystem des betroffenen Nodes unabhängige Steuerung, zum Beispiel IPMI, iDRAC, iLO, einen PDU-Agenten oder Storage-basiertes Fencing. Ein einfaches SSH-Fencing ist nur für Laborzwecke sinnvoll, weil es gerade dann versagen kann, wenn Betriebssystem oder Netzwerkstack des Hosts gestört sind.

Welche Agents auf dem System verfügbar sind, lässt sich beispielsweise so prüfen:

root@kvm1:~# pcs stonith list
root@kvm1:~# pcs stonith describe fence_ipmilan

Ein konkretes Fencing-Beispiel muss immer zur eingesetzten Hardware passen. Zugangsdaten und Management-Netz sollten getrennt vom normalen VM-Verkehr abgesichert werden.


 
 

Shared LVM mit DLM und lvmlockd konfigurieren

Frühere Cluster-Installationen verwendeten häufig clvmd. Bei aktuellen LVM2-Versionen wird für gemeinsam genutzte Volume Groups lvmlockd eingesetzt. lvmlockd koordiniert den Zugriff auf Shared LVM und kann DLM oder sanlock als Lock Manager verwenden. Da in unserem Beispiel Corosync und DLM ohnehin für GFS2 benötigt werden, verwenden wir DLM.

Auf allen Nodes wird in /etc/lvm/lvm.conf die Nutzung von lvmlockd aktiviert:

use_lvmlockd = 1

DLM und lvmlockd sollen durch den Cluster gesteuert werden. Ein mögliches Grundschema mit pcs sieht so aus:

root@kvm1:~# pcs resource create dlm ocf:pacemaker:controld \
                    op monitor interval=30s
root@kvm1:~# pcs resource clone dlm dlm-clone meta interleave=true

root@kvm1:~# pcs resource create lvmlockd ocf:heartbeat:lvmlockd \
                    op monitor interval=30s
root@kvm1:~# pcs resource clone lvmlockd lvmlockd-clone meta interleave=true

root@kvm1:~# pcs constraint order start dlm-clone then lvmlockd-clone
root@kvm1:~# pcs constraint colocation add lvmlockd-clone with dlm-clone

Der DLM stellt die verteilten Locks bereit; lvmlockd nutzt diese Locks für LVM. Bei Shared Volume Groups müssen Start, Stop und Aktivierung über das Cluster-Konzept abgestimmt werden. Die genaue Ressourcenstruktur kann sich je nach eingesetzter Pacemaker-/pcs-Version und Storage-Design unterscheiden und sollte vor einem Produktiveinsatz in einer Testumgebung geprüft werden.

Ein Quorum ist für gemeinsam genutzte Ressourcen besonders wichtig. Bei Verlust des Quorums darf der Cluster keine Situation zulassen, in der zwei voneinander getrennte Partitionen gleichzeitig schreibend auf dieselben Daten zugreifen.

 
 

Installation des Cluster-Dateisystems GFS2

Zunächst muss das gemeinsame Storage-Device eindeutig ermittelt werden. Bei redundant angebundenem Fibre-Channel- oder iSCSI-Storage sollte dafür das Multipath-Device unter /dev/mapper verwendet werden und nicht einer der einzelnen physischen Pfade.

root@kvm1:~# multipath -ll
root@kvm1:~# ls -l /dev/mapper/

Im Beispiel verwenden wir die Multipath-LUN /dev/mapper/3600601602f303b000a95084c8a0ae911. Darauf wird eine Shared Volume Group und anschließend ein Logical Volume angelegt:

root@kvm1:~# pvcreate /dev/mapper/3600601602f303b000a95084c8a0ae911
root@kvm1:~# vgcreate --shared vg_cluster \
                    /dev/mapper/3600601602f303b000a95084c8a0ae911
root@kvm1:~# vgchange --lockstart vg_cluster
root@kvm1:~# lvcreate --size 512G --name lv_storage vg_cluster

vgcreate --shared kennzeichnet die Volume Group als gemeinsam genutzt. Bei DLM speichert LVM dabei auch die Cluster-Zuordnung. Die Größe von 512 GByte ist nur ein Beispiel und muss natürlich an die vorhandene LUN und die geplanten virtuellen Maschinen angepasst werden.

Nun wird das GFS2-Dateisystem erstellt. Die Anzahl der Journale muss mindestens zur Zahl der Hosts passen, die das Dateisystem gleichzeitig mounten sollen:

root@kvm1:~# mkfs.gfs2 -j3 -J32 \
                    -t kvm_cluster:gfs2_storage \
                    -p lock_dlm /dev/vg_cluster/lv_storage

root@kvm1:~# mkdir -p /kvm/storage
root@kvm2:~# mkdir -p /kvm/storage
root@kvm3:~# mkdir -p /kvm/storage

Das Dateisystem sollte als Cluster-Ressource verwaltet werden, damit Startreihenfolge und Abhängigkeiten kontrolliert sind. Das folgende Beispiel zeigt das Prinzip:

root@kvm1:~# pcs resource create gfs2_storage ocf:heartbeat:Filesystem \
                    device="/dev/vg_cluster/lv_storage" \
                    directory="/kvm/storage" fstype="gfs2" \
                    options="noatime" \
                    op monitor interval=30s
root@kvm1:~# pcs resource clone gfs2_storage gfs2_storage-clone \
                    meta interleave=true
root@kvm1:~# pcs constraint order start lvmlockd-clone then gfs2_storage-clone
root@kvm1:~# pcs constraint colocation add gfs2_storage-clone with lvmlockd-clone

Ein Cluster-Dateisystem, das vom Cluster verwaltet wird, sollte nicht unabhängig mit mount, umount oder per statischem Boot-Eintrag gestartet und gestoppt werden. Für Wartungsarbeiten wird die Ressource über Pacemaker deaktiviert und danach wieder aktiviert.

root@kvm1:~# pcs resource disable gfs2_storage --wait=60
root@kvm1:~# fsck.gfs2 /dev/vg_cluster/lv_storage
root@kvm1:~# pcs resource enable gfs2_storage

Auch eine Erweiterung ist grundsätzlich online möglich. Zuerst wird das Logical Volume vergrößert und anschließend das GFS2-Dateisystem:

root@kvm1:~# lvextend --size +100G /dev/vg_cluster/lv_storage
root@kvm1:~# gfs2_grow /kvm/storage

Vor Änderungen am Storage sollten selbstverständlich ein aktuelles Backup, ein getesteter Recovery-Weg und eine dokumentierte Rückfallstrategie vorhanden sein.


 
 

KVM/QEMU und Libvirt installieren

Nach Cluster und Storage installieren wir die eigentliche Virtualisierung auf allen KVM-Nodes. Unter Debian 13 stellt das Paket qemu-system-x86 die x86-Systememulation und KVM-Nutzung bereit. Libvirt übernimmt die Verwaltung:

root@kvm1:~# apt-get install qemu-system-x86 qemu-utils \
                    libvirt-daemon-system libvirt-clients \
                    virtinst libguestfs-tools libosinfo-bin

Ein Administrationsbenutzer kann den Gruppen libvirt und libvirt-qemu hinzugefügt werden:

root@kvm1:~# adduser admin libvirt
root@kvm1:~# adduser admin libvirt-qemu
root@kvm1:~# virsh --connect qemu:///system list --all

virsh ist eines der wichtigsten Werkzeuge für die Verwaltung über Libvirt. Mit virsh list --all lässt sich sofort prüfen, ob die Verbindung zum lokalen Libvirt/QEMU-Stack funktioniert.



 
 

Virtuelles Netzwerk für die KVM-Gäste einrichten

Damit virtuelle Maschinen direkt mit dem LAN kommunizieren können, wird auf jedem KVM-Node eine Linux-Bridge eingerichtet. Die Bridge funktioniert aus Sicht der VMs ähnlich wie ein virtueller Ethernet-Switch. Die genaue Netzwerkkonfiguration hängt davon ab, ob Debian mit ifupdown, systemd-networkd, NetworkManager oder einer anderen Methode verwaltet wird.

Ein vereinfachtes Beispiel für /etc/network/interfaces mit einer Bridge br0:

auto br0
iface br0 inet static
        address 10.0.1.52/24
        gateway 10.0.1.210
        bridge_ports eno2
        bridge_stp off
        bridge_fd 0

Die IP-Adressen und das physische Interface müssen an die eigene Umgebung angepasst werden. In produktiven Umgebungen sollte die Bridge über redundante Links beziehungsweise ein passendes Bonding-Konzept angebunden sein.

Libvirt kann eine bereits vorhandene Host-Bridge direkt verwenden. Für die VMs genügt dann beispielsweise eine Netzwerkkonfiguration mit bridge=br0. Eine zusätzliche Libvirt-Network-Definition ist für eine normale externe Linux-Bridge nicht zwingend notwendig.

Damit ist die Grundkonfiguration des KVM-Nodes abgeschlossen und die erste virtuelle Maschine kann eingerichtet werden.



 
 

Die erste virtuelle Maschine mit virt-install einrichten

Da die KVM-Nodes ohne lokale GUI betrieben werden, kann eine VM komfortabel über virt-install angelegt werden. Das folgende Beispiel erstellt eine virtuelle Maschine mit 4 GByte RAM, zwei vCPUs, einer VirtIO-Netzwerkkarte und einer QCOW2-Disk auf dem gemeinsamen GFS2-Dateisystem:

admin@kvm1:~$ virt-install \
  --name testvm \
  --memory 4096 \
  --vcpus 2 \
  --cpu host-model \
  --disk path=/kvm/storage/testvm.qcow2,size=40,format=qcow2,bus=virtio \
  --network bridge=br0,model=virtio \
  --cdrom /data/iso/debian-13.iso \
  --graphics vnc,listen=127.0.0.1 \
  --osinfo detect=on,require=off

Für die grafische Installationskonsole kann VNC lokal auf dem KVM-Host gebunden werden. Der entsprechende Display-Port lässt sich über Libvirt ermitteln:

admin@kvm1:~$ virsh vncdisplay testvm

Aus Sicherheitsgründen sollte eine unverschlüsselte VNC-Konsole nicht pauschal auf allen Interfaces veröffentlicht werden. Eine einfache Möglichkeit für Administrationszwecke ist ein SSH-Tunnel vom Admin-PC zum KVM-Host:

admin@pc:~$ ssh -L 5901:127.0.0.1:5901 admin@kvm1

Der lokale VNC-Viewer verbindet sich anschließend mit 127.0.0.1:5901. Der VNC-Verkehr läuft damit durch den verschlüsselten SSH-Tunnel. In größeren Umgebungen sind zentral verwaltete Konsolenlösungen, SPICE oder eine fertige Managementplattform meist komfortabler.



 
 

Wichtige KVM- und Virsh-Befehle

Die wichtigsten Aufgaben lassen sich mit virsh erledigen. Die folgende Liste zeigt eine kleine Auswahl:

admin@kvm1:~$ virsh list --all
# Alle bekannten virtuellen Maschinen anzeigen

admin@kvm1:~$ virsh console <name>
# Textkonsole einer VM öffnen

admin@kvm1:~$ virsh shutdown <name>
# Gast sauber herunterfahren

admin@kvm1:~$ virsh start <name>
# VM starten

admin@kvm1:~$ virsh reboot <name>
# Gast neu starten

admin@kvm1:~$ virsh destroy <name>
# VM hart ausschalten – vergleichbar mit Power-Off

admin@kvm1:~$ virsh undefine <name>
# VM-Definition aus Libvirt entfernen

admin@kvm1:~$ virsh migrate --live <name> qemu+ssh://<node>/system
# Laufende VM auf einen anderen KVM-Node migrieren

Für eine Live-Migration müssen Quell- und Zielhost kompatible CPU-Features, passende QEMU-/Libvirt-Versionen, identische Netzwerke und Zugriff auf die benötigten VM-Daten besitzen. Bei gemeinsamem Storage müssen die virtuellen Platten nicht über das Migrationsnetz übertragen werden; hauptsächlich RAM- und Gerätezustand wechseln den Host.



 
 

Virtuelle Maschinen im HA-Cluster

Pacemaker kann virtuelle Maschinen als Cluster-Ressourcen verwalten. Sobald eine VM unter Kontrolle des Clusters steht, sollte sie nicht mehr unabhängig von Pacemaker gestartet oder gestoppt werden. Sonst interpretiert der Cluster einen manuellen Shutdown möglicherweise als Fehler und startet die VM erneut.

Eine Libvirt-VM kann über den Resource Agent VirtualDomain eingebunden werden. Die XML-Definition muss für alle Nodes an einem konsistenten Pfad verfügbar sein. Das folgende Beispiel zeigt das Grundprinzip:

admin@kvm1:~$ virsh dumpxml testvm > /kvm/storage/config/testvm.xml

root@kvm1:~# pcs resource create vm-testvm ocf:heartbeat:VirtualDomain \
                    config=/kvm/storage/config/testvm.xml \
                    hypervisor=qemu:///system \
                    migration_transport=ssh \
                    meta allow-migrate=true

Danach kann Pacemaker den Zustand der VM überwachen und sie bei Bedarf auf einem anderen Node starten oder – wenn alle Voraussetzungen erfüllt sind – live migrieren. Für automatischen Start und Failover müssen außerdem Abhängigkeiten zum Storage modelliert werden: Die VM darf erst starten, wenn Multipath, Shared LVM und GFS2 verfügbar sind.

Eine Ressource kann beispielsweise auf einen anderen Node verschoben werden:

root@kvm1:~# pcs resource move vm-testvm kvm2
root@kvm1:~# pcs resource clear vm-testvm

Das anschließende pcs resource clear entfernt die temporäre Move-Constraint wieder. Vor dem produktiven Einsatz müssen Failover, Fencing, Live-Migration und Wiederanlauf unter realistischen Lastbedingungen getestet werden.


 
 

Verbesserungen für einen produktiven KVM-Cluster

Das hier gezeigte Beispiel vermittelt die technischen Zusammenhänge, ist aber noch keine vollständige Virtualisierungsplattform. Im täglichen Betrieb entstehen schnell zusätzliche Anforderungen: zentrale Übersicht aller VMs, rollenbasierte Administration, Console-Zugriff, Templates, Backup, Monitoring, Alarmierung, automatisierte Updates und ein nachvollziehbares Lifecycle-Management.

Auch Netzwerk und Storage sollten weiter optimiert werden. Dazu gehören redundante Switches und NICs, getrennte Cluster- und Storage-Netze, Multipath, ein getestetes Fencing-Konzept, Monitoring der Storage-Latenzen sowie klare Regeln für CPU-Kompatibilität und Live-Migration.

Besonders wichtig ist das Backup: Ein HA-Cluster ist kein Backup. Hochverfügbarkeit schützt vor bestimmten Host-Ausfällen, nicht vor versehentlichem Löschen, logischen Fehlern, Ransomware oder beschädigten Daten innerhalb einer VM. Deshalb benötigt auch ein KVM-Cluster eine eigenständige, regelmäßig getestete Backup- und Restore-Strategie.

Für eine selbst aufgebaute KVM-Plattform ist das eigene Know-how entscheidend. Wer die Flexibilität einer individuellen Lösung nutzen möchte, muss Betrieb, Dokumentation und Fehleranalyse dauerhaft beherrschen. Wer eine integrierte Oberfläche und fertige Betriebsfunktionen bevorzugt, sollte Lösungen wie Proxmox VE als KVM-basierte Virtualisierungsplattform in den Vergleich einbeziehen.


 
 

FAQ zu KVM-Clustern

Was ist ein KVM-Cluster?

Ein KVM-Cluster besteht aus mehreren Linux-Hosts, die virtuelle Maschinen mit KVM/QEMU betreiben und über gemeinsame Cluster-Funktionen verwaltet werden. Je nach Architektur können Pacemaker und Corosync Hochverfügbarkeit, Ressourcensteuerung und Quorum übernehmen. Ein Cluster kann Wartungsarbeiten und Host-Ausfälle besser abfangen, ersetzt aber kein Backup.

Was ist der Unterschied zwischen KVM, QEMU und Libvirt?

KVM stellt die hardwaregestützte Virtualisierung im Linux-Kernel bereit. QEMU emuliert beziehungsweise virtualisiert die benötigte virtuelle Hardware und nutzt KVM zur Beschleunigung. Libvirt bildet darüber eine einheitliche Verwaltungsebene und stellt unter anderem das Kommandozeilenwerkzeug virsh sowie APIs für Management-Lösungen bereit.

Welche Linux-Distribution eignet sich für einen KVM-Cluster?

KVM funktioniert mit vielen Linux-Distributionen. Wichtig sind stabile Kernel-, QEMU-, Libvirt- und Cluster-Pakete sowie ein nachvollziehbarer Update- und Support-Zyklus. Alle Cluster-Nodes sollten möglichst dieselbe Distribution und Versionslinie verwenden. Das Beispiel auf dieser Seite basiert auf Debian 13 „Trixie“.

Kann ein KVM-Cluster mit zwei Nodes betrieben werden?

Ja. Moderne Corosync-/Pacemaker-Konfigurationen unterstützen Zwei-Node-Cluster. Bei zwei Nodes ist ein zuverlässiges Fencing besonders wichtig, weil bei einer Kommunikationsunterbrechung verhindert werden muss, dass beide Seiten gleichzeitig auf gemeinsam genutzte Ressourcen schreiben. Drei Nodes vereinfachen viele Quorum-Szenarien und bieten zusätzliche Reserven für Wartung.

Brauche ich Shared Storage für einen KVM-Cluster?

Nicht für jede KVM-Cluster-Architektur. Für das hier beschriebene GFS2-Konzept wird blockbasierter Shared Storage benötigt, auf den alle Nodes zugreifen können. Alternativen sind beispielsweise NFS, replizierter Storage oder verteilte Systeme wie Ceph. Für Live-Migration und HA muss in jedem Fall sichergestellt sein, dass der Zielhost auf konsistente VM-Daten zugreifen kann.

Warum benötigt GFS2 einen Distributed Lock Manager?

Mehrere Cluster-Nodes greifen bei GFS2 gleichzeitig auf dasselbe Blockdevice zu. Der Distributed Lock Manager koordiniert Sperren zwischen den Hosts und verhindert, dass konkurrierende Zugriffe Dateisystemstrukturen unkontrolliert verändern. Zusammen mit Quorum und Fencing ist DLM deshalb ein zentraler Bestandteil eines sicheren GFS2-Clusters.

Was ist Fencing beziehungsweise STONITH?

Fencing isoliert einen fehlerhaften oder nicht eindeutig erreichbaren Cluster-Node zuverlässig von gemeinsam genutzten Ressourcen. STONITH ist der in Pacemaker gebräuchliche Begriff dafür. Typische Verfahren verwenden IPMI, iDRAC, iLO, PDUs oder Storage-basierte Mechanismen. Ohne funktionierendes Fencing besteht bei Shared Storage die Gefahr von Split Brain und Datenkorruption.

Wie funktioniert Live-Migration im KVM-Cluster?

Bei einer Live-Migration wird eine laufende VM von einem Host auf einen anderen verschoben. Dafür benötigen die Hosts kompatible CPU-Features, passende QEMU-/Libvirt-Versionen, dieselben virtuellen Netzwerke und Zugriff auf die VM-Datenträger. Bei gemeinsamem Storage bleiben die virtuellen Platten am gleichen Ort; übertragen werden hauptsächlich Arbeitsspeicher und Gerätezustand.

Sind Snapshots ein Ersatz für ein Backup?

Nein. Snapshots eignen sich für kurzfristige Zustände vor Tests oder Updates, sind aber kein unabhängiges Backup. Lange Snapshot-Ketten können Performance und Verwaltung verschlechtern. Für den Schutz vor Datenverlust werden getrennte Backups mit definierten Aufbewahrungszeiten und regelmäßig getesteten Restore-Prozessen benötigt.

KVM selbst aufbauen oder Proxmox VE einsetzen?

Eine selbst aufgebaute KVM-Umgebung bietet maximale Flexibilität, verlangt aber viel eigenes Linux-, Storage- und Cluster-Know-how. Proxmox VE nutzt ebenfalls QEMU/KVM, integriert jedoch Management, Cluster, HA, Storage und weitere Betriebsfunktionen in einer fertigen Plattform. Welche Variante wirtschaftlicher ist, hängt von Anforderungen, Personal, Supportbedarf und vorhandener Infrastruktur ab.

Wie debugge ich eine fehlgeschlagene VM-Migration?

Zuerst sollten CPU-Kompatibilität, QEMU-/Libvirt-Versionen, Netzwerk, Firewall, MTU, Storage-Zugriff und die VM-Konfiguration geprüft werden. Hilfreich ist ein Minimaltest mit einer kleinen VM ohne Passthrough oder Spezialhardware. Wenn diese migriert werden kann, liegt die Ursache häufig in einer besonderen VM-Komponente oder einer Host-Abweichung.

 
 

Angebote der Stor IT Back zum Thema Kernel Virtual Machine im Cluster unter Linux

Angebot Dell EMC ME5 Serie / ME5212 ME5224 ME5284
Dell EMC ME52xx Serie iSCSI, FC, SAS
Dual-RAID-Controller, Block-Storage

10/25 Gbit/s iSCSI, 16/32 Gbit/s FC, 12 Gbit/s SAS zum Host
Replikation, Tiering, Thin Provisioning
Preis
auf Anfrage
Proxmox VE auf Lenovo-Servern
Proxmox VE Virtualisierung
QEMU/KVM und LXC (Linux Containers)

auf Lenovo Servern
Single Server bis HA-Umgebung
ab 4.155,00 Euro
zzgl. MwSt.
Schulungen für Storage und Backup
Schulungen und Workshops
Storage (SAN, NAS, iSCSI)
Backup (LAN-free, Snapshot)
Storage- und Server-Virtualisierung
Praxis-Schulungen
individuell / auch vor Ort
 
 
Zurück zur Übersicht
KVM im Cluster Virtualisierung unter Linux
Übersicht der Angebote
Kontakt zur Stor IT Back
Suche auf der Webseite