KubeVirt 09:迁移策略

Kubevirt 实时迁移的三种策略

在迁移的过程中,源 VM 需要将整个状态传输到目标 VM,VM 的状态主要就是内存,如果有足够可用的资源,迁移会很好的收敛,如果资源不够需求,迁移可能会超时并最终导致失败。

影响迁移的主要因素是内存脏页率,因为内存会不断的迁移到目标节点,同时又会有相同的内存页发生了更改。可以根据情况选择合适的策略。

迁移策略

有三种支持的迁移策略:

  • Pre-copy
  • Post-copy
  • Auto-converge

Pre-copy

Pre-copy 的迁移过程:

  • 目标 VM 已创建,但是 Guest 仍在源 VM 上运行
  • 源开始向目标发送 VM 状态块(内存),直至所有状态都已转移到目标 VM
  • Guest 开始在目标 VM 上运行
  • 删除源 VM

在大多数情况下,这种策略是最安全、最快的策略,也很容易取消。这是推荐测策略,如果无法满足可指定其它的策略。

Post-copy

Post-copy 的迁移过程:

  • 目标 VM 已创建
  • Guest 正在目标 VM 上运行
  • 源开始向目标发送 VM 状态的块数据(内存)
  • 当在目标 VM 上运行的 Guest 访问内存时:
    • 如果目标 VM 存在内存,则可以访问
    • 否则,目标 VM 会从源 VM 请求内存
  • 在目标 VM 上更新所有内存状态后,源 VM 将被删除

这种策略最典型的特征是 Guest 立即开始在目标 VM 上运行,这种方式有优点也有缺点。

优点:

  • 相同的内存块不会拷贝两次
  • 高脏页率影响较小
  • 消耗更少的带宽

缺点:

  • VM 状态没有一个真实的类源,如果目标 VM 或Guest VM 崩溃,VM 将无法恢复。
  • 慢预热,当 guest 访问目标 VM 上没有的内存时,需要等待从源 VM 上复制过来。
  • 比 Pre-copy 慢
  • 更难取消迁移

Auto-converge

Auto-converge 是一种帮助 Pre-copy 迁移更快收敛的技术,无需更改迁移工作原理的核心算法。

由于高脏页率通常是迁移不收敛的最重要因素,因此自动收敛只会限制 Guest 的CPU。
如果迁移收敛得足够快,Guest 的CPU就不会受到限制或受到非常低的限制。但是,如果迁移收敛得不够快,随着时间的推移,CPU将受到越来越多的限制。

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理

滚动至顶部