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 IDHostnameRole
1TreebeardMain hypervisor (all production VMs & ZFS pool)
2AragornGoing away – VMs are migrating to Treebeard
3SamwiseTiny 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

  1. Evacuate VMs from Aragorn and power it down.
  2. Delete Aragorn from cluster membership.
  3. Temporarily lower expected votes so the cluster doesn’t lose quorum when Samwise goes offline.
  4. Power off Samwise and delete it from the cluster.
  5. Convert Treebeard to a non‑clustered node.
  6. Boot Samwise and do the same surgery.
  7. 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

  1. Boot Samwise (it’ll complain about quorum).
  2. 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

HostCluster?Runs CorosyncWhat It Runs
TreebeardNoNoAll production VMs
SamwiseNoNoFlight‑Radar VM
AragornPowered 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! ✨

Copyright © 2025 Ariejan de Vroom

Validate HTML5