Skip to main content

Choosing a Distributed Storage Technology for a Proxmox HA Cluster

· 6 min read
BENE Maël
System Administrator

When setting up my high-availability Proxmox cluster, choosing the right distributed storage technology turned out to be a crucial decision. This article presents my analysis approach and the final choice of Linstor DRBD.

The Problem​

To set up a high-availability (HA) Proxmox cluster, shared storage between nodes is required. This shared storage enables:

  • Live migration of VMs/LXC containers between nodes without service interruption
  • Automatic failover: if a node fails, VMs can restart on another node
  • Data consistency across all cluster nodes

The central question is: which distributed storage technology should I choose to meet these needs while respecting my homelab's hardware constraints?

Hardware Constraints​

My Proxmox cluster consists of three nodes with the following specifications:

Production Nodes (x2)​

ComponentNode 1Node 2
CPURyzen 7 5800UIntel i7 8700T
RAM32 GB32 GB
Proxmox Storage128 GB SSD128 GB SSD
VM/LXC Storage512 GB SSD512 GB SSD

Witness Node​

A lightweight third node whose sole purpose is to ensure cluster quorum. It doesn't participate in production data storage but prevents split-brain situations during network partitions.

Network Infrastructure​

1 Gbps Switch - This is a significant constraint that will heavily influence the technology choice.

Solutions Considered​

Native Proxmox Solutions​

Ceph​

Ceph is the distributed storage solution most promoted by Proxmox. It's directly integrated into the management interface.

Advantages:

  • Native integration in Proxmox (installation and management via web interface, which greatly simplifies deployment)
  • Synchronous object/block/file replication
  • Horizontal scalability
  • Self-healing and automatic rebalancing

Disadvantages:

  • High resource consumption: significant CPU and RAM for MON, MGR, and OSD processes
  • 3 nodes minimum, but 5 recommended for optimal performance (near-linear scalability thanks to Ceph's scale-out architecture)
  • Requires 10 Gbps network for acceptable performance
  • High operational complexity despite Proxmox's simplification efforts

In the context of my homelab with only 3 nodes (including 1 witness) and a 1 Gbps switch, Ceph would be undersized and its performance would be severely degraded.

Native ZFS Replication​

Proxmox integrates ZFS and offers a snapshot-based replication mechanism.

Advantages:

  • Native to Proxmox, no additional installation required
  • Moderate RAM consumption (1 GB per TB of storage recommended)
  • Works perfectly on a 1 Gbps network
  • Proven ZFS reliability (checksums, self-healing)

Disadvantages:

  • Asynchronous replication via incremental snapshots
  • RPO (Recovery Point Objective) = interval between snapshots: in case of failure, data modified since the last snapshot is lost
  • No live migration: VMs must be stopped to migrate
  • HA possible but with potential data loss

This solution is therefore unsuitable for an HA cluster requiring live migration and near-zero RPO.

Third-Party Solution: Linstor DRBD​

LINSTOR is a distributed storage solution developed by LINBIT, based on DRBD (Distributed Replicated Block Device). An official plugin exists for Proxmox.

Advantages:

  • Block-level synchronous replication: each write is confirmed only when replicated to the nodes
  • Low resource consumption: minimal CPU/RAM overhead compared to Ceph
  • Fully operational with just 3 nodes: 2 data nodes + 1 witness (diskless) architecture
  • Works on a 1 Gbps network (optimal at 10 Gbps but viable at 1 Gbps)
  • Official Proxmox plugin available
  • Simple active/passive architecture, easy to understand and maintain

Disadvantages:

  • Requires external plugin installation
  • Less comprehensive documentation than Ceph
  • Smaller community

Why Linstor DRBD?​

Given my homelab's constraints, Linstor DRBD seemed to be the most suitable choice:

Infrastructure Fit​

CriterionCephZFS ReplicationLinstor DRBD
Minimum nodes3 (5 optimal)23 (2 + witness)
Recommended network10 Gbps1 Gbps1 Gbps (optimal 10 Gbps)
Replication typeSynchronousAsynchronousSynchronous
Live migrationYesNoYes
RPO~0Snapshot interval~0
Resource consumptionHighModerateLow
Proxmox integrationNativeNativePlugin

The Witness Node's Role​

With Linstor DRBD, the witness node plays an essential role:

  • It participates in quorum without storing data (diskless mode)
  • It enables split-brain detection and arbitration
  • It consumes virtually no resources on this lightweight node

This architecture perfectly matches my configuration: 2 production nodes with SSD storage, and 1 minimal witness node for quorum.

Performance on 1 Gbps Network​

Unlike Ceph, which struggles significantly on a 1 Gbps network (communications between OSD, MON, and MGR quickly saturate bandwidth), DRBD is designed to be efficient even on more modest networks:

  • Point-to-point replication between concerned nodes
  • No complex distributed consensus protocol
  • Minimal network overhead

Solution Limitations​

Despite its advantages, Linstor DRBD has certain limitations to be aware of:

Active/Passive Architecture​

Unlike Ceph, which allows simultaneous writes on multiple nodes, DRBD operates in active/passive mode:

  • At any given time, only one node holds the write "lock" on a volume
  • Migrations require transferring this lock

This doesn't impact live migration in Proxmox but may limit certain advanced use cases.

Limited Scalability​

DRBD is optimized for small to medium-sized clusters (2-4 data nodes). For larger infrastructures, Ceph becomes more relevant despite its complexity.

Plugin Maintenance​

The Proxmox plugin for Linstor is not maintained by Proxmox directly but by LINBIT. Compatibility must be monitored during major Proxmox updates.

Conclusion​

Given my specific constraints:

  • 3 nodes (2 production + 1 witness)
  • 1 Gbps switch
  • Need for live migration and HA with near-zero RPO

Linstor DRBD seems to be the most suitable solution for my context, offering what I consider the best trade-off between features, performance, and resource consumption for my infrastructure. This is the solution I chose and deployed on my cluster.

This choice isn't universal: for an infrastructure with a 10 Gbps network and more nodes, Ceph could be a better candidate. Similarly, for use cases where live migration isn't critical and a few minutes of RPO is acceptable, native ZFS replication remains a perfectly viable and simpler option to implement.

Side Note: My Ceph Experimentation​

Before deploying Linstor DRBD, I experimented with Ceph for learning purposes. Here are the key concepts of its architecture:

  • MON (Monitor): maintains the cluster map (CRUSH map, OSD state). Requires an odd number (3 minimum recommended) for quorum
  • MGR (Manager): collects metrics, exposes the REST API and dashboard. Operates in active/standby mode
  • OSD (Object Storage Daemon): one daemon per disk, handles actual data storage and replication

On my test cluster, I deployed MON, MGR, and OSD on both production nodes, and only a MON on the witness node. Why? The witness has no dedicated data storage (no OSD possible), but it can participate in monitor quorum. With 3 MONs (2 on prod nodes + 1 on witness), the cluster can tolerate the loss of one monitor while maintaining quorum.

This experimentation helped me understand Ceph's architecture, but confirmed that its requirements (10 Gbps network, CPU/RAM resources) exceeded my current infrastructure's capabilities.