跳转到主要内容

OpenStack Nova的PowerVM驱动程序。

项目描述

IBM PowerVM虚拟机管理程序在POWER硬件上提供虚拟化。PowerVM管理员可以通过使用OpenStack在他们的环境中看到好处。此驱动程序(以及一个与Neutron ML2兼容的代理和Ceilometer代理)为PowerVM的操作员提供了使用OpenStack的原生能力。

问题描述

随着围绕POWER平台生态系统的持续发展,单个OpenStack驱动程序无法满足各种虚拟机管理程序的所有需求。标准的libvirt驱动程序为POWER系统提供对KVM的支持。此nova驱动程序为OpenStack环境提供PowerVM支持。

此驱动程序符合以下要求

  • 在社区内构建

  • 符合OpenStack模式

  • 利用自动化的功能测试和单元测试

  • 通过OpenStack API启用对PowerVM系统的使用

  • 允许通过支持的协议从Cinder附加卷

此驱动程序为PowerVM提供以下使用场景

  • 作为部署者,所有标准生命周期操作(启动、停止、重启、迁移、销毁等)都应在基于PowerVM的实例上得到支持。

  • 作为部署者,我应该能够将实例捕获为镜像。

  • 部署的实例有VNC控制台。

用法

要使用此驱动程序,请在基于NovaLink的PowerVM系统上安装nova-powervm项目。nova-powervm项目具有最小化的配置集。有关更多信息,请参阅dev-ref中的配置选项部分。

建议操作员还使用networking-powervm项目。该项目确保网络桥接支持工作负载所需的基于VLAN的网络。

还可以包含ceilometer-powervm项目。

未来的工作将致力于将PowerVM集成到各种OpenStack部署模型中。

架构概述

该驱动程序实现以下功能

  • 提供与OpenStack模型协同工作的部署。

  • 驱动程序使用PowerVM REST API的新版本实现。

  • 支持使用虚拟I/O服务器(VIOS)托管本地磁盘或通过共享存储池(PowerVM集群文件系统)支持临时磁盘。

  • 通过虚拟SCSI和N-Port ID虚拟化等协议为虚拟机管理程序提供卷支持。

  • 使用共享存储池或从卷启动时,支持实时迁移。

  • 通过兼容ML2的Neutron代理支持网络集成。这是openstack/networking-powervm项目。

  • 提供自动化功能测试,以验证OpenStack社区对PowerVM驱动程序所做的更改。

  • 为驱动程序提供并强制执行彻底的单元、语法和风格测试。

本驱动程序的意图是遵循OpenStack Nova模型。

该驱动程序正在分阶段推广到nova核心项目中,第一阶段由蓝图powervm-nova-compute-driver表示。这两个驱动程序实例的共存引发了一些升级注意事项

数据模型影响

  • evacuate API作为PowerVM驱动程序的一部分得到支持。它可选择将NVRAM数据存储到Swift数据库中。但这不会影响数据模型本身。它只是提供了一个可选的位置,在重建、疏散、上架、迁移或调整大小时,可以存储虚拟机的NVRAM元数据。

REST API影响

无REST API影响。

安全性影响

无已知安全性影响。

通知影响

没有新的通知。该驱动程序期望Neutron代理在VIF插件发生时返回事件,假设Neutron是网络服务。

其他最终用户影响

管理员可能会在nova计算日志中注意到新的日志消息。

性能影响

该驱动程序具有与其他虚拟机管理程序类似的部署速度和敏捷性。它已在特定服务器上测试了多达10个并发部署,同时有几百个虚拟机。

大多数操作的速度相当。部署、附加/分离卷、生命周期等都很快速。

由于项目性质,任何性能影响都限于计算驱动程序。实例的API处理过程不受影响。

其他部署者影响

云管理员需要参考有关如何配置OpenStack以与PowerVM虚拟机管理程序一起使用的文档。

使用“powervm”配置组来包含所有PowerVM特定配置设置。将尽可能重用现有配置文件属性(例如vif_plugging_timeout)。这减少了所需的PowerVM特定项的数量。

项目目标仅为最小化增加属性。部署者可以指定额外的属性以适应其配置。

开发者影响

此驱动程序的代码目前包含在一个powervm项目中。驱动程序位于/nova/virt/powervm_ext/包中,并扩展了nova.virt.driver.ComputeDriver类。

代码通过pypowervm库与PowerVM交互。这个Python绑定是PowerVM REST API的包装器。所有虚拟机管理程序操作都通过此绑定与PowerVM REST API交互。根据需要,驱动程序将维护以支持PowerVM REST API的未来版本。

对于临时磁盘支持,支持本地磁盘或共享存储池(PowerVM集群文件系统)。对于卷附加,驱动程序支持通过虚拟机管理程序支持的协议(例如,光纤通道)的Cinder基于的附加。

对于网络,networking-powervm项目提供Neutron ML2代理。代理为虚拟I/O服务器提供必要的网络配置。PowerVM Nova驱动程序代码为客户端虚拟机创建VIF,但Neutron代理为VLAN创建VIF。

通过第三方持续集成系统提供自动化功能测试。它监视传入的Nova变更集,针对传入的变更运行一系列功能测试(生命周期操作),并提供非阻塞投票(+1或-1)。

除非开发者希望尝试驱动程序,否则这些更改不会对开发者产生影响。

社区影响

此项目的目的是将另一个与社区理念和愿景一致的驱动程序引入OpenStack。目的是将其推广到核心Nova。

替代方案

似乎没有其他替代方案可以将PowerVM支持引入OpenStack社区。

实现

责任人

主要责任人

adreznec efried kyleh thorst

其他贡献者

多个

依赖关系

  • 使用PowerVM REST API规范进行管理。将利用此规范的未来版本:[链接](http://ibm.co/1lThV9R)

  • 建立在[pypowervm库](https://github.com/powervm/pypowervm)之上。这是使用驱动程序的前提条件。

升级注意事项

Ocata之前,仅存在tree外的nova_powervm驱动程序。在Ocata中引入了tree内的驱动程序。

命名空间

在Liberty和Mitaka中,tree外驱动程序的命名空间为。在Newton中,它被移动到。在Ocata中,新的tree内驱动程序占据了命名空间,而tree外驱动程序被移动到。Ocata用户可以选择使用tree内驱动程序,这将提供有限的功能,直到完全集成;或使用tree外驱动程序,它提供完整的功能。有关加载所需驱动程序的设置,请参阅文档。

实时迁移数据对象

在Ocata之前,为了使用实时迁移,必须运行自定义的nova_powervm conductor来引入对象。在Ocata中,此对象包含在核心nova中,因此不需要自定义conductor。

测试

Tempest测试

由于tempest测试应该是实现无关的,因此现有的tempest测试应该能够针对PowerVM驱动程序运行而不会出现任何问题。

需要平台尚未支持的功能的tempest测试(例如,iSCSI或浮动IP)将无法通过。应从tempest测试套件中省略这些测试。

为PowerVM驱动程序提供了一个示例Tempest测试配置

项目内部存在详尽的单元测试,用于验证此实现中的特定功能。

功能测试

已创建一个第三方功能测试环境。它监视传入的nova更改集。一旦检测到新的更改集,它将执行现有的生命周期API测试。根据结果(日志)提供非阻止投票(+1或-1)。

API测试

现有的API应有效。所有测试均计划在功能测试系统和单元测试中进行。

文档影响

用户文档

请参阅dev-ref获取有关如何配置、贡献、使用等此驱动程序实现的文档。

开发者文档

现有的Nova开发者文档通常足够。然而,在合并到Nova之前,我们将维护dev-ref文档的子集。

参考资料

由以下提供支持