vroom is a userspace NVMe driver written in Rust. It aims to be as fast as the SPDK NVMe driver, while minimizing unsafe code and offering a simplified API. vroom currently serves as a proof of concept.
My thesis contains some details about the implementation.
You will need Rust, as well as its package manager cargo
which you can install with:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
Huge pages need to be enabled:
cd vroom
sudo ./setup-hugetlbfs.sh
To build the driver, as well as any examples run:
cargo build --release --all-targets
e.g. to run the hello world example (root rights are needed for DMA):
sudo ./target/release/examples/hello_world 0000:00:07.0
This is by no means production-ready. Do not use it in critical environments. DMA may corrupt memory.