spdk(三)----qemu使用spdk


0. 配置

HUGEMEM=2048 ./scripts/setup.sh

1.啟動vhost application:

./app/vhost/vhost -S /var/tmp -s 1024 -m 0x3 &

2. 創建SPDK bdev

(注意:SPDK bdev是SPDK中對多種存儲后端(storage backend)的抽象。 這些存儲后端(storage backend)包括:ceph RBD,ramdisk,NVMe,iSCSI,邏輯卷,甚至是virtio)。這里就體現了SPDK block device layer的概念。

2.1 創建基於physical NVMe的spdk nvme bdev

這里要求運行qemu的Host上插有physical NVME SSD。

./scripts/rpc.py bdev_nvme_attach_controller -b Nvme0 -t pcie -a 0000:01:00.0
./scripts/rpc.py vhost_scsi_controller_add_target vhost.0 0 Nvme0n1

2.2 創建基於ramdisk的spdk bdev Malloc0 (vhost-scsi)

./scripts/rpc.py bdev_malloc_create -b Malloc0 128 4096

首先創建一個 vhost-scsi控制器。QEMU 通過 /var/tmp/vhost.0 來使用。
--cpumask 參數標識綁定的CPU core ID,如下:

./scripts/rpc.py vhost_create_scsi_controller --cpumask 0x1 vhost.0

Malloc0綁定到vhost.0 vhost-scsi 控制器,如下:

./scripts/rpc.py vhost_scsi_controller_add_target vhost.0 1 Malloc0

2.2 創建基於ramdisk的spdk bdev Malloc1 (vhost-blk)

同樣,首先創建一個名為Malloc1的SPDK block device,如下:

./scripts/rpc.py bdev_malloc_create -b Malloc1 64 512

再創建一個vhost-blk 設備用於暴露Malloc1,QEMU 通過/var/tmp/vhost.1使用。如下:

./scripts/rpc.py vhost_create_blk_controller --cpumask 0x2 vhost.1 Malloc1

3. 啟動qemu VM

qemu-system-x86_64 \
  --enable-kvm \
  -cpu host -smp 2 \
  -m 1G -object memory-backend-file,id=mem0,size=1G,mem-path=/dev/hugepages,share=on -numa node,memdev=mem0 \
  -drive file=guest_os_image.qcow2,if=none,id=disk \
  -device ide-hd,drive=disk,bootindex=0 \

  -chardev socket,id=spdk_vhost_scsi0,path=/var/tmp/vhost.0 \
  -device vhost-user-scsi-pci,id=scsi0,chardev=spdk_vhost_scsi0,num_queues=4 \

  -chardev socket,id=spdk_vhost_blk0,path=/var/tmp/vhost.1 \
  -device vhost-user-blk-pci,chardev=spdk_vhost_blk0,num-queues=4


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM