PowerVM 驱动集成 - 第一阶段

https://blueprints.launchpad.net/nova/+spec/powervm-nova-compute-driver

PowerVM 驱动一直以树外方式开发,但其目的是提供树内实现。在它可以集成到树内之前,Nova 核心团队提出了一些要求,这些要求已经得到满足。这份蓝图是系列蓝图中的第一份,旨在逐步实现 PowerVM 驱动在树内的集成。

问题描述

PowerVM 驱动为 AIX、IBM i 和在 PowerVM 管理程序上运行的 Linux 虚拟机提供 OpenStack 支持,目前正在提议将其集成到主 Nova 树中。然而,由于树外驱动程序在过去几个 OpenStack 版本中已经包含大量功能和成熟度,因此计划将其引入树内。推动完全集成的过程预计将跨多个 OpenStack 版本进行。这份第一份蓝图旨在为 Ocata 版本提供最小的 Nova 集成。

PowerVM 驱动团队已经满足了 Nova 核心团队提出的以下要求。

  • CI 正在运行并发布针对 Nova 和 nova-powervm 驱动程序的结果:结果是公开可用的,CI 的配置也是公开的。根据 Nova 核心团队的指导,CI 针对所有 Nova 变更集运行,但目前未对补丁进行投票,因为它不是树内驱动程序。 CI 的配置 也公开可用。

  • PowerVC 以外的外部用户:公司正在积极使用 PowerVM 驱动程序集成到使用 Kolla 和 RDO 的 OpenStack 云中。PowerVM 驱动团队还将 PowerVM 添加到 OpenStack-Ansible 项目中,PowerVM 现在是 OSA 的目标平台。

  • 展示对驱动程序的承诺:我们第一个支持的版本是 Liberty,并且我们继续维护、增长和扩展驱动程序,后续每个版本都遵循稳定分支支持模型。我们致力于遵循 OpenStack 方式 开发驱动程序,采用开源代码、开放的设计/开发以及开放的社区(IRC @ #openstack-powervm 等)。PowerVM 驱动程序符合 Nova 计算驱动程序的设计,并遵循社区开发方向。我们还确保开发团队积极参与上游开发 - 参加 IRC 会议、中期周期和峰会。

树外驱动程序将在树内驱动程序集成时继续维护、支持和扩展。对于第一阶段,预计新代码将首先提议到树外驱动程序,然后再提议到树内。随着驱动程序集成进一步推进,该过程将转变为所有代码都提议到树内。但是,对于任何贡献(无论是树内还是树外),这份蓝图的主要贡献者将确保在此过渡期间将更改提议到另一个驱动程序。

用例

第一阶段用例

  • 用户应该能够使用基于 glance 的镜像,在具有 PowerVM 管理程序的系统上进行基本的网络部署。该镜像可以是 Linux(RHEL、SLES、Ubuntu 等…)、AIX 或 IBM i。

  • PowerVM 实时迁移对象 应该 集成到核心 Nova 中。

提议的变更

提出的更改是提交一系列补丁,构建足够的基本功能以支持在 PowerVM 上部署基于 glance 的虚拟机。这部分驱动程序代码(以及相关的单元测试)将支持诸如

  • 基本的 VM 生命周期任务(启动、关闭、重启、快照等)

  • 实例状态

  • VNC 控制台

  • 使用 Open vSwitch Neutron 代理的 Flat/VLAN 网络

  • Config drive

驱动程序的第一个阶段旨在获得 支持矩阵 中的 强制可选 选项的最低限度。

PowerVM live 迁移对象也将被集成,以减少操作员表达的摩擦。集成该对象使现有操作员部署更容易。

在后续版本中,我们将努力将更多功能引入 Nova 树中,但我们认为这是一个长期的旅程。

以下是一些作为未来蓝图的一部分,但本蓝图不包含的具体功能

  • 调整大小

  • 实时迁移

  • 冷迁移

  • Cinder 卷支持

  • 共享以太网支持(PowerVM 网络技术)

还有一些其他功能(当前集成在树外驱动程序中),但它们将在后续蓝图中提出。

备选方案

  1. 集成整个驱动程序。这对于一个版本来说过于繁琐,并且需要过多的核心审查人员时间。

  2. 不集成驱动程序。由于有驱动程序的用户,并且 Nova 的方向是拥有树内驱动程序,这不可行。

  3. 通过 Nova 官方支持树外驱动程序。允许集成树内驱动程序所需的驱动程序对象,以便为树外驱动程序添加(例如,实时迁移对象)。这曾经被讨论过,但当时认为这并不理想(因为所有官方驱动程序都在树内)。

数据模型影响

没有核心数据模型影响。PowerVM 的实时迁移对象将被集成。

REST API 影响

安全影响

通知影响

其他最终用户影响

性能影响

没有性能影响。集成不会对现有代码路径产生性能影响。

其他部署者影响

希望使用 PowerVM 驱动程序的部署者需要在他们的 conf 文件中更改 compute_driverpowervm。树内 PowerVM 驱动程序最初将具有非常有限的功能集。如上所述,他们可以安装树外 nova-powervm 驱动程序以获得额外的功能,同时团队在多个版本中努力集成驱动程序。

对于第一次集成,部署者除了设置 compute_driver 类型之外,将不需要任何配置。该驱动程序将在管理程序支持矩阵中进行文档记录(以及树内的功能)。

将引入对 pypowervm 的新依赖项。这是一个第三方开源库,允许其使用者驱动 PowerVM 虚拟化。

PowerVM 实时迁移对象将被集成到 Nova 中。即使它使用尚未在集成 PowerVM 驱动程序中可用的功能,它也能减轻部署者在使用树外驱动程序期间的负担(在过渡期间),这样他们就不必在控制器节点上安装 nova-powervm。我们有多位部署者指出这对他们现有的部署提出了挑战。

开发人员影响

驱动程序 API 没有变化。PowerVM 驱动程序将符合现有的 Nova API。

实现

负责人

主要负责人

efried esberglu thorst

其他贡献者

wangqinw adreznec

工作项

  • 添加 pypowervm 依赖项

  • 创建 powervm 驱动程序目录

  • 添加对基本生命周期任务的支持(创建、电源开启/关闭、删除)

  • 添加对基于 OVS 的网络的支持

  • 将 PowerVM 实时迁移对象添加到 nova

  • 添加通过 VNC 的控制台支持

  • 增加现有 PowerVM CI 的范围,以包括树内 PowerVM 驱动程序。在过渡期间,对于每个 Nova 变更,将需要启动两个作业(一个用于树外,一个用于树内)。

依赖项

  • pypowervm - 第方开源库,允许控制 PowerVM 平台。

  • PowerVM 与 NovaLink - PowerVM 是管理程序,NovaLink 是基于 Linux 的虚拟化管理 VM。Novalink 虚拟化管理 VM 允许 nova-compute 进程在系统本身上运行。

测试

所有代码路径都通过标准 Tempest 测试作为我们 CI 的一部分运行。该代码还将包含大量的单元测试。此代码来自树外 nova-powervm 驱动程序。CI 基础设施还将继续支持树外 nova-powervm 驱动程序的自动化测试。

CI 的投票将仅针对树内驱动程序启用。根据我们与 Nova 核心团队的讨论,我们不会为树外驱动程序启用投票。但是,两个运行的日志都是公开可用的,并且我们有专门的团队成员监控和支持 CI。

不需要新的测试。PowerVM 驱动程序旨在符合 Nova 模型。

将进行外部测试以验证性能和可扩展性。这已经在树外驱动程序上完成了。还将验证 RefStack 合规性,但我们预计第一阶段不会通过,因为它没有开箱即用的所有必需支持。

文档影响

我们将与 ID 团队合作创建有关 PowerVM 驱动程序的新文档。还将提出对管理程序驱动程序矩阵的更新。

参考资料

历史

从历史上看,还有其他几个 Power 驱动程序。第一个 PowerVM 驱动程序是在 PowerVM 上构建的,并且仅适用于名为 IVM 的组件。该挑战在于它需要 nova-compute 在单独的服务器上运行并 SSH 以发出命令。它也没有很好地与其他 OpenStack 组件集成。

还有 PowerVC OpenStack 驱动程序。它位于 PowerVC 之上,是一种集群化管理模型。由于远离集群化管理,这并不是 OpenStack Nova Compute 批准的管理模型。它从未被拉入树内。

这种模式不同,对 PowerVM 管理程序进行了核心更改。它已经在该领域发货了很长时间,并且已经构建了产品在其之上。它还符合 OpenStack Nova 的开发模型,并拥有致力于此开发的开发人员多年。

最后,Power 系统也原生运行 Linux。对于希望在 Power 上使用 KVM 的人,标准 libvirt 驱动程序也可用。但是,该支持仅限于基于 Linux 的客户端虚拟机。

提供了一个大致的时间表如下。

  • 2013 年 11 月:由于缺乏 CI 和开发,PowerVM IVM 驱动程序被删除。也没有符合 Nova 核心团队希望 Nova compute 进程在系统本身上运行的方向。

  • 2014 年 10 月:基于 NovaLink 的新 PowerVM 驱动程序的第一次提交

  • 2015 年 5 月:在峰会上宣传了基于 NovaLink 的 PowerVM 驱动程序。NovaLink 更改了管理程序本身以匹配 OpenStack 模型。所有 OpenStack 代码都是从一开始就以开源方式开发的。

  • 2015 年 10 月:基于 Liberty 的树外 nova-powervm 驱动程序发布。

    全部公开开发。支持
    • 生命周期操作

    • 从 glance 生成

    • Cinder FC 支持

    • 具有 networking-powervm 代理的 Nova

    • 实时迁移

    • AIX 和 Linux VM

    • DevStack

    • TaskFlow 在其核心中支持失败操作的优雅回滚

  • 2016 年 1 月:持续集成环境上线。

  • 2016 年 4 月:nova-powervm 驱动程序更新为 Mitaka 版本。

    所有 nova-powervm 开发都在发布期间公开进行。进行了初始的第三方贡献。

    添加了新功能
    • 冷迁移/重建/调整大小

    • 可扩展性测试

    • 基本的 VNC 控制台

    • IBM i VM

    • 规模和弹性测试

  • 2016 年 7 月:CI 正在运行所有 Nova 补丁集。不投票(由于 Nova 核心团队的指导),但日志仍然发布到日志服务器。

  • 2016 年 10 月:nova-powervm 驱动程序更新为 Newton 版本。更新为
    • 通过 PowerVM vNIC 的 SR-IOV

    • Linux Bridge / OVS

    • 增强 VNC 控制台

    • 与 OpenStack Ansible 集成(nova-powervm 之外)

修订版

发布名称

描述

Ocata

引入