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 | shHuge pages need to be enabled:
cd vroom
sudo ./setup-hugetlbfs.shTo build the driver, as well as any examples run:
cargo build --release --all-targetse.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.