VM processes stall when rebooting adjacent node — fix it in a two-node Proxmox cluster

VM processes stall when rebooting an adjacent node in a two-node Proxmox cluster because of corosync quorum loss and fence delays. Here's how to fix it without just waiting it out.

Why it stalls
In a two-node setup, when one node reboots, the remaining node loses quorum. Corosync expects at least two votes, and with only one left, it freezes all HA-managed services. The VMs don't actually crash—they just hang there, stuck, until the other node comes back or the fence kicks in. And the default fence delay is way too damn long.
Test it yourself
Don't guess. Reboot one node and watch what happens on the other. Run this on the surviving node:
watch -n 1 'ha-manager status; pvecm status'You'll see the VMs go into a "fence" state and just sit there. That's the stall. If you're not using HA, you might still see weirdness if the VMs have any cluster dependencies—like shared storage that briefly disappears.
The quick fix: lower fence delay
The dumbest part is the default fence delay. It's set to something like two minutes, which is an eternity when you're staring at a frozen VM. Cut it down to 30 seconds or less. Edit /etc/pve/ha/fence.cfg on any node:
fence: default
delay 30Then restart the HA services:
systemctl restart pve-ha-lrm pve-ha-crmNow when a node goes down, the fence triggers faster and the VMs get unfrozen sooner. Still not instant, but way less painful.

If you don't need HA, disable it
Honestly, for a two-node homelab, HA is often more trouble than it's worth. If you're not running critical services that need automatic failover, just turn it off. Remove all resources from HA and stop the services:
systemctl stop pve-ha-lrm pve-ha-crm
systemctl disable pve-ha-lrm pve-ha-crmNo HA, no quorum headaches. Your VMs will still run fine, they just won't try to fence or migrate when a node reboots. Simple.
Give the second node a second vote
Another option: give the remaining node two votes so it can maintain quorum alone. This is a bit hacky but works. Edit /etc/pve/corosync.conf and set quorum_votes: 2 for each node. Then restart corosync:
systemctl restart corosyncNow a single node can reach quorum by itself. The downside? If the other node comes back and they split-brain, you might have a mess. But for a quick test or a lab where you don't care, it's fine.
My take
This is one of those things that makes two-node clusters a pain in the ass. The "right" fix is a third node or a QDevice, but who has spare hardware just for quorum? I'd lower the fence delay and call it a day. If you really need HA, look into a QDevice on a Raspberry Pi—there's a post on thin provisioning that might give you ideas for keeping it lightweight. But for most homelabs, just disable HA and move on.