Welcome to DISTORT
DISTORT (DISaggregated STorage Over RDMA Transport) manages physical NVMe storage for Kubernetes workloads over NVMe-over-Fabrics/RDMA. Administrators explicitly claim unused devices; applications request filesystem volumes using StorageClasses and PersistentVolumeClaims.
Kubernetes custom resources coordinate discovery, allocation, exports, and consumer ownership. Node agents configure SPDK or Linux kernel targets, while the CSI driver connects and mounts volumes on consumer nodes. After setup, application I/O travels directly over RDMA without passing through the manager.
Project Status
DISTORT is an alpha-stage project moving toward beta. Version 0.5.0 is a
development release and is not recommended for production use. The project has
been tested with K3s 1.35.4 in its three-node Vagrant lab and with Kubernetes
1.35.5 in a three-node kubeadm cluster.
These are tested configurations, not a compatibility certification. The current driver supports ext4/XFS mounted single-node-writer volumes. Raw block, multi-node access, snapshots, cloning, expansion, replication, multipath failover, and an NVMe/TCP fallback are not implemented. See the roadmap for proposed work.
Control and data paths
Getting Started
Explore the different sections of the documentation to understand and consume DISTORT:
- Architecture: Read the design, component roles, control and data paths, and implementation layout.
- Project Internals: Follow the controller, agent, CSI, and storage data paths in detail, including recovery boundaries.
- Using DISTORT: Learn how to discover underlying storage controllers, claim hardware drives using
NVMeDeviceClaimspecs, and request StorageClasses. - Local Testing Lab: Keep a three-node Vagrant/K3s cluster running for fast redeploys, manual storage checks, and automated E2E tests.
- Testing Strategy: Run the host-side, regression, and hardware test suites.
- Contributing: Build, generate, validate, and submit changes using the repository’s supported workflows.
Community
Ask questions and propose changes through GitHub Issues, or contact the maintainers. Follow the Code of Conduct and use the private security reporting process for vulnerabilities. The governance policy describes how maintainers make decisions.