RocksDB, at least by default, expects a POSIX compliant filesystem for I/O operations.
When you load the SPDK NVMe driver in user space, you are foregoing your ability to use
standard Linux kernel filesystems. Therefore, you can't just run RocksDB on top of the
SPDK NVMe driver - you have to write some code to replace the filesystem. Fortunately,
there are two nice things here that may make this still possible. First, RocksDB has a
"pluggable" backend implemented as a base class named "Env" that you
can inherit from and override. The stock distribution already provides an implementation
to run RocksDB on HDFS, for example. Second, RocksDB uses only a very minimal set of
operations when writing to a file, so you wouldn't have to implement the full range of
features of a POSIX compliant filesystem. I don't want to minimize the amount of work
this would take though - it still requires you to write a significant amount of code.
The latest release of Ceph (Jewel) now optionally implements their nodes using RocksDB +
custom userspace filesystem + SPDK NVMe driver, so you can refer to that project as an
On Mon, 2016-04-18 at 22:33 -0500, Parag Panda wrote:
I am planning to run RocksDB on a linux machine which has support of SPDK NVMe driver and
not the native one. Can someone guide me through the process?
SPDK mailing list