Skip to content

Longhorn — Operations

Scope

Kubernetes distributed storage operations including volume management, backup/DR, performance tuning, and node maintenance.

Deployment

# Helm install (recommended)
helm install longhorn longhorn/longhorn \
  --namespace longhorn-system --create-namespace \
  --set defaultSettings.defaultReplicaCount=3 \
  --set defaultSettings.storageOverProvisioningPercentage=200

Volume Operations

# Check volume health
kubectl -n longhorn-system get volumes.longhorn.io

# Force detach stuck volume
kubectl -n longhorn-system patch volumes.longhorn.io <vol> \
  --type=merge -p '{"spec":{"nodeID":""}}'

StorageClass Configuration

kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
  name: longhorn-fast
provisioner: driver.longhorn.io
parameters:
  numberOfReplicas: "3"
  dataLocality: "best-effort"
  diskSelector: "ssd"
reclaimPolicy: Delete
volumeBindingMode: Immediate

Backup & DR

# Create backup target (S3-compatible)
# Settings > Backup Target: s3://longhorn-backup@us-east-1/
# Settings > Backup Target Credential Secret: aws-secret

# Recurring backup schedule
kubectl apply -f - <<EOF
apiVersion: longhorn.io/v1beta2
kind: RecurringJob
metadata:
  name: daily-backup
  namespace: longhorn-system
spec:
  cron: "0 2 * * *"
  task: backup
  retain: 7
  concurrency: 2
EOF

Performance Tuning

Setting Default Recommended Impact
Replica count 3 3 (HA) / 2 (perf) Storage overhead vs durability
Data locality disabled best-effort Reduces cross-node I/O
Replica soft anti-affinity true true Spread replicas across nodes
Guaranteed engine manager CPU 12 25 Reduces I/O scheduling latency

Common Issues

Issue Diagnosis Fix
Volume degraded UI > Volume details Check node/disk health
Rebuild slow longhornctl check Increase replica rebuild threads
PVC stuck Pending kubectl describe pvc Check StorageClass, node labels
Disk pressure kubectl top nodes Add disks, delete unused volumes