Distributed block storage with Niova
With Niova, our engineers worked on every layer of a distributed block storage platform, from the Raft-replicated metadata control plane to native Linux block devices and Kubernetes volumes.
What we built
Where we contributed
- Kubernetes
- Go CSI driver with the full gRPC surface. The block-serving process runs as a host-level systemd unit, so it survives CSI pod restarts without losing in-flight I/O.
- Kernel
- Linux ublk integration exposes distributed storage as native block devices, shipped as a DKMS driver.
- Control plane
- Raft-replicated, RocksDB-backed metadata service with leader election, leases and a stateless proxy tier.
- Data protection
- Chunk-level replication and erasure coding, background GC and compaction, S3-backed cold tiering.
- Storage engine
- Single-threaded io_uring reactor with a custom coroutine model and a hand-written assembly context switch.
- Devices
- Raw NVMe admin commands issued directly through io_uring passthrough.
How it was checked
Formal software modelling with TLA+
Protocol-critical logic is modelled and model-checked with TLC, with internal guides for translating C into formal models.
Deterministic system tests
An Ansible framework stands up multi-node control-plane clusters and runs hundreds of parametrised failure scenarios, with fault injection built into the storage engine itself.
Integrity under failure
Kill a storage node mid-write, let chunk recovery run, re-validate every block checksum. Checked automatically in CI.
Storage slower than your compute?
Send us your topology, workload and a benchmark run. We will get back to you.