下载获取源码
git clone https://github.com/spdk/spdk
cd spdk
git submodule update --init
git submodule update --init 失败和网速有关,多试几次。
安装相关依赖
sudo scripts/pkgdep.sh
编译源文件
sudo ./configure
sudo make
运行单元测试
./test/unit/unittest.sh
运行示例
sudo scripts/setup.sh //绑定NVMe设备
cd build/examples
./hello_world
问题总结
Initializing NVMe Controllers
no NVMe controllers found
执行示例demo只出现上述信息,系虚拟机系统未添加NVMe硬盘。添加步骤如下:
1.右键单击清单中的虚拟机,然后选择编辑设置。
2.在虚拟硬件选项卡上,单击添加新设备按钮。
3.从下拉菜单中选择 NVMe 控制器。
4.控制器会显示在“虚拟硬件”设备列表中。
5.单击确定。
注意:添加NVMe硬盘后不需要挂载。
0000:03:00.0 (15ad 07f0): Active devices: mount@nvme0n1:nvme0n1, so not binding PCI dev
绑定NVMe设备时,出现上述信息,系NVMe设备已经在使用,无法解除内核驱动,此时需要将该设备初始化或者其他的方法。
[root@node1 scripts]#lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 931.5G 0 disk
├─sda1 8:1 0 200M 0 part /boot/efi
├─sda2 8:2 0 1G 0 part /boot
└─sda3 8:3 0 930.3G 0 part
├─centos-root 253:0 0 150G 0 lvm /
├─centos-swap 253:1 0 15.7G 0 lvm [SWAP]
└─centos-home 253:2 0 764.6G 0 lvm /home
nvme0n1 259:0 0 349.3G 0 disk /home/wangrui/data
[root@node1 scripts]#umount /dev/nvme0n1
[root@node1 scripts]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 931.5G 0 disk
├─sda1 8:1 0 200M 0 part /boot/efi
├─sda2 8:2 0 1G 0 part /boot
└─sda3 8:3 0 930.3G 0 part
├─centos-root 253:0 0 150G 0 lvm /
├─centos-swap 253:1 0 15.7G 0 lvm [SWAP]
└─centos-home 253:2 0 764.6G 0 lvm /home
nvme0n1 259:0 0 349.3G 0 disk
[root@node1 scripts]# ./setup.sh
0000:80:04.2 (8086 6f22): ioatdma -> uio_pci_generic
0000:80:04.3 (8086 6f23): ioatdma -> uio_pci_generic
0000:80:04.0 (8086 6f20): ioatdma -> uio_pci_generic
0000:80:04.1 (8086 6f21): ioatdma -> uio_pci_generic
0000:80:04.6 (8086 6f26): ioatdma -> uio_pci_generic
0000:80:04.7 (8086 6f27): ioatdma -> uio_pci_generic
0000:80:04.4 (8086 6f24): ioatdma -> uio_pci_generic
0000:80:04.5 (8086 6f25): ioatdma -> uio_pci_generic
0000:00:04.2 (8086 6f22): ioatdma -> uio_pci_generic
0000:00:04.3 (8086 6f23): ioatdma -> uio_pci_generic
0000:00:04.0 (8086 6f20): ioatdma -> uio_pci_generic
0000:00:04.1 (8086 6f21): ioatdma -> uio_pci_generic
0000:00:04.6 (8086 6f26): ioatdma -> uio_pci_generic
0000:00:04.7 (8086 6f27): ioatdma -> uio_pci_generic
0000:00:04.4 (8086 6f24): ioatdma -> uio_pci_generic
0000:00:04.5 (8086 6f25): ioatdma -> uio_pci_generic
0000:03:00.0 (8086 2701): nvme -> uio_pci_generic
nvme -> uio_pci_generic
绑定NVMe设备时,出现上述信息,即绑定成功
df@df-virtual-machine:~/spdk$ sudo ./build/examples/hello_world
TELEMETRY: No legacy callbacks, legacy socket not created
Initializing NVMe Controllers
Attaching to 0000:03:00.0
Attached to 0000:03:00.0
Namespace ID: 1 size: 10GB
Initialization complete.
INFO: using host memory buffer for IO
Hello world!
参考
https://spdk.io/doc/getting_started.html