spdk(三)----qemu spdk使用
2143 ワード
0.配置
1.vhostアプリケーションを起動する:
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を挿入する必要がある.
2.2 ramdiskベースspdk bdev Malloc 0(vhost-scsi)の作成
まずvhost-scsiコントローラを作成します.QEMUは
2.2 ramdiskベースspdk bdev Malloc 1(vhost-blk)の作成
同様に、まずMalloc 1というSPDK block deviceを作成します.以下のようにします.
Malloc 1を暴露するためのvhost-blkデバイスをもう1つ作成し、QEMUは
3.qemu VMの起動
HUGEMEM=2048 ./scripts/setup.sh
1.vhostアプリケーションを起動する:
./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 Malloc 0(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 Malloc 1(vhost-blk)の作成
同様に、まずMalloc 1というSPDK block deviceを作成します.以下のようにします.
./scripts/rpc.py bdev_malloc_create -b Malloc1 64 512
Malloc 1を暴露するためのvhost-blkデバイスをもう1つ作成し、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