Skip to main content
RunBook Academy

Proxmox VEVIII · CephCeph sizing

Ceph hardware and network sizing

Advanced⏱ ~16 min

What you'll learn

  • Size Ceph hardware for a given workload
  • Design the Ceph network for replication and client traffic
  • Recognise the resource costs of running Ceph
  • Plan capacity for current needs and growth

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

Not yet marked complete on this device.

Why this matters in production

Ceph is not free. Every OSD consumes CPU, RAM, network, and storage. A cluster sized for the workload, not for the marketing brochure, is the difference between a smooth Ceph deployment and a constant operational struggle.

The four resources

CPU

Each OSD process needs CPU. Modern enterprise NVMe SSDs can saturate multiple cores.

OSD typeCPU per OSD
Spinning disk~1 core
SATA SSD~1–2 cores
NVMe SSD (moderate)~2 cores
NVMe SSD (very high IOPS)4–6 cores

Plus: 1 core for MON, 1 core for MGR, 1 core for MDS (if using CephFS).

For a 4-node cluster with 6 NVMe OSDs per node: ~24 OSD cores + 3 MON + 3 MGR + spare = ~32 cores reserved for Ceph.

Memory

Each OSD process requires 4 GB by default; Ceph recommends 8 GB for production. Each MON and MGR consumes ~1–2 GB.

For 24 OSDs + 3 MON + 3 MGR:

24 OSDs × 8 GB = 192 GB
 3 MON × 2 GB = 6 GB
 3 MGR × 2 GB = 6 GB
 Ceph buffers = ~10 GB
 Total Ceph RAM ≈ 214 GB

Plus VM RAM. A 256 GB node running 24 OSDs and meaningful VM workloads is tight.

Network

The Ceph network has two channels:

NetworkPurposeBandwidth
PublicClient I/O, MON communication10 GbE minimum
Cluster (replication)OSD-to-OSD replication25+ GbE recommended

In a hyperconverged cluster, the cluster network is critical: every write replicates across it. Insufficient cluster bandwidth means slow writes.

flowchart LR
  C[Client I/O] --> P[Public network 10 GbE]
  P --> O[OSD]
  O --> R[Cluster network 25 GbE]
  R --> O2[OSD peer]
  O2 --> R
  R --> O3[OSD peer]

Storage

Disks: enterprise SSDs with PLP. SATA SSDs acceptable for bulk; NVMe required for high-IOPS VM workloads.

DB/WAL: a small, fast NVMe device per OSD (or shared across a few OSDs) for the BlueStore metadata. This dramatically improves small random write performance.

Network reference architecture

For a 3-node hyperconverged cluster:

NICRoleSpeed
NIC 1OOB management1 GbE
NIC 2Proxmox mgmt + Corosync + VM mgmt1 GbE
NIC 3VM traffic + migration10 GbE
NIC 4Ceph public network10 GbE
NIC 5Ceph cluster network25 GbE

Five NICs is heavy but matches the workload classes cleanly. Smaller deployments combine NICs (e.g. 3 + 4 as one LACP bond) at the cost of some isolation.

Capacity planning

Three numbers to plan:

Raw capacity  = N OSDs × size per OSD
Usable (rep)  = raw × (1/replication factor) × (1 - overhead)

For 12 × 4 TB SSDs with size=3 replication:

Raw = 48 TB
Usable = 48 / 3 ≈ 16 TB
Reserve 30 % for nearfull headroom ≈ 11 TB practical

Keep capacity utilisation below 70 % (nearfull_ratio=0.85). Beyond that, backfilling during recovery blocks.

The number the capacity plan usually gets wrong

Dividing raw by the replication factor gives you the capacity of a cluster with nothing wrong with it. That is not the number you can fill.

When a node fails, its placement groups are rebuilt on the surviving nodes. On a three-node cluster that means two nodes must absorb the third node’s share — so the cluster has to hold all its data on two thirds of its OSDs before it can return to active+clean.

Read-only / Safethe arithmetic that decides whether you can survive a node
ceph df
ceph osd df tree
ceph osd tree

Worked through for a three-node cluster with 4 × 4 TB per node, size 3:

Raw                       48 TB
Usable at size 3          16 TB
One node fails            32 TB raw remains
Data still to be held     the same as before
Utilisation after loss    1.5x what it was before

A cluster at 60% before the failure is at 90% after it, which is past nearfull_ratio — so backfill blocks and the cluster cannot heal. A cluster at 45% before is at 67% after and recovers normally.

That is where the 70% guideline comes from, and it is why it is a guideline about N+1 self-healing rather than about disk economics. A four-node cluster survives a node with less headroom than a three-node one, because the surviving three absorb the load rather than two.

Production considerations

Common mistakes

  • Using consumer SSDs.
  • Single network for everything.
  • Forgetting the RAM cost of MON/MGR/OSD daemons.
  • Trusting capacity math without accounting for replication overhead and nearfull headroom.

Key takeaways

  • CPU: 1+ core per OSD; more for high-IOPS NVMe.
  • RAM: 8 GB per OSD + 2 GB per MON/MGR.
  • Network: separate public and cluster networks.
  • Disks: enterprise SSD with PLP.

Knowledge check

Knowledge check · 4 questions

  1. Q1. How many OSDs are typically recommended per node for a healthy 3-node cluster?

  2. Q2. Ceph cluster network and public network can share the same physical NICs.

  3. Q3. How much RAM does Ceph recommend per OSD for good performance?

  4. Q4. A three-node cluster with size 3 pools is at 62% utilisation. A node fails. What happens to the recovery?

Passing score: 75%. Answers are checked in this browser.