赞
踩
SPDK vhost 作为虚拟机存储的后端,以进程的形式在宿主机上运行,通过轮询的方式从共享的 Ring Buffer 中得到虚拟机中的 IO 请求,并进行处理,最后将处理完的数据同样通过 Ring Buffer 的方式通知虚拟机。整个过程不需要锁的保护,没有中断引入的开销,效率极高。这里面主要涉及到下面几个部分:
SPDK vhost的软件结构示意如下:
所有类型的SPDK vhost设备统一链入到g_vhost_devies链表中进行管理,包括vhost-blk和vhost-scsi设备,关联的数据结构如下:
这里:
首先,配置SPDK使用的大页内存:
HUGEMEM=4096 scripts/setup.sh
接下来,启动SPDK自带的vhost应用程序
build/bin/vhost -S /var/tmp -m 0x3
创建SPDK bdev设备
scripts/rpc.py bdev_malloc_create 64 512 -b Malloc0
首先,创建vhost-scsi控制器
scripts/rpc.py vhost_create_scsi_controller --cpumask 0x1 vhost.0
添加SPDK bdev设备到创建的vhost-scsi控制器中
scripts/rpc.py vhost_scsi_controller_add_target vhost.0 0 Malloc0
scripts/rpc.py vhost_create_blk_controller --cpumask 0x1 vhost.1 Malloc0
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。