为块设备映射添加 virtio-scsi 总线支持

https://blueprints.launchpad.net/nova/+spec/add-virtio-scsi-bus-for-bdm

VirtIO SCSI 是 KVM 实例的一种新的准虚拟化 SCSI 控制器设备。它被设计用来取代 virtio-blk,提高其性能并改善可扩展性。目前,从卷启动时不支持使用 virtio-scsi 总线。

问题描述

VirtIO SCSI 是 KVM 实例的一种新的准虚拟化 SCSI 控制器设备。它被设计用来取代 virtio-blk,提高其性能并改善可扩展性。该接口能够处理每个虚拟 SCSI 适配器上的多个块设备,保持客户机中的标准 scsi 设备命名(例如 /dev/sda),并支持 SCSI 设备直通。

目前,当从 glance 镜像启动时,已经支持 virtio-scsi 总线,这由 BP ([1]) 实现,目标是 Icehouse。

但是,当我们从该镜像创建一个 cinder 卷,然后从该卷启动并指定 bus_type 为“scsi”时,客户机仍然会使用 lsi 控制器,而不是 virtio-scsi 控制器。

此 BP 的目标如下

当使用“scsi”总线类型从卷启动时,对于从 glance 镜像创建的卷,使用 virtio-scsi 控制器,该镜像设置了“virtio-scsi” hw_scsi_model 属性。

主要用例是提高 I/O 密集型应用程序的性能。

提议的变更

  • Nova 在从 cinder 卷启动时,从卷的 glance_image_metadata 中检索“hw_scsi_model”属性

  • 如果“hw_scsi_model”属性为“virtio-scsi”并且为卷指定的 bus_type 为“scsi”,则 Libvirt 驱动程序将创建“virtio-scsi”控制器

备选方案

数据模型影响

REST API 影响

安全影响

通知影响

其他最终用户影响

性能影响

将提高客户机的性能。

其他部署者影响

开发人员影响

实现

负责人

主要负责人

<zhangleiqiang@huawei.com>

工作项

  • Nova 在从 cinder 卷启动时,从卷的 glance_image_metadata 中检索“hw_scsi_model”属性

  • 如果“hw_scsi_model”属性为“virtio-scsi”并且为卷指定的 bus_type 为“scsi”,则 Libvirt 驱动程序将创建“virtio-scsi”控制器

依赖项

  • 依赖于 BP [1],它将提供 virtio-scsi-controller 对象

测试

文档影响

参考资料