Skip to main content
RunBook Academy

CephLXXXI · Proxmox IntegrationProxmox Integration

Hyper-converged Proxmox and Ceph

Advanced⏱ ~18 mincephpveceph

What you'll learn

  • Describe the hyper-converged architecture
  • Configure resource separation between compute and storage
  • Recognise the operational consequences
  • Decide whether it suits a given deployment

Prerequisites

None — start here.

Verified against Ceph Tentacle 20.2.x · Ceph Squid 19.2.x (supported previous) · cephadm matches the verified Ceph release · podman 4.x · csi-rbd and csi-cephfs current · RBD / CephFS / RGW current (matches Ceph release) · Linux kernel 5.15+ (5.10 minimum) · Ubuntu 24.04 LTS (Ceph host baseline) · Debian 12 (Bookworm) (Ceph host baseline) · Rocky Linux / RHEL / AlmaLinux 9.x (Ceph host baseline) · Proxmox VE 9.x (cross-course integration) · Kubernetes 1.31+ (cross-course integration) · 2026-08-18

Not yet marked complete on this device.

Why this matters in production

Hyper-convergence removes the cost of separate storage hosts and replaces it with a resource contention problem. Both parts are real.

The architecture

flowchart TD
  subgraph Node1[Node 1]
    V1[VMs] --- O1[OSDs]
  end
  subgraph Node2[Node 2]
    V2[VMs] --- O2[OSDs]
  end
  subgraph Node3[Node 3]
    V3[VMs] --- O3[OSDs]
  end
  O1 <--> O2
  O2 <--> O3
  O1 <--> O3

Every node runs both hypervisor and storage. A VM’s I/O may be served by an OSD on its own host or on any other.

pveceph install
pveceph init --network 10.0.1.0/24
pveceph mon create
pveceph osd create /dev/sdb

Configuring resource separation

# bound OSD memory so it does not compete with VMs
ceph config set osd osd_memory_target 4294967296     # 4 GiB per OSD
Node with 128 GiB RAM, 6 OSDs:
  OSDs:            6 × 4 GiB  = 24 GiB
  Host OS:                    =  8 GiB
  Available for VMs:          = 96 GiB

Over-committing VM memory against this leaves the OSDs to be squeezed or the host to swap, and an OSD host that swaps performs catastrophically.

# CPU: reserve cores for OSDs where the platform supports it
systemctl set-property ceph-osd@0.service AllowedCPUs=0-3

Proxmox VMs can be pinned away from the cores serving OSDs, which prevents a busy VM starving the storage layer.

The operational consequences

ConsequenceEffect
A node reboot removes compute and storage togetherboth VMs and OSDs
Maintenance windows affect both layersmore coordination
A VM can starve the OSDs on its hostresource limits needed
Recovery competes with VM I/O on the same deviceslatency during any failure
The failure domain is the node for bothcorrelated failures
Scaling adds compute and storage in fixed ratiomay not match demand

Deciding whether it suits

FactorFavours hyper-convergedFavours dedicated
Cluster size3–8 nodesmore
Budgetconstrainedadequate
Workload predictabilitysteadyvariable or bursty
Storage-to-compute ratiobalancedskewed either way
Operational maturitygrowingestablished
Latency sensitivitymoderatehigh

Quiz

Knowledge check · 4 questions

  1. Q1. Why can a single overloaded hyper-converged node degrade storage for the whole cluster?

  2. Q2. `osd_memory_target` is an upper bound the OSD rarely reaches, so it need not be subtracted from available VM memory.

  3. Q3. Size a hyper-converged node.

    A node has 128 GiB of RAM and will run 6 OSDs. The team plans to allocate 120 GiB to VMs on the basis that OSDs "do not use much".

  4. Q4. At what cluster size does hyper-convergence stop being the natural choice?

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

Production discipline

Subtract the OSD memory commitment — osd_memory_target times the OSD count — before allocating any VM memory; an OSD that swaps degrades storage for the entire cluster, not just its own node. Pin VMs away from the cores serving OSDs where the platform allows it.

Cross-course references

  • Kubernetes: running storage and workloads on the same nodes has identical coupling
  • Linux: any co-located service needs explicit resource reservation