添加 z/VM 支持

https://blueprints.launchpad.net/nova/+spec/add-zvm-driver-rocky

在 nova 树中添加 z/VM 支持。

z/VM 提供高度安全和可扩展的企业云基础设施,以及在 IBM z 系统和 IBM LinuxONE 上高效运行多种关键应用程序的环境,支持比任何其他平台在单个占位符上更多的虚拟机。这些 z/VM 虚拟机可以运行 Linux、z/OS 等。详细信息请参见 http://www.vm.ibm.com/

问题描述

z/VM

z/VM 驱动程序团队参考之前的 virt 驱动程序集成,已经满足 Nova 核心团队提出的以下要求。

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

  • z/VM 本身以外的外部用户:公司正在积极使用 z/VM 驱动程序集成到 OpenStack 云中,例如 SuSE;Canonical 和 RHEL 正在讨论中。目前 Openmainframe 项目 是主导的大型技术社区和主框架启用开放项目,包括 openstack 其他开源项目。

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

z/VM 驱动程序的 Config Drive

现在有两种方法可以将元数据从 openstack (nova) 传递到生成的服务器,一种是 Metadata,另一种是 Config Drive

目前,z/VM 驱动程序仅支持 Config Drive,即 nova 计算服务打包由 nova 社区的 configure drive 构建生成的 ISO9660 或 vfat 格式,服务器在云 Active 引擎之前挂载该文件(默认情况下是 cloud-init);当 cloud-init 启动时,它会检查输入的元数据并相应地更新服务器的 IP、主机名和其他项目。

元数据服务是一个可选功能,并被某些功能期望,而某些部署者由于安全问题而不使用它,z/VM 驱动程序团队将在不久的将来添加对元数据服务的支持(可能通过另一个 nova-spec)。

特殊的 Active 引擎

根据上述讨论,cloud-init 是目前云中主要和最常用的 Active 引擎。cloud-init 具有 Config Drive 的先决条件,但 z/VM 本身无法在虚拟机的定义中模拟 iso9660 格式的磁盘,因此 z/VM 驱动程序团队引入了一个名为 zvmguestconfigure 的小型 Active 引擎。

zvmguestconfigurez/VM Cloud Connector 的一部分,nova z/VM 驱动程序使用它来管理 z/VM。它记录在 z/VM 镜像构建 中,包括为什么需要 Active 引擎以及它的位置,此外,除了用户创建镜像外,它还提供了有关不同发行版的说明集。

基本工作流程将是

  • Nova 启动一个实例,并通过 config drive 创建元数据

  • config drive (ISO9660) 从 nova 计算节点发送到生成的实例

  • 生成的实例已经安装了 zvmguestconfigure Active 引擎

  • 在启动阶段,zvmguestconfigure 将获取 config drive 并挂载它

  • cloud-init 将查找 config drive 并处理更新

Neutron z/VM 代理

z/VM nova 驱动程序需要与 neutron 合作以添加 NIC。该代理是 neutron zvm 代理,目前它使用 ML2 插件。

用例

  • 用户应该能够部署一个基于 glance 的镜像,并在具有 z/VM 超visor 的系统上进行基本的网络配置。该镜像可以是 Linux (RHEL, SLES, Ubuntu 等)。

提议的变更

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

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

  • 实例状态

  • 控制台输出

  • 使用 z/VM neutron 代理的 Flat/VLAN 网络

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

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

现在在树外驱动程序中支持的一些特定功能,这些功能将作为不属于本次蓝图的未来蓝图的一部分

  • 调整大小

  • 冷迁移

备选方案

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

  2. 不集成驱动程序。由于有用户在使用该驱动程序,并且 Nova 的方向是将驱动程序置于树内,因此这不是一个选项。

数据模型影响

REST API 影响

安全影响

通知影响

其他最终用户影响

性能影响

其他部署者影响

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

对于首次集成,部署者除了设置 compute_driver 类型外,将不需要任何配置。该驱动程序将在超visor 支持矩阵中记录(以及其树内的功能)。

开发人员影响

升级影响

实现

负责人

主要负责人

jichenjc rhuang ychuang

其他贡献者

工作项

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

  • 添加控制台输出

  • 将现有的 z/VM CI 范围扩大到包括树内的 z/VM 驱动程序。在过渡期间,每次 Nova 更改都需要启动两个作业(一个用于树外,一个用于树内)。

依赖项

测试

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

文档影响

由于现在没有 ID 团队,我们将主要致力于以下文档和其他与 virt 驱动程序相关的文档

https://docs.openstack.org/nova/latest/admin/arch.html#hypervisors https://docs.openstack.org/nova/latest/admin/configuration/hypervisors.html https://docs.openstack.org/developer/nova/support-matrix.html

参考资料

历史

z/VM 早在 2013/2014 年左右就提交了补丁并与 nova 社区进行了一些讨论。当时我们缺乏 CI,因此我们遵循了创建 CI 的指南并做了更多的社区贡献。

我们还投入了更多的 CI 测试和与更广泛的社区(如上述 Open mainframe 项目 https://www.openmainframeproject.org/)的更多合作,我们希望继续我们的努力,使 z/VM 被接受为树内插件。

修订版

发布名称

描述

Queens

介绍、批准、实施开始

Rocky

重新提出