Longhorn — How It Works¶
Per-volume engine model, synchronous replication, snapshot mechanics, and CSI integration.
Per-Volume Engine Architecture¶
Unlike Ceph's shared daemon model, Longhorn assigns a dedicated Engine process to each volume. This isolates failures — a bug in one volume's engine cannot affect other volumes.
flowchart TB
subgraph Node1["Node 1"]
E1["Engine (Vol-1)\n(storage controller)"]
R1A["Replica 1A\n(Vol-1 data)"]
R2A["Replica 2A\n(Vol-2 data)"]
E2["Engine (Vol-2)"]
end
subgraph Node2["Node 2"]
R1B["Replica 1B\n(Vol-1 data)"]
end
subgraph Node3["Node 3"]
R1C["Replica 1C\n(Vol-1 data)"]
end
Pod1["Pod (uses Vol-1)"] --> E1
E1 -->|"sync write"| R1A
E1 -->|"sync write"| R1B
E1 -->|"sync write"| R1C
style Node1 fill:#2e7d32,color:#fff
Write Path¶
sequenceDiagram
participant Pod as Pod
participant Engine as Longhorn Engine
participant R1 as Replica 1 (local)
participant R2 as Replica 2 (remote)
participant R3 as Replica 3 (remote)
Pod->>Engine: Write block
par Synchronous replication
Engine->>R1: Write to replica 1
Engine->>R2: Write to replica 2
Engine->>R3: Write to replica 3
end
R1-->>Engine: ACK
R2-->>Engine: ACK
R3-->>Engine: ACK
Engine-->>Pod: Write complete
Note over Engine: All replicas confirmed before ACK
Snapshot & Backup¶
flowchart LR
Vol["Volume\n(live data)"] --> Snap1["Snapshot 1\n(point-in-time)"]
Snap1 --> Snap2["Snapshot 2\n(incremental)"]
Snap2 --> Backup["Backup\n(to S3/NFS)"]
Backup --> DR["DR Volume\n(remote cluster)"]
style Backup fill:#1565c0,color:#fff