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外驱动程序的命名空间为
实时迁移数据对象
在Ocata之前,为了使用实时迁移,必须运行自定义的nova_powervm conductor来引入
测试
Tempest测试
由于tempest测试应该是实现无关的,因此现有的tempest测试应该能够针对PowerVM驱动程序运行而不会出现任何问题。
需要平台尚未支持的功能的tempest测试(例如,iSCSI或浮动IP)将无法通过。应从tempest测试套件中省略这些测试。
为PowerVM驱动程序提供了一个示例Tempest测试配置。
项目内部存在详尽的单元测试,用于验证此实现中的特定功能。
功能测试
已创建一个第三方功能测试环境。它监视传入的nova更改集。一旦检测到新的更改集,它将执行现有的生命周期API测试。根据结果(日志)提供非阻止投票(+1或-1)。
API测试
现有的API应有效。所有测试均计划在功能测试系统和单元测试中进行。
文档影响
用户文档
请参阅dev-ref获取有关如何配置、贡献、使用等此驱动程序实现的文档。
开发者文档
现有的Nova开发者文档通常足够。然而,在合并到Nova之前,我们将维护dev-ref文档的子集。
参考资料
PowerVM REST API规范(可能需要根据可用性更新版本):http://ibm.co/1lThV9R
PowerVM虚拟化简介和配置:http://www.redbooks.ibm.com/abstracts/sg247940.html
PowerVM最佳实践:http://www.redbooks.ibm.com/abstracts/sg248062.html
nova_powervm-9.0.0.tar.gz 的散列
算法 | 散列摘要 | |
---|---|---|
SHA256 | a92a514c03d3ffaaec47384cd4e1c66d173869dbe25a9cb9385c6459faf07365 |
|
MD5 | a923caffc15d266f0413dc4542da0c5b |
|
BLAKE2b-256 | 0adb596ebab4ae43c5cdcb6569846e1bc57ea58b09c913980b3d90696e50e2af |
nova_powervm-9.0.0-py2.py3-none-any.whl 的散列
算法 | 散列摘要 | |
---|---|---|
SHA256 | 26b33f46af6360b3a16aa2f7255f230b84403e27ee31f09c31c3811984066ed3 |
|
MD5 | 705810e8f4d989dfdd48246781ff9ac0 |
|
BLAKE2b-256 | c0c44ec5b781a6bba3bafc18e4ea1e6a853abf03de4b12028bcdc24791651790 |