Proxmox VEXII · High AvailabilityHA limits
When HA cannot save you
What you'll learn
- Identify failure modes that HA cannot recover from
- Recognise the capacity-based failure
- Recognise the storage-based failure
- Plan around HA limitations
Prerequisites
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
Why this matters in production
HA is not magic. There are concrete scenarios where HA fails to recover a workload, and the operator needs to know what to do instead. This lesson enumerates them.
Failure mode 1: No capacity for failover
If a node fails and the surviving nodes cannot host the failed node’s VMs (because of RAM, vCPU, or storage limits), HA places the VMs in error state.
flowchart LR
A[Node A fails] --> B[CRM tries to recover VMs]
B --> C[Survivors have capacity?]
C -->|yes| D[VMs restart on survivors]
C -->|no| E[VMs in error state]
The arithmetic, so it is not a feeling
“We have headroom” is a belief until someone computes it. The computation is short, and the number it produces is the one that belongs in the capacity review.
set -euo pipefail
TOTAL_ALLOC=0
declare -A NODE_ALLOC
for NODE_DIR in /etc/pve/nodes/*; do
NODE=$(basename "$NODE_DIR")
SUM=0
for CONF in "$NODE_DIR"/qemu-server/*.conf "$NODE_DIR"/lxc/*.conf; do
[ -e "$CONF" ] || continue
MEM=$(awk '/^memory:/{print $2; exit}' "$CONF")
SUM=$(( SUM + ${MEM:-512} ))
done
NODE_ALLOC["$NODE"]=$SUM
TOTAL_ALLOC=$(( TOTAL_ALLOC + SUM ))
printf '%-12s %6d MiB allocated to guests\n' "$NODE" "$SUM"
done
# Physical memory per node, for comparison.
pvesh get /cluster/resources --type node --output-format yaml \
| grep -E 'node:|maxmem:|mem:'
printf '\ntotal allocated across cluster: %d MiB\n' "$TOTAL_ALLOC"
echo 'Headroom test: (sum of all nodes physical) - (largest node physical)'
echo ' must exceed TOTAL_ALLOC, with room for the host itself.'Three refinements that turn the number from arithmetic into a plan:
- Use configured, not used, memory. A VM with
memory: 32768using 4 GiB still needs 32 GiB allocatable on the target unless ballooning is in play. HA places on what it must allocate. - Subtract the host’s own footprint. Ceph OSDs in particular are not small; a node running OSDs has materially less memory available for guests than its physical total.
- Do it for the largest node, not the average. N+1 means surviving the loss of whichever node hurts most, and that is rarely the one you pictured.
The same reasoning applies to CPU, and to storage IOPS. Memory is the one that
produces a hard failure - error state, guest does not start - which is why it
is the one to compute first.
Failure mode 2: Shared storage is gone
HA requires the VM’s disk to be reachable from a surviving node. If shared storage is unreachable, HA cannot restart the VM.
| Scenario | HA behaviour |
|---|---|
| NFS server down | HA cannot start VMs |
| Ceph cluster down | HA cannot start VMs |
| iSCSI SAN down | HA cannot start VMs |
Recovery: restore the storage first, then manually start the VMs.
Failure mode 3: Network partition
If a network partition isolates the failed node from the survivors AND the QDevice (if any), the CRM may not be able to fence the node. HA waits.
Recovery requires restoring network connectivity. No automatic recovery.
Failure mode 4: HA itself fails
The HA manager (CRM) runs on a single node. If that node has a software issue, HA becomes unavailable. The next node’s CRM takes over after a timeout.
Failure mode 5: Cascading failures
If a node fails and the additional load on survivors causes them to fail too, HA cannot recover. This is the worst-case scenario.
flowchart LR
A[Node A fails] --> B[Survivors overloaded]
B --> C[Survivor B fails]
C --> D[Survivor C overwhelmed]
D --> E[Cascade]
Prevention: keep cluster utilisation well below the threshold that triggers a cascade. N+1 headroom that includes the failed node’s full workload is mandatory.
Failure mode 6: HA rules prevent recovery
Strict HA rules can prevent recovery. If a VM’s strict rule lists only one node, and that node fails, the VM enters error state.
Recovery: relax the rule, manually move the VM, or rebuild.
Failure mode 7: Watchdog misconfiguration
If the watchdog is not configured (or misconfigured), self-fencing may not happen. A wedged node may come back online and confuse the cluster.
Verify the watchdog:
ls -la /dev/watchdog && cat /etc/default/pve-ha-manager
Note what that check does not rely on: systemctl status watchdog-mux
reports active (running) on a node with no watchdog device at all, which is
why the device test is the one that can fail. The full incident is worked
through in
anatomy of a bad fence.
Failure mode 8: everything HA was never for
Worth stating separately because it is the largest category by incident count, and because HA’s name invites the confusion.
| Event | Does HA help? | What does |
|---|---|---|
| Someone deletes a database table | No | Backup with retention |
| Ransomware encrypts the guests | No | Immutable offsite backup |
| A bad deploy breaks the application | No | Application rollback |
| Guest filesystem corruption | No - it restarts the corrupt guest | Restore |
| A guest OOMs repeatedly | No - it restarts it, repeatedly | Right-sizing |
| Site loss | No | DR |
| Certificate expiry across the estate | No | Monitoring |
| A single node’s hardware dies | Yes | This is the one |
HA addresses exactly one failure: a host stops. Everything else on that list is someone else’s job, and an estate that has bought HA and believes it has bought resilience is one deletion away from finding out.
Production considerations
Common mistakes
- Believing HA is “automatic” and never testing.
- Sizing at >80% utilisation.
- Forgetting the watchdog configuration.
Key takeaways
- HA fails when survivors lack capacity.
- HA fails when shared storage is unreachable.
- HA fails when the watchdog is misconfigured.
- Plan runbooks for these scenarios.
Knowledge check
Knowledge check · 5 questions
Q1. When does HA fail to recover a workload due to capacity?
Q2. A shared storage failure defeats HA even if compute nodes are healthy.
Q3. What is the most important prerequisite for HA recovery?
Q4. A guest starts, runs for thirty seconds, and dies - repeatedly. What does HA do, and why is it unhelpful?
Q5. Which of these does HA NOT protect against? Select all that apply.
Passing score: 75%. Answers are checked in this browser.