支持 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.confnova-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、网关节点的使用。

这些文档更改将作为此蓝图的一部分发生。

参考资料