Marcio Cunha

Proxmox and Ceph: Distributed Storage Architecture for High Availability

Learn how to structure a Proxmox environment with Ceph to ensure your services stay online even during hardware failures. This guide details the implementation of distributed storage for maximum resilience.

Marcio Cunha•2 min
Also available in:PortuguêsEspañol
Summary
  • Distributed storage via Ceph removes single points of failure by replicating data across multiple physical nodes.
  • Dedicated network topology for cluster traffic is the defining factor for system performance and stability.
  • Proxmox cluster quorum requires an odd number of nodes to prevent network split-brain scenarios and data corruption.
  • Automatic data rebalancing in Ceph allows the system to self-heal after disk or server failures.
  • Continuous monitoring of write latency is essential to avoid bottlenecks in intensive virtualization environments.

Understanding the need for High Availability

Building a homelab often starts with a single robust machine. However, when the goal is to learn or host critical services that cannot afford downtime, a single hardware unit becomes a risk. High Availability (HA) seeks to eliminate single points of failure. In the Proxmox ecosystem, this is achieved through a cluster of multiple servers that share resources and, crucially, storage.

The role of Ceph as distributed storage

Ceph is an object, block, and file storage platform that functions as a distributed system. Instead of relying on a centralized file server (like a traditional NAS), Ceph spreads chunks of your data across all nodes in the cluster. In practice, if a server burns out, the data remains accessible from the remaining nodes, as the system has already replicated them in advance across multiple locations.

Network architecture for a resilient cluster

Ceph performance depends almost entirely on your network. It is impossible to run a stable storage cluster over a common 1Gbps network that also carries internet traffic or long-term backups. The standard recommendation is to separate management traffic from Ceph replication traffic, preferably using 10Gbps links or higher dedicated exclusively to inter-node cluster traffic.

Cluster Configuration: Step by Step

Before enabling Ceph, you must ensure Proxmox sees all nodes. Execution should follow a logical order to avoid inconsistencies. Follow these steps to configure the base of your environment:

  1. Install Proxmox VE on all nodes and ensure they are all at the same patch level.
  2. Create a cluster on the main node and join the secondary nodes via the command <pvecm add <cluster-ip>>.
  3. Enable Ceph on each node through the interface or terminal using <pveceph install>.
  4. Create a Ceph monitor on at least three nodes to ensure the redundancy required for the quorum voting system.
  5. Define the initial storage pool with the command <pveceph createpool <pool-name>>.

Considerations on performance and hardware

Many users get frustrated with Ceph due to write latency. This happens because, by default, Ceph waits for the information to be safely written to all designated disks before confirming the operation to the virtual machine. For a homelab, using NVMe drives for transaction logs (WAL/DB) is a paradigm shift that transforms the perceived speed of the environment.

Conclusion and outlook

Implementing a Proxmox cluster with Ceph is a significant engineering exercise that brings immediate rewards in terms of robustness. The ability to move a running VM from one server to another without any interruption, thanks to shared storage, is the pinnacle of infrastructure management.

The biggest takeaway here is not the configuration itself, but understanding how the system manages state. Ceph requires patience, adequate hardware, and, above all, a solid understanding of networking. With these pieces in place, your homelab will transition from a sandbox into a robust production-grade infrastructure.