维护事件期间的实时迁移过程


在虚拟机 (VM) 实例 或裸金属实例的底层硬件上的计划内维护事件期间,主机服务器不可用。为了在主机事件期间让实例保持运行状态,Compute Engine 会将实例实时迁移到同一可用区中的其他主机服务器。如需详细了解主机事件,请参阅主机事件简介

借助实时迁移, Google Cloud 可以在不中断工作负载、重启实例或修改实例的任何属性(例如 IP 地址、元数据、块存储数据、应用状态或网络设置)的情况下执行维护。

实时迁移会在以下情况下让实例保持运行状态:

  • 基础架构维护。基础架构维护包括数据中心中的主机硬件、网络和电网以及主机操作系统 (OS) 和 BIOS。

  • 与安全相关的更新和系统配置更改。这包括安装安全补丁以及更改主机根分区的大小以存储主机操作系统映像和软件包等事件。

  • 硬件故障。 这包括内存、CPU、网络接口卡和磁盘故障。如果在服务器完全无法运行之前检测到故障,Compute Engine 会将实例预防性地实时迁移到新的主机服务器。如果硬件完全无法运行或阻止实时迁移,则实例会终止并自动重启。

Compute Engine 仅会实时迁移将主机维护政策设置为迁移的虚拟机。如需了解如何更改主机维护政策,请参阅设置虚拟机主机维护政策

实时迁移过程和本地 SSD 磁盘

Compute Engine 可以实时迁移挂接了本地 SSD 磁盘的实例(不包括 Z3 实例)。Compute Engine 会在进行任何计划中的维护之前,将虚拟机实例及其本地 SSD 数据转移到新机器。

限制

以下虚拟机类型不支持实时迁移:

  • 裸金属实例。使用裸金属机器类型创建的实例不支持实时迁移。这些实例的维护行为分别设置为 TERMINATERESTART
  • 大多数机密虚拟机实例。只有使用运行 AMD SEV 的 AMD EPYC Milan CPU 平台的 N2D 机器类型支持机密虚拟机实例的实时迁移。所有其他机密虚拟机实例都不支持实时迁移,且必须设置为在主机维护事件期间停止并选择性地重启。如需了解详情,请参阅实时迁移
  • 挂接了 GPU 的虚拟机。挂接了 GPU 的虚拟机实例必须设置为停止并视情况重启。Compute Engine 会在挂接了 GPU 的虚拟机实例停止前发出通知,具体取决于 GPU 类型:

    • 对于大多数 GPU,Compute Engine 会在 60 分钟前发出通知。
    • 对于在 AI Hypercomputer Cluster Director 上运行的 GPU 系列,Compute Engine 会在 10 分钟前发出通知。

    如需详细了解这些维护事件通知,请参阅查询元数据服务器以获取维护事件通知

    如需详细了解如何在挂接了 GPU 的情况下处理主机维护事件,请参阅 GPU 文档中的处理主机维护事件

  • Cloud TPU Cloud TPU 不支持实时迁移。
  • 存储优化型虚拟机。具有 88 个或更多 vCPU 的 Z3 虚拟机不支持实时迁移。这些虚拟机的维护行为设置为 TERMINATERESTART。 在维护事件期间,Compute Engine 会保留 Titanium SSD 上的数据,如实例终止后磁盘持久性中所述。

实时迁移过程的工作原理

当虚拟机计划进行实时迁移时,Compute Engine 会提供通知,以便您为此实时迁移中断做好工作负载和应用准备。在实时迁移期间, Google Cloud 观察到最短中断时间,通常短于 1 秒。如果虚拟机未设置为实时迁移,则 Compute Engine 会在主机维护期间终止虚拟机。设置为在主机事件期间终止的虚拟机会停止并(可选)重启

当 Google Cloud 将正在运行的虚拟机从一个主机迁移到另一个主机时,会以一种对于客机操作系统及与之进行通信的任何项都透明的方式,将完整的虚拟机状态从来源位置迁移到目标位置。 无缝地完成这项工作需要使用多种组件,大致步骤如下图所示:

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

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

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

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

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

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

  2. 中断阶段。这是一段非常短暂的时刻。在这段时间内,来源虚拟机不会在任何位置运行,并会处于暂停状态,而系统会发送开始在目标位置运行虚拟机所需的所有剩余状态。在来源位置服务降级阶段,当发送状态变化达到回报递减点时,虚拟机会进入中断阶段。系统会使用某种算法来根据客机虚拟机做出更改的速率平衡要发送的内存字节数。

    在中断事件期间,系统时钟会显示为向前跳转,最多 5 秒。如果中断事件超过 5 秒, Google Cloud 会使用包含在虚拟机客机软件包中的守护程序停止并重新同步时钟。

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

最终,迁移会完成,并且系统会删除源虚拟机。您可以在虚拟机的 Cloud Logging 日志中查看迁移的具体情况。

实时迁移单租户虚拟机

工作负载运行时,您可能需要将虚拟机迁移到其他单租户节点或节点组。如果您将虚拟机移动到一组节点,Compute Engine 会确定要将虚拟机放置在哪个节点上。如需了解单独租用,请参阅单独租用概览

如需将单租户虚拟机迁移到其他节点或节点组,您可以手动启动实时迁移。您也可以手动启动实时迁移,以将多租户主机上的虚拟机迁移到单租户节点。如需了解详情,请参阅手动实时迁移虚拟机

后续步骤