Explanation

Storage Strategy

Why CNPG clusters use single-replica storage.

The Decision

PostgreSQL databases deployed with CNPG use the longhorn-redundant-app storage class:

storage:
  size: 10Gi
  storageClass: longhorn-redundant-app  # 1 Longhorn replica

Rationale

PostgreSQL with N≥2 instances already provides application-level replication. Adding storage-level replication is redundant:

With 2-Instance Cluster

Single-replica storage (recommended):

  • 2 PostgreSQL instances × 1 storage replica = 2 total copies

  • Cost: 1x storage per instance

  • Safety: Survives 1 node failure (via PostgreSQL failover)

Dual-replica storage (wasteful):

  • 2 PostgreSQL instances × 2 storage replicas = 4 total copies

  • Cost: 2x storage per instance

  • Safety: Same as above (no additional benefit)

Result: Dual-replica wastes 50% storage for zero safety improvement.

When to Use Multi-Replica Storage

Single-instance databases (instances=1) should use longhorn (2 replicas):

  • No application-level replication

  • Storage replication provides safety

  • Example: Development/test databases

Storage Class Comparison

Storage Class

Replicas

Use Case

longhorn-redundant-app

1

Multi-instance databases (PostgreSQL N≥2)

longhorn (default)

2

Single-instance databases, general workloads

longhorn-ha

3

Mission-critical data (rarely needed)