本文档介绍了如何使用 H4D 虚拟机提供的主机维护功能。还介绍了如何对虚拟机 (VM) 实例监控、规划和执行预定维护。 如需管理对预留容量块的维护(无论虚拟机是否在这些容量块上运行),请改为参阅跨预留管理主机事件。
主动管理虚拟机上即将发生的维护主机事件,您可以最大限度地减少中断并保持最佳性能。
准备工作
Select the tab for how you plan to use the samples on this page:
Console
When you use the Cloud de Confiance console to access Cloud de Confiance by S3NS services and APIs, you don't need to set up authentication.
gcloud
安装 Google Cloud CLI,然后使用联合身份登录 gcloud CLI。 登录后,运行以下命令来初始化 Google Cloud CLI:
gcloud initREST
如需在本地开发环境中使用本页面上的 REST API 示例,请使用您提供给 gcloud CLI 的凭证。
安装 Google Cloud CLI,然后使用联合身份登录 gcloud CLI。 登录后,运行以下命令来初始化 Google Cloud CLI:
gcloud init如需了解详情,请参阅 Cloud de Confiance 身份验证文档中的使用 REST 时进行身份验证。
所需的角色
如需获得跨虚拟机管理主机维护事件所需的权限,请让您的管理员为您授予以下 IAM 角色:
-
针对项目的 Compute Admin (
roles/compute.admin) -
拥有对系统事件审核日志的只读权限:针对项目的 Logs Viewer (
roles/logging.viewer)
如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。
这些预定义角色可提供跨虚拟机管理主机维护事件所需的权限。如需查看所需的确切权限,请展开所需权限部分:
所需权限
跨虚拟机管理主机维护事件需要以下权限:
-
查看虚拟机的详细信息:针对项目的
compute.instances.get权限
概览
如需优化虚拟机的维护,请完成以下步骤:
了解主机维护。了解虚拟机的频率和维护行为(具体取决于其机器系列)。此信息有助于您最大限度减少对工作负载的中断。
设置通知提醒。创建基于日志的提醒,以便在安排、启动或完成虚拟机维护时收到通知。这种方法有助于您主动规划活动,避免意外停机。
跨虚拟机管理维护。查看是否已为虚拟机安排维护。如有需要,您可以跨虚拟机手动启动维护。此流程有助于您提高工作负载对主机事件的应对能力,防止停机,并最大限度地提高应用的可用性。
了解主机维护
在 Compute Engine 实例的生命周期内,运行实例的宿主机会经历多个主机事件。 主机事件可能包括 Compute Engine 基础设施的定期维护,或在极少数情况下出现主机错误。Compute Engine 还会在后台为 Hypervisor 和网络应用一些轻量级升级,而不会发生中断。
H4D 机器系列提供以下与主机维护相关的功能:
| 机器类型 | 典型的预定维护事件频率 | 维护行为 | 高级通知 | 按需维护 | 模拟维护 |
|---|---|---|---|---|---|
h4d-standard-192 |
最短 30 天 | 终止 | 7 天 | 是 | 否 |
h4d-highmem-192 |
最短 30 天 | 终止 | 7 天 | 是 | 否 |
h4d-highmem-192-lssd |
最短 30 天 | 终止并具有本地 SSD 数据持久性 | 7 天 | 是 | 否 |
上表中所示的维护频率为近似值,并不保证准确。 Compute Engine 有时可能更频繁地执行维护。
为虚拟机设置通知提醒
您可以创建基于日志的提醒政策,以便在为虚拟机安排、启动或完成维护事件时收到通知。
如需为虚拟机的维护事件创建提醒,请完成以下步骤。针对要创建的每个提醒重复此过程。
-
在 Cloud de Confiance 控制台中,转到 Logs Explorer 页面:
如果您使用搜索栏查找此页面,请选择子标题为 Logging 的结果。
点击显示查询切换开关以切换到开启位置。
在查询窗格中,构建以下查询之一。这些查询会过滤日志条目,以识别特定的维护事件。如果您想使用多个查询,请重复此过程,为每个查询创建唯一的提醒。
如需在安排虚拟机维护时收到提醒,请构建以下查询:
protoPayload.methodName="compute.instances.upcomingMaintenance" severity>=DEFAULT protoPayload.status.message =~ "scheduled"如需在虚拟机的维护窗口开启时收到提醒,请构建以下查询:
protoPayload.methodName="compute.instances.upcomingMaintenance" severity>=DEFAULT protoPayload.status.message =~ "ongoing"如需在虚拟机维护启动时收到提醒,请构建以下查询:
protoPayload.methodName="compute.instance.terminateOnHostMaintenance" severity>=DEFAULT如需在虚拟机维护完成时收到提醒,请构建以下查询:
protoPayload.methodName="compute.instances.upcomingMaintenance" severity>=DEFAULT protoPayload.status.message =~ "completed"
如需验证查询,请点击运行查询。如果查询有效,则查询结果窗格会显示与查询匹配的日志条目。
在查询结果工具栏中,点击操作列表,然后选择 创建日志提醒。 系统会显示创建基于日志的提醒政策窗格。
在提醒详情部分中,执行以下操作:
在提醒政策名称字段中,输入政策的名称。
在政策严重级别列表中,选择警告(或更高的严重级别)。
点击下一步。
在选择要包含在提醒中的日志部分中,点击下一步。
在设置通知频率和自动关闭时长部分中,指定以下内容:
在通知间隔时间列表中,选择您希望接收通知的频率。
在突发事件自动关闭时长列表中,选择 Cloud Logging 在多久后停止发送通知并自动关闭突发事件。
点击下一步。
在应通知的人员部分中,为 Logging 指定通知渠道,以便向其发送通知。
点击保存。
如需在 Logs Explorer 中查看维护事件通知示例,请参阅 Compute Engine 文档中的维护通知示例。
跨虚拟机管理维护
您可以通过执行以下一项或多项操作来查看和控制虚拟机的维护:
如需查看虚拟机即将进行的维护的状态和预定时间,请查看虚拟机的维护状态。
如需立即对虚拟机启动维护,而不是等待预定维护时间,请对虚拟机手动启动维护。
查看虚拟机的维护状态
您可以通过检查实例元数据中 upcomingMaintenance 字段的值,查看虚拟机即将进行的维护的状态和预定时间。如果虚拟机不包含 upcomingMaintenance 字段,则系统不会为该虚拟机安排任何主机维护事件。如需详细了解 upcomingMaintenance 中的字段,请参阅 Compute Engine 文档中的维护状态定义。
此外,如果已为虚拟机安排维护,则 upcomingGroupMaintenance 字段会包含 maintenanceReasons 字段。此字段用于说明为虚拟机安排维护的原因,如下表所述:
| 维护类型 | 维护原因 | 虚拟机状态 |
|---|---|---|
| 计划内维护(常规维护) |
|
适用于正在运行、已停止或已暂停的虚拟机。 |
| 计划外紧急维护 |
|
仅适用于正在运行的虚拟机。 |
如需查看虚拟机中的 maintenanceReasons 字段,您必须使用 gcloud CLI 或 REST API。如需同时查看多个虚拟机的维护状态,您必须使用 Cloud de Confiance 控制台或 REST API。否则,请选择以下选项之一:
控制台
在 Cloud de Confiance 控制台中,前往虚拟机实例页面。
在维护状态列中,Compute Engine 会显示虚拟机的维护状态。如果您在虚拟机实例表中没有看到此列,请点击 view_column 列显示选项,选中维护状态复选框,然后点击确定。
gcloud
如需查看虚拟机的维护状态,请将 gcloud compute instances describe 命令与 --flatten=resourceStatus.upcomingMaintenance 标志结合使用:
gcloud compute instances describe VM_NAME \
--flatten=resourceStatus.upcomingMaintenance \
--zone=ZONE
替换以下内容:
VM_NAME:虚拟机名称。ZONE:虚拟机所在的可用区。
输出类似于以下内容之一:
如果为虚拟机安排了主机维护事件,则输出类似于以下内容:
--- canReschedule: true latestWindowStartTime: '2025-11-01T19:00:00Z' maintenanceReasons: - 'PLANNED_UPDATE' - 'PLANNED_NETWORK_UPDATE' maintenanceStatus: 'PENDING' type: 'SCHEDULED' windowEndTime: '2025-11-01T22:00:00Z' windowStartTime: '2025-11-01T19:00:00Z'如果没有为虚拟机安排主机维护事件,则输出类似于以下内容:
--- null
REST
如需查看虚拟机的维护状态,请发出以下 GET 请求之一。发出请求时,您必须添加 fields 查询参数,以便仅显示虚拟机的名称、机器类型和即将进行的维护。您还必须添加 filter 查询参数,以便仅按特定机器类型过滤虚拟机。
如需查看所有可用区中的虚拟机,请使用
instances.aggregatedList方法。GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/aggregated/instances?fields=items.name,items.machineType,items.upcomingMaintenance&filter=machineType%3AMACHINE_TYPE如需查看特定可用区中的虚拟机,请使用
instances.list方法。GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances?fields=items.name,items.machineType,items.upcomingMaintenance&filter=machineType%3AMACHINE_TYPE
替换以下内容:
PROJECT_ID:您在其中创建虚拟机的项目的 ID。ZONE:虚拟机所在的可用区。MACHINE_TYPE:您要用于过滤虚拟机的机器类型。
如果为虚拟机安排了主机维护事件,则该虚拟机会包含 upcomingMaintenance 字段:
{
"items": [
{
"name": "vm-01",
"machineType": "https://www.googleapis.com/compute/v1/projects/example-project/zones/europe-west4-b/machineTypes/h4d-highmem-192-lssd",
"resourceStatus": {
"upcomingMaintenance": {
"canReschedule": true,
"latestWindowStartTime": "2024-11-01T19:00:00Z",
"maintenanceStatus": "PENDING",
"maintenanceReasons": [
"PLANNED_UPDATE",
"PLANNED_NETWORK_UPDATE"
],
"type": "SCHEDULED",
"windowEndTime": "2024-11-01T22:00:00Z",
"windowStartTime": "2024-11-01T19:00:00Z"
}
}
},
...
]
}
(可选)如需进一步缩小虚拟机列表的范围,请将 filter 查询参数设置为其他过滤条件表达式。
元数据服务器
如需查看虚拟机的维护状态,请执行以下操作:
连接到 Linux 或 Windows 虚拟机(如果您尚未这样做)。
按如下所述查询元数据服务器:
curl http://metadata.google.internal/computeMetadata/v1/instance/upcoming-maintenance?alt=json -H "Metadata-Flavor: Google"如果为虚拟机安排了主机维护事件,则输出类似于以下内容:
"Upcoming maintenance": { "can_reschedule": "true", "latest_window_start_time": "2024-12-01T19:00:01Z", "maintenance_reasons": [ "PLANNED_UPDATE", "PLANNED_NETWORK_UPDATE" ], "maintenance_status": "PENDING", "type": "SCHEDULED", "window_end_time": "2024-12-01T21:00:01Z", "window_start_time": "2024-12-01T19:00:01Z" }如果未安排主机维护事件,则输出类似于以下内容:
{ }
对虚拟机手动启动维护
您可以对虚拟机手动启动维护,而不是等待预定时间。
根据虚拟机的维护状态,会发生以下情况:
| 维护状态 | 说明 | 看到的内容 |
|---|---|---|
| 已安排 | Compute Engine 已为虚拟机安排维护。您可以在预定时间之前手动启动维护。 |
|
| 进行中 | 维护正在进行中。您无法重新安排。 |
|
| 已完成 | 维护已完成。Compute Engine 已从虚拟机中移除所有维护通知。 |
|
您可以同时为多个虚拟机或为单个虚拟机手动启动维护。对于多个虚拟机,请使用 Cloud de Confiance 控制台;对于位于同一可用区中的虚拟机,请使用 gcloud CLI。对于单个虚拟机,请选择以下任一选项:
控制台
在 Cloud de Confiance 控制台中,前往虚拟机实例页面。
选择要启动维护的虚拟机所在的行。
点击 运行维护。
点击运行维护进行确认。
gcloud
如需手动为同一可用区中的一个或多个虚拟机启动维护,请使用 gcloud compute instances perform-maintenance 命令:
gcloud compute instances perform-maintenance VM_NAMES \
--zone=ZONE
替换以下内容:
VM_NAMES:以空格分隔的虚拟机名称列表,例如vm-01 vm-02 vm-03。ZONE:虚拟机所在的可用区。
REST
如需对虚拟机手动启动维护,请向 instances.performMaintenance 方法发出 POST 请求:
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/performMaintenance
替换以下内容:
PROJECT_ID:您在其中创建虚拟机的项目的 ID。ZONE:虚拟机所在的可用区。VM_NAME:虚拟机名称。
如未另行说明,那么本页面中的内容已根据知识共享署名 4.0 许可获得了许可,并且代码示例已根据 Apache 2.0 许可获得了许可。有关详情,请参阅 Google 开发者网站政策。Java 是 Oracle 和/或其关联公司的注册商标。
最后更新时间 (UTC):2025-12-10。