实时迁移

Compute Engine 提供了实时迁移技术,可确保即使在发生主机系统事件(例如软件或硬件更新)时,虚拟机实例依然能够正常运行。Compute Engine 可将正在运行的实例实时迁移到同一区域中的其他主机,而不要求虚拟机重新启动。这样 Google 就可以在不中断任何虚拟机的情况下,执行必要的维护任务,以确保基础架构受到保护且安全可靠。当虚拟机计划进行实时迁移时,Google 会向访客提供即将进行迁移的通知

实时迁移可确保实例在发生以下事件时正常运行:

  • 常规基础架构维护和升级。
  • 数据中心中的网络和电网维护。
  • 内存、CPU、网络接口卡、磁盘、电源等硬件发生故障。这是系统尽最大努力实现的结果;如果硬件完全无法运行或阻止实时迁移,则虚拟机会崩溃并自动重启,而且系统会记录 hostError
  • 主机操作系统和 BIOS 升级。
  • 与安全相关的更新(需要快速响应)。
  • 系统配置更改,包括更改主机根分区的大小来存储主机映像和软件包。

实时迁移不会更改虚拟机本身的任何属性或特性。 实时迁移过程仅将正在运行的虚拟机从一个主机转移到同一地区中的另一个主机。 所有虚拟机特性和属性会保持不变,包括内部 IP 地址和外部 IP 地址、实例元数据、块存储数据和卷、操作系统和应用状态、网络设置、网络连接等。

实时迁移过程的工作原理

当 Google 将正在运行的虚拟机实例从一个主机迁移到另一个主机时,会以一种对于来宾操作系统及与之进行通信的任何人都透明的方式,将完整的实例状态从源位置转移到目标位置。无缝地完成这项工作需要使用多种组件,但此处只展示了高级步骤:

将虚拟机及其每个资源迁移到新的主机系统,而无需重启客机操作系统。
实时迁移组件

该过程开始后,系统会发出一个关于需要将虚拟机从其当前的主机中迁移的通知。该通知的开头可能会阐明文件变更(指示有新的可用 BIOS 版本)、硬件操作计划维护或可预见的硬件故障自动发出的信号。

Google 的集群管理软件会持续监控这些事件,并根据控制数据中心的政策(例如容量利用率和每位客户可以同时迁移的虚拟机数量)安排这些事件发生的时间。

在选定要迁移的虚拟机后,Google 会通知客机即将进行迁移。等待一段时间后,系统会选择一个目标主机,并要求该主机设置一个新的空“目标”虚拟机,用于接收要迁移的“源”虚拟机。系统使用身份验证在来源位置和目标位置之间建立连接。

虚拟机迁移过程分为以下三个阶段:

  • 源限能期间,虚拟机仍在源位置运行,而大部分状态会从源位置发送到目标位置。例如,Google 会将所有访客内存复制到目标位置,同时跟踪源位置中已更改的页面。源限能所花费的时间是访客内存大小和页面更改速率的函数。

  • 断电过程,这是一段非常短暂的时刻。在这段时间内,虚拟机不在任何位置运行,并会处于暂停状态,而系统会发送开始在目标位置运行虚拟机所需的所有剩余状态。在源限能过程中,当发送状态达到收益递减点时,虚拟机会进入中断阶段。系统会使用一种算法,以根据访客虚拟机做出更改的速率来平衡要发送的内存字节数。

  • 目标限能期间,虚拟机会在目标虚拟机上运行。源虚拟机仍然存在,并且可以为目标虚拟机提供支持的功能。例如,源虚拟机将为进出目标虚拟机的数据包提供转发服务,直到网络架构与目标虚拟机的新位置一致。

最终,迁移会完成,并且系统会删除源虚拟机。您可以在虚拟机日志中查看迁移发生情况。实时迁移是我们平台的关键组件,因此 Google 会以非常高的审查水准持续对实时迁移进行测试。测试期间,我们使用故障注入技术,来触发迁移算法中所有相关点的故障。我们会为每个组件生成主动故障和被动故障。实现此复杂的多方面过程需要在整个基础架构中进行深度集成,并且还需要一组强大的时间安排、编排和自动化过程。

实时迁移和机密虚拟机

机密虚拟机不支持实时迁移。这些实例必须设置为停止并选择性地重启。Compute Engine 会在机密虚拟机停止前 60 秒发出通知。如需详细了解这些维护事件通知,请参阅收到实时迁移通知

实时迁移和 GPU

附加了 GPU 的实例无法迁移。这些实例必须设置为停止并选择性地重启。Compute Engine 会在附加了 GPU 的虚拟机实例停止之前 60 分钟发出通知。要详细了解这些维护事件通知,请参阅收到实时迁移通知

要详细了解如何在附加了 GPU 的情况下处理主机维护事件,请阅读 GPU 文档中的处理主机维护事件

实时迁移和本地 SSD

Compute Engine 还可以实时迁移附加了本地 SSD 的实例,从而在进行任何计划中的维护之前将虚拟机和本地 SSD 转移到新机器。

实时迁移和 Cloud TPU

Cloud TPU 不支持实时迁移。

抢占式实例的实时迁移

您不能将抢占式实例配置为实时迁移。默认情况下,抢占式实例的维护行为始终设置为 TERMINATE,而且您无法更改此选项。您无法为抢占式实例设置自动重启选项,但可以在抢占式实例被抢占后,通过虚拟机实例详情页面再次手动重启这些实例。

  1. 转到“虚拟机实例”页面
  2. 选择您的抢占式实例。
  3. 虚拟机实例详情页面顶部,点击启动

如果需要将实例更改为不再可抢占,请从抢占式实例中分离启动磁盘,并将其挂接到未配置为抢占式的新实例。您还可以为启动磁盘创建快照,并用它创建不具有抢占性的新实例。

后续步骤