Verified against Proxmox VE 9.2.4 · Proxmox Backup Server 4.2.5 · Ceph Squid / Tentacle · Debian 13 (Trixie) · Linux kernel 7.0 (PVE 9.2 default) · 2026-08-12
○Not yet marked complete on this device.
Why this matters in production
HA in Proxmox is not magic. It is a state machine implemented by two daemons plus a
watchdog. Understanding the state machine is essential for diagnosing HA incidents.
The two daemons
Daemon
Role
Where it runs
pve-ha-crm
Cluster Resource Manager — makes cluster-wide decisions
One node at a time (master)
pve-ha-lrm
Local Resource Manager — executes actions on the local node
Every node
sequenceDiagram participant Master as CRM (master node) participant LRM1 as LRM (node 1) participant LRM2 as LRM (node 2) participant LRM3 as LRM (node 3) Master->>LRM1: start vm:100 LRM1-->>Master: started Note over Master,LRM2: Node 1 fails Master->>LRM1: stop vm:100 (no reply) Master->>LRM1: fence node 1 Master->>LRM2: start vm:100 LRM2-->>Master: started
The CRM (Cluster Resource Manager)
The CRM:
Runs on one node at a time (the master, holding the manager lock).
Tracks the desired state of every HA-managed resource.
Sends commands to LRMs.
Decides which node should run which resource.
Manages fencing.
The CRM uses pmxcfs for distributed locking. The master lock is held by one CRM at a
time; if the master fails, another CRM takes over.
The LRM (Local Resource Manager)
The LRM runs on every node. It:
Reads the requested state for its resources from manager_status.
Executes the corresponding qm or pct commands.
Reports results back to the CRM.
LRMs also hold an “agent lock” in pmxcfs. If the lock is lost, the LRM shuts down its
resources (to prevent split-brain).
Fencing — preventing split-brain
Fencing ensures that a failed node can never come back online and run the same VMs as a
surviving node. Without fencing, both nodes might believe they own the resource.
Proxmox uses self-fencing via watchdog:
The CRM detects that a node has not sent heartbeats.
The CRM waits for the agent lock on that node to be released (a healthy LRM releases
the lock when it loses quorum).
If the lock is not released, the CRM assumes the node is wedged.
The watchdog on the wedged node triggers a reboot.
The watchdog is hardware-based if available (IPMI watchdog, iTCO_wdt, etc.) or
software-based (Linux softdog) as a fallback.
cat /etc/default/pve-ha-manager && ls -la /dev/watchdog
ha-manager status
Recovery sequence
sequenceDiagram participant N1 as Failed node participant N2 as Surviving node participant W as Watchdog Note over N1: Node stops responding N2->>N2: CRM waits for LRM lock release N2->>W: Lock not released, trigger watchdog on N1 W->>N1: Reboot N1->>N1: Booting... Note over N1: Node loses lock, resources stopped N2->>N2: CRM selects new host for affected VMs N2->>N2: LRM starts VMs on new host
Interactive HA simulator
🛡Interactive · HA Behaviour Simulator
Click a node to mark it as failed. Watch how the cluster resource manager (CRM) steals the
HA-managed VMs and restarts them on a surviving node. Note the watchdog state — if quorum is lost, the watchdog triggers a self-reset on the failed node.
Cluster nodes
HA-managed VMs (current placement)
VMID
Name
Preferred
Current node
State
101
web-01
pve-01
pve-01
started
102
db-01
pve-02
pve-02
started
103
app-01
pve-03
pve-03
started
104
util-01
pve-01
—
stopped
Cluster Resource Manager
CRM master
pve-01
Watchdog
armed
Quorate
yes
All nodes healthy. HA is idle; the CRM watchdog is armed but not
triggering.
The simulator shows what happens to VMs as nodes fail and the CRM/LRM react. Note:
The CRM “steals” services from failed nodes.
VMs restart on survivors.
The watchdog state changes from armed to disarming when a node fails.
Watchdog configuration
Configuration change— Configure the hardware watchdog.
Server boards commonly expose an IPMI watchdog; Intel chipsets expose
iTCO_wdt. Confirm which module your hardware actually provides before
setting the value - naming a module that does not load leaves the node with
no watchdog at all, and every service-level health check still passes.
Read-only / Safefind out which watchdog this hardware has, before configuring one— Read-only. Run it on each node type in the estate; the answer differs by server generation, which is how a runbook written for the previous generation leaves a cluster unfenceable.
set -euo pipefail
# What watchdog drivers does this kernel offer for this hardware?
ls /sys/class/watchdog/ 2>/dev/null || echo 'no watchdog class entries'
for W in /sys/class/watchdog/watchdog*; do
[ -e "$W" ] || continue
printf '%s: ' "$(basename "$W")"
cat "$W/identity" 2>/dev/null || echo unknown
done
# What is loaded now, and what is configured?
lsmod | grep -iE 'wdt|softdog|watchdog' || echo 'no watchdog module loaded'
cat /etc/default/pve-ha-manager
systemctl is-active watchdog-mux
Production considerations
Common mistakes
Not configuring a hardware watchdog.
Running clusters at >80% utilisation (no HA failover room).
Misconfigured shared storage (HA cannot restart VMs if storage is gone).
Key takeaways
CRM makes cluster-wide decisions; LRM executes locally.
Watchdog prevents split-brain via self-fencing.
Capacity headroom is mandatory.
Knowledge check
Knowledge check · 5 questions
Q1. What role does the CRM play?
Q2. Proxmox HA needs shared or distributed storage before it can restart a VM on another node.
Q3. Which mechanism prevents split-brain in Proxmox HA?
Q4. Why does the CRM wait to acquire a failed node’s agent lock rather than pinging the node or querying its IPMI?
Q5. Which statements about the fencing delay and the watchdog are correct? Select all that apply.
Passing score: 75%. Answers are checked in this browser.