在虚拟机 (VM) 实例的底层硬件上的计划内维护事件期间,Compute Engine 可能会将虚拟机迁移到其他主机。为了在主机事件期间让虚拟机保持运行状态,Compute Engine 会将虚拟机实时迁移到同一可用区中的其他主机。如需详细了解主机事件,请参阅主机事件简介。
通过实时迁移,Google Cloud 可以在不中断工作负载、重新启动虚拟机或修改虚拟机的任何属性(例如 IP 地址、元数据、块存储数据、应用状态和网络设置)的情况下执行维护。
除了在计划内主机事件期间让虚拟机保持运行状态之外,实时迁移还会在以下情况下让虚拟机保持运行状态:
基础架构维护。基础架构维护包括数据中心中的主机硬件、网络和电网以及主机操作系统和 BIOS。
与安全相关的更新和系统配置更改。这包括安装安全补丁以及更改主机根分区的大小以存储主机操作系统映像和软件包等事件。
硬件故障。 这包括内存、CPU、网络接口卡和磁盘故障。如果硬件完全失败或阻止实时迁移,则虚拟机会终止、自动重启且 Compute Engine 会记录
hostError
。
Compute Engine 仅会实时迁移将主机维护政策设置为迁移的虚拟机。如需了解如何更改主机维护政策,请参阅设置虚拟机主机维护政策。
实时迁移过程和本地 SSD
Compute Engine 可以实时迁移挂接了本地 SSD 的虚拟机,从而在进行任何计划中的维护之前将虚拟机和本地 SSD 转移到新机器。
限制
以下虚拟机类型不支持实时迁移:
- 大多数机密虚拟机实例。只有使用运行 AMD SEV 的 AMD EPYC Milan CPU 平台的 N2D 机器类型支持机密虚拟机实例的实时迁移。所有其他机密虚拟机实例都不支持实时迁移,并且必须设置为在主机维护事件期间停止,并可选择重启。如需了解详情,请参阅实时迁移。
挂接了 GPU 的虚拟机。挂接了 GPU 的虚拟机实例必须设置为停止并视情况重启。Compute Engine 会在挂接了 GPU 的虚拟机实例停止前 60 分钟发出通知。如需详细了解这些维护事件通知,请参阅获取实时迁移通知。
如需详细了解如何在挂接了 GPU 的情况下处理主机维护事件,请参阅 GPU 文档中的处理主机维护事件。
Cloud TPU Cloud TPU 不支持实时迁移。
抢占式虚拟机。您不能将抢占式虚拟机配置为实时迁移。默认情况下,抢占式实例的维护行为始终设置为
TERMINATE
,而且您无法更改此选项。您无法为抢占式实例设置自动重启选项,但可以在抢占后从虚拟机实例详情页面再次手动启动抢占式虚拟机。如果需要将实例更改为不再可抢占,请从抢占式实例中分离启动磁盘,并将其挂接到未配置为抢占式的新实例。您还可以为启动磁盘创建快照,并用它创建不具有抢占性的新实例。
存储优化型虚拟机。Z3 虚拟机不支持实时迁移。Z3 虚拟机的维护行为设置为
TERMINATE
。
实时迁移过程的工作原理
当虚拟机计划进行实时迁移时,Google Cloud 会提供通知。在实时迁移期间,Google Cloud 可确保最短中断时间,通常远小于 1 秒。如果虚拟机未设置为实时迁移,则 Compute Engine 会在主机维护期间终止虚拟机。设置为在主机事件期间终止的虚拟机会停止并(可选)重启。
当 Google Cloud 将正在运行的虚拟机从一个主机迁移到另一个主机时,会以一种对客机操作系统及与之进行通信的任何项都透明的方式,将完整的虚拟机状态从来源位置迁移到目标位置。无缝地完成这项工作需要使用多种组件,大致步骤如下图所示:
该过程开始后,系统会发出一个关于需要将虚拟机从其当前的主机中迁移的通知。该通知的开头可能会阐明文件变更(指示有新的 BIOS 版本可用)、硬件操作计划维护或可预见的硬件故障自动发出的信号。
Google Cloud 的集群管理软件会持续监控这些事件,并根据控制数据中心的政策(例如容量利用率和每位客户可以同时迁移的虚拟机数量)安排这些事件发生的时间。
在选定要迁移的虚拟机后,Google Cloud 会通知客机即将进行迁移。等待一段时间后,系统会选择一个目标主机,并要求该主机设置一个新的空“目标”虚拟机,用于接收要迁移的“来源”虚拟机。可使用身份验证在源位置和目标位置之间建立连接。
虚拟机迁移过程分为以下三个阶段:
来源位置服务降级。虚拟机仍在来源位置运行,而大部分状态会从来源位置发送到目标位置。例如,Google Cloud 会将所有访客内存复制到目标位置,同时跟踪源位置中已更改的页面。源限能所花费的时间是访客内存大小和页面更改速率的函数。
中断阶段。这是一段非常短暂的时刻。在这段时间内,虚拟机不会在任何位置运行,并会处于暂停状态,而系统会发送开始在目标位置运行虚拟机所需的所有剩余状态。在来源位置服务降级期间,当发送状态达到回报递减点时,虚拟机会进入中断阶段。系统会使用某种算法来根据客机虚拟机做出更改的速率平衡要发送的内存字节数。
在中断事件期间,系统时钟会显示为向前跳转,最多 5 秒。如果中断事件超过 5 秒,Google Cloud 会使用包含在虚拟机访客软件包中的守护进程停止并重新同步时钟。
目标位置服务降级。虚拟机会在目标虚拟机上运行。来源虚拟机仍然存在,并且可以为目标虚拟机提供支持的功能。例如,源虚拟机将为进出目标虚拟机的数据包提供转发服务,直到网络架构与目标虚拟机的新位置一致。
最终,迁移会完成,并且系统会删除源虚拟机。 您可以在虚拟机日志中查看迁移的具体情况。
手动实时迁移过程
工作负载运行时,最好将虚拟机迁移到其他节点或节点组。借助单独租用,您可以将虚拟机迁移到特定的单租户节点或一组节点。如果您将虚拟机移动到一组节点,Compute Engine 会确定要将虚拟机放置在哪个节点上。如需了解单独租用,请参阅单独租用概览。
如需将单租户虚拟机迁移到其他节点或节点组,您可以手动启动实时迁移。您也可以手动启动实时迁移,以将多租户虚拟机迁移到单独租用节点。如需了解详情,请参阅手动实时迁移虚拟机。
后续步骤
设置虚拟机主机维护政策以将您的实例配置为实时迁移。
请阅读有关设计可处理服务中断情况的可靠系统的提示。