Downsizing a Proxmox VE Cluster: From Three Nodes to Two Stand‑Alone Hosts
Background
Over time I’ve accumulated quite a bit of hardware for my homelab. I started with a three‑node Proxmox VE setup:
Node ID | Hostname | Role |
---|---|---|
1 | Treebeard | Main hypervisor (all production VMs & ZFS pool) |
2 | Aragorn | Going away – VMs are migrating to Treebeard |
3 | Samwise | Tiny SFF box; runs a single Flight‑Radar VM |
With Aragorn about to be decommissioned, there’s no real benefit in keeping the two survivors in a formal Corosync cluster. Stand‑alone nodes are simpler to maintain and upgrade.
Note that I’m not running Ceph or any high available vms.
High‑Level Plan
- Evacuate VMs from Aragorn and power it down.
- Delete Aragorn from cluster membership.
- Temporarily lower expected votes so the cluster doesn’t lose quorum when Samwise goes offline.
- Power off Samwise and delete it from the cluster.
- Convert Treebeard to a non‑clustered node.
- Boot Samwise and do the same surgery.
- Finish with some housekeeping (ssh keys, backup jobs, etc.).
Prerequisites & Warnings
- Back up your VMs and
/etc/pve/
first. - You’ll restart
corosync
/pmxcfs
twice per node; plan a short maintenance window. - If you use Ceph, remove/mark‑out OSDs on the retiring node before step 1.
Step 1 – Evacuate & Retire Aragorn
# on Treebeard
pvecm status # note Aragorn’s NodeID
# In the UI or CLI:
# – Live‑migrate any running guests to Treebeard
# – Or shut them down and do an offline migration
# Power off Aragorn once empty
ssh aragorn 'shutdown -h now'
Step 2 – Delete Aragorn from the Cluster
# still on Treebeard
pvecm delnode aragorn
# If it lingers in the GUI:
rm -rf /etc/pve/nodes/aragorn
At this point the cluster consists of Treebeard + Samwise (2 votes, 2 expected votes).
Step 3 – Lower Quorum Expectation (Temporary)
Before knocking Samwise offline, tell Corosync to expect only one vote so you keep quorum:
# on Treebeard
pvecm expected 1
This change lasts until Corosync restarts.
Step 4 – Remove Samwise
ssh samwise 'shutdown -h now' # power off Samwise
# back on Treebeard
pvecm delnode Samwise
Now Treebeard is the sole cluster member.
Step 5 – Convert Treebeard to Stand‑Alone
systemctl stop pve-cluster corosync
pmxcfs -l # start pmxcfs in local mode
rm /etc/pve/corosync.conf
rm -rf /etc/corosync/*
killall pmxcfs
systemctl start pve-cluster # pmxcfs now standalone
systemctl disable corosync
Refresh the web UI – only Treebeard should appear under Datacenter.
Step 6 – Convert Samwise the Same Way
- Boot Samwise (it’ll complain about quorum).
- Run the identical block of commands:
systemctl stop pve-cluster corosync
pmxcfs -l
rm /etc/pve/corosync.conf
rm -rf /etc/corosync/*
killall pmxcfs
systemctl start pve-cluster
systemctl disable corosync
Samwise is now a stand‑alone Proxmox host running its Flight‑Radar VM.
Step 7 – Housekeeping
Backups & Replication – Remove jobs aimed at the old nodes (
Datacenter → Backup / Replication
).SSH Known Hosts – Clean up fingerprints:
sed -i '/Aragorn\|Samwise/d' ~/.ssh/known_hosts
Result
Host | Cluster? | Runs Corosync | What It Runs |
---|---|---|---|
Treebeard | No | No | All production VMs |
Samwise | No | No | Flight‑Radar VM |
Aragorn | Powered off / recycled |
Two clean, independent Proxmox servers—no quorum worries, simpler upgrades, and one less box drawing power.
Gotchas & Recovery
If you ever need to re‑cluster, just run pvecm create
on Treebeard and pvecm add
from Samwise. In an emergency where the single node’s pmxcfs
misbehaves, remember you can always start it in local mode with pmxcfs -l
to regain GUI access.
Happy homelabbing! ✨