支持 Sheepdog 临时磁盘用于 libvirt 驱动¶
https://blueprints.launchpad.net/nova/+spec/libvirt-sheepdog-backed-instances
添加对 Sheepdog 实例临时磁盘的支持。
问题描述¶
Sheepdog 块设备已经可以附加到 QEMU 和 KVM 虚拟机。Nova 的 libvirt 驱动程序支持大部分功能。唯一需要的额外更改是针对镜像后端驱动程序。Glance 和 Cinder 都支持 sheepdog 后端,因此这将补充这些项目所做的努力。
提议的变更¶
此更改将扩展 libvirt 驱动程序的几个部分。通常,这些更改与 RBD 驱动程序所需的更改非常相似。这些更改将使 Sheepdog 支持与 RBD、QEMU 和其他 libvirt 镜像驱动程序的功能达到一致。
nova.virt.libvirt.driver 将扩展为包含与
cleanup_rbd_instance用于 RBD 后端类似的方式的 Sheepdog 清理函数。一个新的
Image子类将被添加到nova.virt.libvirt.imagebackend中,用于 Sheepdog。将在需要时向
nova.virt.libvirt.utils添加辅助函数。/etc/nova/rootwrap.d/filters 将扩展为支持用于与 Sheepdog 交互的
dog命令的 rootwrap。有关配置更改,请参阅部署影响。
备选方案¶
Cinder 已经支持 Sheepdog 卷。另一种选择是仅使用该驱动程序并仅从卷启动实例。这个选项存在两个问题。首先,它不支持实例磁盘在实例销毁后被删除的情况。其次,对于最终用户来说,它需要在实例启动之前额外步骤来配置卷。
数据模型影响¶
无。
REST API 影响¶
无。此蓝图不会进行 REST API 更改。
安全影响¶
nova-compute 机器上 ‘dog’ 命令的 Rootwrap。
通知影响¶
无。没有计划进行新的通知。
性能影响¶
无。
其他最终用户影响¶
无。此蓝图对 python-novaclient 或任何其他最终用户界面没有影响。
其他部署者影响¶
要使用此功能,部署者首先必须设置一个 sheepdog 集群,然后对在运行 nova-compute 进程的机器上 nova 进行一些配置更改。如果 Sheepdog 要与 Glance 和 Cinder 一起使用,部署者还必须对这些服务进行适当的配置更改。
要设置 Sheepdog 集群,请遵循 Sheepdog 提供的安装指南 [1]。设置 Sheepdog 集群后,必须配置每个 nova-compute 进程。必须在 [libvirt] 部分的 nova.conf 或 nova-compute.conf 中设置以下选项:
images_type=sheepdog必须将其设置为指示应使用 sheepdog。images_sheepdog_host=locahost如果运行 nova-compute 进程的机器不是 sheepdog 集群的成员,或者不是集群内的网关节点,请更改此项。images_sheepdog_port=7000`如果 sheep 进程正在侦听与默认端口不同的端口,请更改此项。
对于进行持续部署的站点,此更改不会产生任何影响,直到部署者更改 images_type 设置以明确切换使用 Sheepdog 的 nova-compute 机器。
此更改不需要数据库迁移。
开发人员影响¶
此更改将向 libvirt 驱动程序添加额外的磁盘后端,从而略微增加代码支持成本。
实现¶
负责人¶
- 主要负责人
<scott-devoid> Scott Devoid
- 其他贡献者
<None>
工作项¶
实现从 Glance 镜像启动的 Sheepdog 镜像的基本支持。
实现快照支持。
依赖项¶
无
测试¶
在 Tempest 可以对 Nova、Glance 和 Cinder 的 Sheepdog 驱动程序运行功能测试之前,需要 Devstack 集成。已经提出了一项补丁,该补丁将对每个服务使用 Sheepdog。 [2]
我认为,这将通过 Tempest 测试对 Sheepdog 驱动程序进行许多功能测试。但是,需要定义一个 Jenkins 作业,并且需要配置虚拟机来运行这些作业。尚不清楚 openstack-infra 是否愿意或能够承诺增加 CI 测试运行的次数。为此安排了 Juno Summit。 [3]
文档影响¶
需要使用新的配置选项更新配置参考。请参阅部署影响部分。
云管理员或操作指南应更新为包含一个部分,详细描述如何为 nova 配置 Sheepdog 以及应考虑哪些方面,例如集群大小、Zookeeper 与 Corosync、网关节点的使用。
这些文档更改将作为此蓝图的一部分发生。