• 在虚拟机上部署SPDK NVME测试案例


    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代理,命令行如下

    1. $export https_proxy=
    2. $export http_proxy=

    II. 安装proxyconf plugin,命令如下

    $vagrant plugin install vagrant-proxyconf

    b. 下载SPDK代码,命令行如下

    $git clone https : //github . com/spdk/spdk . git

    c. 编译并创建虚拟机,命令行如下

    1. $cd spdk/
    2. $git submodule update –init
    3. $./spdk/scripts/vagrant/create_vbox.sh –n 4 –s 4096 fedora28
    4. (-n指定虚拟机CPU数量,-s指定虚拟机内存大小,执行这一步如遇到下面的问题,则很有可能是网络不够稳定或者网速太慢,可以选择一个网速比较稳定或者快的时间重新下载)

    d. 登录虚拟机,命令如下

    1. $cd fedora28-virtualbox
    2. $vagrant ssh

    恭喜你!从现在开始,你可以登录虚拟机工作了

    e. 验证虚拟NVMe设备是否存在,命令行如下

    1. $lspci | grep “Non-Volatile”
    2. 00:0e.0 Non-Volatile memory controller: InnoTek Systemberatung GmbH Device 4e56

    f. 同样,在虚拟机里面,也需要对代理进行设置,然后编译SPDK代码,命令行如下:

    1. $apt-get update
    2. $cd ~/spdk_repo/spdk
    3. $git submodule update –init
    4. (如果无法成功执行上面的命令,可以尝试重新下载SPDK代码,命令为
    5. $git clone https : //github . com/spdk/spdk . git )
    6. $scripts/pkgdep.sh
    7. (如果出现警告可以使用如下命令进行清除
    8. $git reset --hard)
    9. $make

    g. 通过运行hello_word实例来验证SPDK安装成功

    1. $script/setup.sh
    2. $cd examples/bdev/hello_world/
    3. $./hello_bdev –c bdev.conf

    3. 在VM上部署SPDK NVMe测试案例

    在examples目录运行NVMe测试案例

    1. 运行setup.sh脚本

    1. $cd /home/vagrant/spdk_repo/spdk
    2. $./scripts/setup.sh
    3. 0000:00:0e.0 (80ee 4e56): nvme -> uio_pci_generic

    2. 在examples目录下运行NVMe的hello_world测试案例来确保环境已

  • 相关阅读:
    xshell使用方法(超详细)
    保研之旅·终
    【嵌入式】使用MultiButton开源库驱动按键并控制多级界面切换
    【无标题】
    【生物技术】专业与JAVA开发10年之缘
    RISC-V特权架构 - 中断与异常概述
    Android里获取正在前端运行的Activity的包名
    Request之登录系统跳转应用以及原理详解【JavaWeb】
    Qt ModelView显示数据库数据
    在高并发情况下我是这样解决单用户超领优惠券问题
  • 原文地址:https://blog.csdn.net/lingshengxiyou/article/details/126679572