1. 背景介绍
现在,我们将讨论在虚拟机上使用部署SPDK NVMe测试案例的方法。为什么我们需要在虚拟机上部署它呢?原因很明显随着主机CPU Core越来越强大,我们需要有效地利用CPU Core,而对于不同种类且不需要太多计算和内存资源的功能测试来说,我们可以充分利用虚拟机运行功能测试如NVMe,vhost, i SCSI测试。
2. 配置虚拟机环境
在Windows10(1607)操作系统的机器上配置虚拟机的步骤如下所示:
1. 安装 VirtualBox及其相关组件,需要安装两个安装包
- 在BIOS里面确保VT选项是打开的,安装VirtualBox5.1.38 或者更新版本(建议使用5.1.38版本)
- 搜索“Windows features”并关闭Hyper-V选项,重启windows 操作系统,安装VirtualBox ExtensionPack
2. 安装Vagrant 1.9.4版本或者更新版本(建议使用1.9.4版本)
3. 安装 Git Bash(版本不做要求)
4. 打开Gitbash终端,下载SPDK代码并创建虚拟机环境
a. 如果有防火墙,建议使用代理来提高下载速度
I. 设置http_proxy和https_proxy代理,命令行如下
$export https_proxy=
$export http_proxy=
II. 安装proxyconf plugin,命令如下
$vagrant plugin install vagrant-proxyconf
b. 下载SPDK代码,命令行如下
$git clone https : //github . com/spdk/spdk . git
c. 编译并创建虚拟机,命令行如下
$cd spdk/
$git submodule update –init
$./spdk/scripts/vagrant/create_vbox.sh –n 4 –s 4096 fedora28
(-n指定虚拟机CPU数量,-s指定虚拟机内存大小,执行这一步如遇到下面的问题,则很有可能是网络不够稳定或者网速太慢,可以选择一个网速比较稳定或者快的时间重新下载)
d. 登录虚拟机,命令如下
$cd fedora28-virtualbox
$vagrant ssh
恭喜你!从现在开始,你可以登录虚拟机工作了
e. 验证虚拟NVMe设备是否存在,命令行如下
$lspci | grep “Non-Volatile”
00:0e.0 Non-Volatile memory controller: InnoTek Systemberatung GmbH Device 4e56
f. 同样,在虚拟机里面,也需要对代理进行设置,然后编译SPDK代码,命令行如下:
$apt-get update
$cd ~/spdk_repo/spdk
$git submodule update –init
(如果无法成功执行上面的命令,可以尝试重新下载SPDK代码,命令为
$git clone https : //github . com/spdk/spdk . git )
$scripts/pkgdep.sh
(如果出现警告可以使用如下命令进行清除
$git reset --hard)
$make
g. 通过运行hello_word实例来验证SPDK安装成功
$script/setup.sh
$cd examples/bdev/hello_world/
$./hello_bdev –c bdev.conf
3. 在VM上部署SPDK NVMe测试案例
在examples目录运行NVMe测试案例
1. 运行setup.sh脚本
$cd /home/vagrant/spdk_repo/spdk
$./scripts/setup.sh
0000:00:0e.0 (80ee 4e56): nvme -> uio_pci_generic
2. 在examples目录下运行NVMe的hello_world测试案例来确保环境已