Corosync Disaster Recovery in Proxmox VE (How-To)

In diesem Artikel erfahren Sie, wie Sie ein Proxmox-VE-Cluster nach einem schwerwiegenden Corosync-Konfigurationsfehler oder vollständigen Quorum-Verlust wiederherstellen, indem Sie das Cluster-Dateisystem (pmxcfs) im lokalen Modus starten und eine korrigierte corosync.conf synchronisieren.

Wichtiger Sicherheitshinweis & Haftungsausschluss

Achtung: Eingriffe in das Proxmox Cluster Filesystem (pmxcfs) und die Corosync-Konfigurationsdateien greifen direkt in die Quorum- und Konsenslogik des Clusters ein. Fehlerhafte Syntax oder unvollständige Node-Definitionen können zum vollständigen Stillstand des Clusters und zu HA-Fencing (Watchdog-Reboots) führen. Erstellen Sie vor der Durchführung zwingend ein lokales Backup der aktuellen Konfigurationsdateien.

Haftungsausschluss: Für die Korrektheit, Vollständigkeit und Aktualität dieses Beitrags sowie der bereitgestellten Befehle wird keine Garantie oder Gewährleistung übernommen. Die Durchführung aller Schritte erfolgt ausdrücklich auf eigene Gefahr und eigenes Risiko.

Hintergrund: Die Blockade durch Quorum-Verlust in pmxcfs

Proxmox VE nutzt das Proxmox Cluster Filesystem (pmxcfs) unter /etc/pve/, um Konfigurationsdateien, VM-Zuweisungen und Cluster-Zustände synchron über alle Knoten bereitzustellen. Das Dateisystem ist über eine SQLite-Datenbank realisiert und eng an den Konsensdienst Corosync gekoppelt.

Kommt es durch Netzwerk-Umkonfigurationen, fehlerhafte IP-Adressen oder Syntaxfehler in corosync.conf zu einem Ausfall der Corosync-Kommunikation, verliert das Cluster sein Quorum. In diesem Zustand versetzt pmxcfs das gesamte Verzeichnis /etc/pve/ in einen Read-Only-Modus.

Hieraus entsteht eine typische Blockadesituation:

  • Die Datei /etc/pve/corosync.conf kann im normalen Betrieb nicht editiert werden, da das Dateisystem schreibgeschützt ist.
  • Corosync kann nicht starten oder Quorum erlangen, solange die fehlerhafte Konfiguration in /etc/pve/ liegt.

Die Lösung für dieses Disaster-Recovery-Szenario besteht darin, pmxcfs im lokalen Modus (pmxcfs -l) zu starten. In diesem Modus arbeitet pmxcfs ohne Corosync-Bindung und erlaubt direkte Schreibzugriffe auf die lokale SQLite-Datenbank.


Vorbereitung: Korrigierte corosync.conf bereitstellen

Erstellen oder bearbeiten Sie vorab eine intakte Konfigurationsdatei (z. B. unter /root/correct_corosync.conf). Achten Sie darauf, dass alle Knotennamen, IDs und IP-Adressen (ring0_addr) der aktuellen Netzwerk-Topologie entsprechen.

Zwingend erforderlich: Inkrementieren der config_version

Innerhalb der Datei corosync.conf existiert im Block totem der Parameter config_version. Dieser Zähler muss zwingend um mindestens 1 erhöht werden (z. B. von 3 auf 4). Achten Sie darauf, nicht die Protokoll-Option version: 2 (welche unverändert bleibt) zu bearbeiten, sondern explizit config_version:

totem {
  cluster_name: pve-cluster
  config_version: 4
  ip_version: ipv4-6
  secauth: on
  version: 2
  interface {
    linknumber: 0
  }
  interface {
    linknumber: 1
  }
}

Schritt 1: Corosync und pve-cluster auf allen Nodes stoppen

Um Konflikte und Sperren zu vermeiden, stoppen Sie die Dienste corosync und pve-cluster auf allen Knoten des Clusters:

root@pve:~# systemctl stop corosync pve-cluster

Damit sind die Hintergrund-Dämonen vollständig angehalten und der Zugriff auf das Cluster-Dateisystem ist vorübergehend freigegeben.


Schritt 2: pmxcfs im lokalen Modus starten

Starten Sie das Proxmox Cluster Filesystem nun manuell mit dem Parameter -l (Local Mode) auf den betroffenen Knoten:

root@pve:~# pmxcfs -l

Wirkung: Das Verzeichnis /etc/pve/ wird gemountet und ist ab sofort voll beschreibbar, ohne dass ein Corosync-Quorum vorausgesetzt wird.


Schritt 3: Korrigierte Corosync-Konfiguration einspielen

Kopieren Sie die vorbereitete, korrigierte Konfigurationsdatei sowohl in das Cluster-Dateisystem als auch in das lokale Corosync-Verzeichnis:

root@pve:~# cp correct_corosync.conf /etc/pve/corosync.conf
root@pve:~# cp correct_corosync.conf /etc/corosync/corosync.conf

Hintergrund der beiden Pfade:

  • /etc/pve/corosync.conf: Speichert die Konfiguration in der SQLite-Datenbank des Cluster-Dateisystems.
  • /etc/corosync/corosync.conf: Dient dem Corosync-Daemon als lokale Konfigurationskopie beim Systemstart.

Schritt 4: Lokalen pmxcfs-Prozess beenden

Nachdem die Dateien geschrieben wurden, beenden Sie den manuell im lokalen Modus gestarteten Prozess:

root@pve:~# killall pmxcfs

Damit wird das temporäre lokale Mounten von /etc/pve/ beendet, sodass der reguläre Systemd-Dienst pve-cluster wieder die saubere Verwaltung übernehmen kann.


Schritt 5: Cluster-Dienste regulär starten

Starten Sie nun auf allen Knoten die Dienste in der korrekten Reihenfolge wieder:

root@pve:~# systemctl start pve-cluster corosync

Zuerst initialisiert pve-cluster das Cluster-Dateisystem mit der neuen Konfiguration, woraufhin corosync die Kommunikation und das Quorum wiederherstellt.


Schritt 6: Status & Logs verifizieren

Prüfen Sie unmittelbar nach dem Start die System-Logs der letzten fünf Minuten sowie den aktuellen Cluster-Status:

1. Systemd-Journal abfragen

root@pve:~# journalctl --since '-5min' -u pve-cluster -u corosync

Achten Sie darauf, dass keine Fehlermeldungen bezüglich ungültiger Schlüssel oder abgelehnter Verbindungen auftreten.

2. Cluster-Quorum prüfen

root@pve:~# pvecm status

Die Ausgabe bestätigt ein vollständig synchronisiertes und handlungsfähiges Cluster:

Cluster information
-------------------
Name:             pve-cluster
Config Version:   4
Transport:        knet
Secure auth:      on

Quorum information
------------------
Date:             Mon Sep 14 13:40:00 2026
Quorum provider:  corosync_knet
Nodes:            3
Node ID:          0x00000001
Ring ID:          1.4
Quorate:          Yes

Votequorum information
----------------------
Expected votes:   3
Highest expected: 3
Total votes:      3
Quorum:           2  
Flags:            Quorate 

Befehlsübersicht (Cheatsheet)

Aktion CLI-Befehl Zweck
1. Dienste stoppen systemctl stop corosync pve-cluster Stoppt Dämonen clusterweit für wartungsfreien Dateizugriff
2. Lokaler Modus pmxcfs -l Startet pmxcfs ohne Quorum-Prüfung schreibbar
3. Sync Konfiguration cp correct_corosync.conf /etc/pve/corosync.conf
cp correct_corosync.conf /etc/corosync/corosync.conf
Spielt korrigierte Datei mit erhöhter config_version ein
4. Lokales pmxcfs beenden killall pmxcfs Gibt Dateisystem für Systemd-Dienst frei
5. Cluster-Start systemctl start pve-cluster corosync Startet reguläre Cluster-Dienste in richtiger Reihenfolge
6. Verifikation journalctl --since '-5min' -u pve-cluster -u corosync
pvecm status
Prüft Journal-Logs und Quorum-Status (Quorate: Yes)

Fazit

Der lokale Modus von pmxcfs ist das entscheidende Rettungswerkzeug, um zirkuläre Abhängigkeiten bei fehlerhaften Corosync-Konfigurationen aufzulösen. Durch das gezielte Stoppen der Dienste, das Einspielen der korrigierten corosync.conf mit erhöhter config_version und den geordneten Neustart kann das Cluster innerhalb weniger Minuten ohne Datenverlust wieder in den produktiven Status überführt werden.

ProxForge Proxmox Experte

Sie benötigen Unterstützung bei Ihrem Proxmox VE Cluster?

Direkter Experten-Support, Audits und zertifizierte Trainings für Ihr IT-Team.

Proxmox VE & Corosync Support

Ob akute Split-Brain-Situationen, Corosync-Wiederherstellung, Cluster-Neustrukturierung oder ganzheitliche Enterprise-Audits: Unsere Spezialisten unterstützen Ihr IT-Team schnell, praxisnah und auf Augenhöhe.