支持使用虚拟持久内存进行实时迁移¶
https://blueprints.launchpad.net/nova/+spec/support-live-migration-with-virtual-persistent-memory
QEMU 和 Libvirt 支持使用虚拟持久内存(简称 vpmem)进行实时迁移。本规范旨在在 OpenStack Nova 中启用此支持。
问题描述¶
从 Train 版本开始,OpenStack Nova 支持虚拟持久内存的基本功能,包括资源跟踪以及创建/调整具有虚拟持久内存的实例等。请参阅 虚拟持久内存规范。QEMU 和 Libvirt 支持使用虚拟持久内存进行预复制实时迁移,不支持使用 vpmem 进行后复制,因此本规范旨在启用使用 vpmem 进行预复制实时迁移。
目前,vpmem 存储在 instance.resources 中作为 ResourceMetadata 对象,或在迁移时存储在 migration_context 中。就 Nova 而言,需要解决几个问题
即使 nova 配置中启用了后复制,也要禁用使用 vpmem 的后复制实时迁移
在迁移时从 placement 声明资源
根据 placement 分配的资源为实例分配特定资源并跟踪它们
准备源主机的目标 XML,用于启动实时迁移,这意味着我们需要将目标主机上声明的资源信息带到源主机
在实时迁移成功/失败后,需要正确清理 vpmem 资源
用例¶
管理员需要在实时迁移期间正确迁移虚拟持久内存数据。
提议的变更¶
Nova Conductor:如果为实时迁移指定了参数“host”和“force”,当前代码首先将在目标主机上为实例分配特定资源,然后从 placement 声明资源,我们需要反转顺序,因为我们依赖于从 placement 获取的分配来分配特定资源,这也是我们在以下 Nova compute 中的提议更改。在开始实时迁移之前,我们需要检查并拒绝 vpmem 实时迁移,如果源主机或目标主机不支持使用 vpmem 进行实时迁移。
Nova Compute:使用资源跟踪器根据 placement 分配的资源在目标主机上分配和跟踪特定资源,并将其存储在 instance.migration_context 中(重用 vpmem 调整实现中引入的代码)
Libvirt Driver 更改以禁用 vpmem 后复制:如果实例具有 vpmem,即使 Nova 配置中启用了后复制,也要禁用后复制实时迁移
Libvirt Driver 更改以获取 vpmem xml:为实时迁移准备源主机上的目标 XML,将目标虚拟持久内存信息更新到目标 XML 中
Libvirt Driver 更改以清理 vpmem:如果实时迁移失败,rollback_live_migration_at_destination 将从 instance.resources 中清理 vpmem,但 instance.resources 仍然指向源主机上的资源。还有其他类似清理问题。我们可以将一个额外的参数传递给 driver.cleanup,以告知此清理是在源/目标主机上进行的。或者,我们可以使用 mutated_migration_context 临时将 instance.resources 切换到目标主机上的新资源。这是一种实现细节,应该在编码时确定。总之,我们应该小心 vpmem 清理,尤其是在迁移期间。
备选方案¶
无
数据模型影响¶
我们使用现有的 instance.migration_context 将目标 vpmem 信息带到源主机。
REST API 影响¶
无
安全影响¶
无
通知影响¶
无
其他最终用户影响¶
无
性能影响¶
在虚拟化层中,QEMU 将通过网络复制 vpmem,就像复制易失性内存一样。但是,由于 vpmem 的典型大容量,实时迁移可能需要更长的时间。如果实例工作负载正在积极写入 vpmem,则实时迁移可能永远无法完成,这与标准内存一样。
其他部署者影响¶
无
开发人员影响¶
无
升级影响¶
源主机和目标主机都需要升级,然后才能支持使用 vpmem 进行实时迁移,否则将被拒绝。
实现¶
负责人¶
- 主要负责人
luyaozhong
- 其他贡献者
xuhj rui-zang
功能联络人¶
luyaozhong
工作项¶
在 Nova 中实现虚拟持久内存实时迁移管理
准备好第三方 CI 测试
依赖项¶
Kernel 版本 >= 4.2
QEMU 版本 >= 3.1.0
Libvirt 版本 >= 5.0.0
ndctl 版本 >= 62
daxio 版本 >= 1.4.1
测试¶
单元测试
需要第三方 CI 在真实硬件上进行测试。对于 Nova 中现有的虚拟持久内存功能,在第三方 CI 中有 2 个 tempest 测试,即创建和相同主机调整大小。此外,还需要多节点冷迁移、实时迁移和搁置/取消搁置测试。
文档影响¶
更新 Nova 中的虚拟持久内存文档“高级配置”,以通知管理员 Nova 支持使用虚拟持久内存进行实时迁移。
参考资料¶
历史¶
发布名称 |
描述 |
|---|---|
Ussuri |
引入 |