Purpose: For platform engineers, documents storage I/O benchmarks, CSI driver tuning, and provisioning latency for openCenter-supported storage backends.
Storage Backend Benchmarks
| Backend | Sequential Read | Sequential Write | Random Read (4K) | Random Write (4K) |
|---|
| Longhorn (3 replicas, NVMe) | 1.2 GB/s | 800 MB/s | 95K IOPS | 60K IOPS |
| Longhorn (3 replicas, SSD) | 550 MB/s | 350 MB/s | 45K IOPS | 25K IOPS |
| OpenStack Cinder (SSD) | 600 MB/s | 400 MB/s | 50K IOPS | 30K IOPS |
| vSphere VMDK (SAN) | 800 MB/s | 500 MB/s | 60K IOPS | 35K IOPS |
Tested with fio, 8 threads, queue depth 32.
Longhorn Tuning
| Parameter | Default | Tuned | Effect |
|---|
numberOfReplicas | 3 | 2 (non-critical) | 33% write throughput gain |
dataLocality | disabled | best-effort | Reduces network hops for reads |
guaranteedInstanceManagerCPU | 12% | 25% | Prevents I/O stalls under load |
storageOverProvisioningPercentage | 200 | 150 | Tighter capacity planning |
PV Provisioning Latency
| Backend | Provision Time (p95) | Notes |
|---|
| Longhorn | < 3s | Pre-existing disk nodes |
| Cinder | < 8s | API + volume attach |
| vSphere | < 12s | VMDK creation + attach |
Recommendations
- Use NVMe-backed nodes for etcd and databases
- Set
dataLocality: best-effort for read-heavy workloads
- Separate storage pools: system (platform services) vs. workload (application PVs)
- Monitor
longhorn_volume_actual_size_bytes to detect over-provisioning
- Pre-warm volumes for latency-sensitive workloads by writing zeroes post-provision