对于SSD使用SPDK作为NVMe driver的好处在于实现了用户态、异步、轮询、无锁等特性。与传统Linux内核中的NVMe driver相比,降低了nvme command的
rocksdb和SPDK相连必须要使用blobfs才可,可以参见https://spdk.io/doc/blobfs.html
首先是下载rocksdb。
git clone -b spdk-v5.14.3 https://github.com/spdk/rocksdb.git
然后进行编译:(SPDK_DIR表示的是本机的SPDK存储位置)
cd rocksdb
make db_bench SPDK_DIR=path/to/spdk
如果报错gflags没有安装的错误,则需要另外安装gflags以及相关的包。
#安装zstd
wget https://github.com/facebook/zstd/archive/v1.1.3.tar.gz
mv v1.1.3.tar.gz zstd-1.1.3.tar.gz
tar zxvf zstd-1.1.3.tar.gz
cd zstd-1.1.3
make && sudo make install
yum install snappy snappy-devel zlib zlib-devel bzip2 bzip2-devel lz4-devel
yum install libasan
#安装gflags
git clone https://github.com/gflags/gflags.git
cd gflags
mkdir build && cd build
cmake .. -DCMAKE_INSTALL_PREFIX=/home/ruihan.wr/downloads -DBUILD_SHARED_LIBS=1 -DCMAKE_BUILD_TYPE=Release
然后就是环境设置在/root下的bashrc中添加:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/ruihan.wr/downloads/lib
export LIBRARY_PATH=$LIBRARY_PATH:/home/ruihan.wr/downloads/include
然后source /root/.bashrc即可。
首先启动vhost进程,然后执行:
./test/blobfs/mkfs/mkfs blobfs_ocssd.conf mybdev0
其中blobfs_ocssd.conf相关配置为:
[VirtioUser0]
Path /var/tmp/vhost.0
Type AocBlk
Name mybdev0
然后执行rocskdb中的db_bench即可。