Affiliate disclosure: Some links in this guide earn us a commission at no extra cost to you. We only recommend hardware we'd run ourselves. Read our full disclosure.

Is Ceph worth it? (the honest test)

Answer one question: when a node dies, does the lab keep serving, or do you accept downtime? If downtime is acceptable, stop here — a ZFS mirror per node (our Proxmox build guide covers that topology) is simpler and faster on light hardware. Ceph is for the 3+ node design where HA is the point, and where the VMware exit already committed you to a cluster mindset.

The payoffs that make it worth it in 2026: live migration between any two nodes without shared NAS vendor lock, self-balancing storage that absorbs a new node overnight, and recovery that starts the second hardware returns. The costs: RAM, network, and a debugging rabbit-hole you enter whenever you deviate from defaults.

The 3-node hardware recipe

Symmetry is the design principle — same OSD count, same sizes, same NICs per node:

Component Budget node (~$700) Comfort node (~$1,100)
CPURyzen 5 8600G / i5-12400 (6c, IOMMU)Ryzen 9 7900 / i5-13500 (12-14c)
RAM32GB DDR564GB DDR5 ECC-optional
OS/boot500GB SATA/NVMe (Proxmox ZFS mirror optional)2x 500GB NVMe ZFS mirror
Ceph OSDs2x 2TB NVMe (990 Pro / WD SN850X class)2x 4TB NVMe + small WAL/DB NVMe
Network2x 10G SFP+ (Intel X520/X710 or Mellanox ConnectX-3/4)2x 10/25G SFP+ (dedicated Ceph fabric nic)

RAM rule of thumb: ~1GB per 1TB of OSD plus 4-6GB monitor/manager overhead per node. Cores before RAM is wrong for Ceph — RAM before cores.

Network fabric: where Ceph dreams go to die

Ceph replicates every write between OSDs. On 1GbE, replicated NVMe writes collapse to spinning-disk speeds and recovery after maintenance takes hours. The 2026 fix is cheap:

  • Minimum viable fabric: one 10G SFP+ switch — the MikroTik CRS310-8G+2S+IN (~$240) plus X520-class NICs per node (~$30-60 used).
  • Better: separate public (VM) and cluster (replication) networks — either physically (two switches) or virtually (VLANs; keep the cluster VLAN jumbo-frame-clean and untagged-noise-free).
  • Two-node temptation: direct-attach DAC between two nodes works for testing, but a two-node Ceph cluster has no quorum story — add a third node or do not run Ceph.

Budget check: the whole fabric (switch + 3 DAC/sfp modules + NICs) is roughly one premium consumer NVMe's price — and it is the difference between Ceph feeling enterprise and feeling broken.

Install on Proxmox VE 9, step by step

Proxmox VE 9.1 ships Ceph Squid; the wizard does the YAML-free heavy lifting:

  1. Install VE 9 on all three nodes from the ISO — pick ZFS raid0 on the boot drive if single, mirror if paired.
  2. Configure the network first in /etc/network/interfaces: cluster VLAN or dedicated NIC (ceph0/ceph1 bridges) before anything touches Ceph.
  3. Datacenter → Ceph: install the packages on all nodes (one wizard run per node), then Create Monitor + Manager on node A; add monitors to B and C so all three run MON+MGR. Odd monitors (3) — quorum lives here.
  4. Create OSDs on each node from the wizard (bluestore default; tick WAL/DB split only if you have the dedicated small NVMe). Two OSDs per node = six total for the sweet-spot lab.
  5. Create the pool: replication x3 (size=3/min_size=2), PG autoscaler on, name it rbd-vm or similar. Ignore EC pools for a first build — erasure coding is the classic homelab regret.
  6. Validate: ceph -s shows HEALTH_OK, 6 OSDs, 3 monitors quorate. Then and only then create a test VM on the Ceph RBD and live-migrate it node-to-node.

Full command-level detail including the virtio and import-wizard steps for migrating real VMs lives in the Proxmox Migration Playbook (shop).

Tuning for consumer SSDs

Most of Ceph's "it's slow" reputation in homelabs is consumer-hardware defaults. The three that matter:

  • WAL/DB placement: on all-NVMe nodes keep WAL+DB colocated (defaults). On HDD nodes, always split WAL+DB onto a small NVMe — HDD Ceph without NVMe metadata is a patience simulator.
  • Recovery aggressiveness: for a lab, throttle recovery so a failing disk doesn't tank the whole cluster: ceph tell 'osd.*' injectargs '--osd-recovery-max-active 4 --osd-max-backfills 2'. Enterprise configs trade this for speed; homelabs trade it for stability.
  • Monitor wear: ceph osd df weekly plus smartctl — consumer NVMe at replication 3 writes 3x. A 600TBW drive at homelab write rates lasts years, but know your trend.

Skip: kernel tweaks, deep crush-map edits, custom bluestore compression. Defaults on good hardware beat tuned jank on bad hardware in the homelab weight class.

Pools, replication & the VM storage class

  • size=3, min_size=2 — the only homelab replication setting. size=2 loses quorum on one failure; EC saves space at CPU/latency cost and breaks simple live-migration patterns.
  • PG autoscaler on (default in VE 9) — do not hand-calculate PGs. If you must: ~100 PGs per pair of OSDs, power-of-two.
  • Separate pool per workload class: rbd-vm (fast NVMe replicas) for VM disks, cephfs-slow (HDD nodes, if any) for ISOs/backups/files. Mixing a backup storm into the VM pool is self-inflicted latency.
  • RBD vs CephFS for VMs: RBD (block) for VM disks, always. CephFS for shared files/ISO library.

Three failure drills to run before you trust it

Trust is a test result, not a feeling. On the new cluster, in this order:

  1. Kill one node (hard power-off): VMs should keep running (min_size=2 holds), cluster degrades to HEALTH_WARN, writes slow but complete. Reboot the node; wait for recovery to HEALTH_OK; watch ceph -s do its thing. Time it — that number is your real maintenance window.
  2. Kill one OSD on one node only (pull the NVMe): with 6 OSDs the cluster should stay HEALTH_OK-ish and rebalance without drama. Replace the drive, watch it re-weight. This is why 6 OSDs beats 3.
  3. Reboot the whole cluster one node at a time: the quarterly Windows Update of the cluster world. Do it once now so the first "reboot everything" isn't during a real incident.

Backup still applies: Ceph replication is not backup (rm -RF propagates, as does ransomware). vzdump from the Ceph pool to a separate ZFS box/NAS remains mandatory — our migration guide's 3-2-1 section covers the tiers.

What it costs

  • Budget build (3 nodes): ~$2,100 in nodes + ~$400 fabric (switch/NICs/DACs) ≈ $2,500 all-in for a hyperconverged 3-node cluster with 12TB raw NVMe and real HA.
  • Comfort build: ~$3,300 nodes + fabric ≈ $3,700, with 24TB raw, 64GB/node and a separate fabric network.
  • Alternative for context: a 2-node ZFS + NAS design hits similar reliability for less, if node-loss downtime is acceptable — see the decision tree in our hypervisor comparison.

FAQ

Is Ceph worth it for a home lab, or should I just use ZFS?

ZFS for 1-3 nodes with downtime-tolerance; Ceph for 3+ nodes where live HA is the point. The full breakdown is in the FAQ schema above.

How much RAM does a small Ceph cluster need?

~1GB per 1TB of OSD plus 4-6GB per node for monitors — 32GB/node floor, 64GB/node comfortable.

Do I really need 10GbE for Ceph?

For a VM-serving cluster, yes. 2.5GbE replication makes Ceph feel broken; the fabric fix costs about one premium NVMe.

Can Ceph run on consumer SSDs?

Yes — replication 3, wear monitoring, and optional WAL/DB splitting make 990 Pro-class drives a valid homelab OSD at these write rates.

How many OSDs should a first cluster have?

Six (two per node in a 3-node): one drive lost no longer shifts a third of capacity into recovery.

What happens when a node dies in a 3-node Ceph cluster?

Cluster stays writable (min_size=2), VMs keep running, one replica is missing until the node returns — measured in your drill #1.