本文档介绍了如何通过将 Compute Engine 实例配置为在停止或删除时跳过客机操作系统关停,来缩短实例的关停时间。
如果您将实例配置为在停止或删除时跳过客机操作系统关停,则当实例状态变为 STOPPING
时,Compute Engine 会立即关停客机操作系统。此操作有助于加快实例停止或删除速度,从而更快地释放配额或资源。如需详细了解实例在停止或删除期间经历的阶段,包括干净利落地关停客户机操作系统的默认间隔,请参阅停止操作。
准备工作
-
如果您尚未设置身份验证,请进行设置。身份验证用于验证您的身份,以便访问 Google Cloud 服务和 API。如需从本地开发环境运行代码或示例,您可以通过选择以下选项之一向 Compute Engine 进行身份验证:
Select the tab for how you plan to use the samples on this page:
gcloud
-
安装 Google Cloud CLI。 安装完成后,运行以下命令来初始化 Google Cloud CLI:
gcloud init
如果您使用的是外部身份提供方 (IdP),则必须先使用联合身份登录 gcloud CLI。
- Set a default region and zone.
REST
如需在本地开发环境中使用本页面上的 REST API 示例,请使用您提供给 gcloud CLI 的凭证。
安装 Google Cloud CLI。 安装完成后,运行以下命令来初始化 Google Cloud CLI:
gcloud init
如果您使用的是外部身份提供方 (IdP),则必须先使用联合身份登录 gcloud CLI。
如需了解详情,请参阅 Google Cloud 身份验证文档中的使用 REST 时进行身份验证。
所需的角色
如需获得将实例配置为跳过 guest 操作系统关停所需的权限,请让管理员向您授予项目的 Compute Instance Admin (v1) (
roles/compute.instanceAdmin.v1
) IAM 角色。 如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。此预定义角色包含将实例配置为跳过客机操作系统关停所需的权限。如需查看所需的确切权限,请展开所需权限部分:
所需权限
您需要具备以下权限才能将实例配置为跳过 guest 操作系统关停:
- 如需创建实例,请执行以下操作:
- 针对项目的
compute.instances.create
权限 - 使用自定义映像创建虚拟机:针对映像的
compute.images.useReadOnly
权限 - 使用快照创建虚拟机:针对快照的
compute.snapshots.useReadOnly
权限 - 使用实例模板创建虚拟机:针对实例模板的
compute.instanceTemplates.useReadOnly
权限 - 为虚拟机分配旧版网络:针对项目的
compute.networks.use
权限 - 为虚拟机指定静态 IP 地址:针对项目的
compute.addresses.use
权限 - 使用旧版网络时为虚拟机分配外部 IP 地址:针对项目的
compute.networks.useExternalIp
权限 - 为虚拟机指定子网:针对项目或所选子网的
compute.subnetworks.use
权限 - 在使用 VPC 网络时为虚拟机分配外部 IP 地址:针对项目或所选子网的
compute.subnetworks.useExternalIp
权限 - 为虚拟机设置虚拟机实例元数据:针对项目的
compute.instances.setMetadata
权限 - 为虚拟机设置标记:针对虚拟机的
compute.instances.setTags
权限 - 为虚拟机设置标签:针对虚拟机的
compute.instances.setLabels
权限 - 为虚拟机设置要使用的服务账号:针对虚拟机的
compute.instances.setServiceAccount
权限 - 为虚拟机创建新磁盘:针对项目的
compute.disks.create
权限 - 以只读或读写模式挂接现有磁盘:针对磁盘的
compute.disks.use
权限 - 以只读模式挂接现有磁盘:针对磁盘的
compute.disks.useReadOnly
权限
- 针对项目的
- 如需创建实例模板:针对项目的
compute.instanceTemplates.create
权限 -
更新实例:实例上的
compute.instances.update
配置实例以跳过客机操作系统关闭
如需将计算实例配置为在您停止或删除该实例时跳过客机操作系统关停,请使用以下方法之一:
在现有实例中配置客机操作系统关停
只有当计算实例处于停止 (
TERMINATED
) 状态时,您才能将其配置为跳过客机操作系统关停。如需将实例配置为跳过客机操作系统关停,请选择以下选项之一:
gcloud
如果您尚未停止实例,请先停止。
如需将实例配置为跳过客机操作系统关停,请使用带有
--skip-guest-os-shutdown
标志的gcloud beta compute instances set-scheduling
命令:gcloud beta compute instances set-scheduling INSTANCE_NAME \ --skip-guest-os-shutdown \ --zone=ZONE
替换以下内容:
INSTANCE_NAME
:实例的名称。ZONE
:实例所在的可用区。
REST
如果您尚未停止实例,请先停止。
如需将实例配置为跳过客机操作系统关停,请向 Beta 版
instances.setScheduling
方法发出POST
请求。在请求正文中,添加skipGuestOsShutdown
字段并将其设置为true
:POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME/setScheduling { "skipGuestOsShutdown": true }
如需详细了解如何更新实例,请参阅更新实例属性。
在创建实例时配置客机操作系统关停
如需创建配置为跳过 Guest 操作系统关停的计算实例,请选择以下选项之一:
gcloud
如需创建配置为跳过客机操作系统关停的实例,请使用带有
--skip-guest-os-shutdown
标志的gcloud compute instances create
命令:gcloud compute instances create INSTANCE_NAME \ --machine-type=MACHINE_TYPE \ --skip-guest-os-shutdown \ --zone=ZONE
替换以下内容:
INSTANCE_NAME
:实例的名称。MACHINE_TYPE
:用于实例的机器类型。ZONE
:您希望创建实例的可用区。
REST
如需创建配置为跳过客机操作系统关停的实例,请向
instances.insert
方法发出POST
请求。在请求正文中,添加设置为true
的skipGuestOsShutdown
字段:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances { "name": "INSTANCE_NAME", "machineType": "zones/ZONE/machineTypes/MACHINE_TYPE", "disks": [ { "boot": true, "initializeParams": { "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE" } } ], "networkInterfaces": [ { "network": "global/networks/default" } ], "scheduling": { "skipGuestOsShutdown": true } }
替换以下内容:
PROJECT_ID
:您要在其中创建实例的项目的 ID。ZONE
:您希望创建实例的可用区。INSTANCE_NAME
:实例的名称。MACHINE_TYPE
:用于实例的机器类型。IMAGE_PROJECT
:映像所属的映像项目;例如debian-cloud
。如需详细了解支持的映像项目,请参阅公共映像。IMAGE
:指定以下其中一项:
如需详细了解如何创建实例,请参阅创建和启动 Compute Engine 实例。
在批量创建实例时配置客机操作系统关停
如需批量创建配置为跳过客机操作系统关停的计算实例,请选择以下选项之一:
gcloud
如需批量创建配置为跳过 guest 操作系统关停的实例,请使用带有
--skip-guest-os-shutdown
标志的gcloud compute instances bulk create
命令。例如,如需在单个可用区中批量创建使用名称模式的实例,请运行以下命令:
gcloud compute instances bulk create \ --count=COUNT \ --machine-type=MACHINE_TYPE \ --name-pattern="NAME_PATTERN" \ --skip-guest-os-shutdown \ --zone=ZONE
替换以下内容:
COUNT
:要创建的实例数量。MACHINE_TYPE
:用于实例的机器类型。NAME_PATTERN
:实例的名称格式。如需替换实例名称中的数字序列,请使用哈希值 (#
) 字符序列。例如,如果您使用instance-#
作为名称模式,Compute Engine 会生成名称以instance-1
、instance-2
开头的实例,并以这种递增模式持续生成实例,直到达到您在COUNT
中指定的实例数量。ZONE
:您希望创建实例的可用区。
REST
如需批量创建配置为跳过客机操作系统关停的实例,请向
instances.bulkInsert
方法发出POST
请求。在请求正文中,添加设置为true
的skipGuestOsShutdown
字段。例如,如需在单个可用区中批量创建使用名称模式的实例,请发出
POST
请求,如下所示:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/bulkInsert { "count": COUNT, "namePattern": "NAME_PATTERN", "instanceProperties": { "machineType": "MACHINE_TYPE", "disks": [ { "boot": true, "initializeParams": { "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE" } } ], "networkInterfaces": [ { "network": "global/networks/default" } ], "scheduling": { "skipGuestOsShutdown": true } } }
替换以下内容:
PROJECT_ID
:您要在其中批量创建实例的项目的 ID。ZONE
:您希望创建实例的可用区。COUNT
:要创建的实例数量。NAME_PATTERN
:实例的名称格式。如需替换实例名称中的数字序列,请使用哈希值 (#
) 字符序列。例如,如果您使用instance-#
作为名称模式,Compute Engine 会生成名称以instance-1
、instance-2
开头的实例,并以这种递增模式持续生成实例,直到达到您在COUNT
中指定的实例数量。MACHINE_TYPE
:用于实例的机器类型。IMAGE_PROJECT
:映像所属的映像项目;例如debian-cloud
。如需详细了解支持的映像项目,请参阅公共映像。IMAGE
:指定以下其中一项:
如需详细了解如何批量创建实例,请参阅批量创建实例。
在创建实例模板时配置客机操作系统关停
创建实例模板并将其配置为在您停止或删除计算实例时跳过客机操作系统关停后,您可以使用该实例模板执行以下操作:
您可以配置代管式实例组 (MIG) 中的实例,使其在停止或删除时跳过客户机操作系统关停,方法如下:
如需创建配置为跳过 guest 操作系统关停的实例模板,请选择以下选项之一:
gcloud
如需创建配置为跳过 guest 操作系统关停的实例模板,请使用带有
--skip-guest-os-shutdown
标志的gcloud compute instance-templates create
命令。例如,如需创建指定跳过 guest 操作系统关停的区域级实例模板,请运行以下命令。如果您要创建全球实例模板,请使用相同的命令,但不带
--instance-template-region
标志。gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME \ --instance-template-region=REGION \ --machine-type=MACHINE_TYPE \ --skip-guest-os-shutdown
替换以下内容:
INSTANCE_TEMPLATE_NAME
:实例模板的名称。REGION
:用于创建实例模板的区域。MACHINE_TYPE
:要在实例模板中指定的机器类型。
REST
如需创建配置为跳过 guest 操作系统关停的实例模板,请向以下方法之一发出
POST
请求:如需创建全球实例模板:
instanceTemplates.insert
方法如需创建区域级实例模板:
regionInstanceTemplates.insert
方法
在请求正文中,添加设置为
true
的skipGuestOsShutdown
字段。例如,如需创建指定跳过 guest 操作系统关停的区域级实例模板,请发出
POST
请求,如下所示:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceTemplates { "name": "INSTANCE_TEMPLATE_NAME", "properties": { "disks": [ { "boot": true, "initializeParams": { "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE" } } ], "machineType": "MACHINE_TYPE", "networkInterfaces": [ { "network": "global/networks/default" } ], "scheduling": { "skipGuestOsShutdown": true } } }
替换以下内容:
PROJECT_ID
:您要在其中创建实例模板的项目的 ID。REGION
:用于创建实例模板的区域。INSTANCE_TEMPLATE_NAME
:实例模板的名称。IMAGE_PROJECT
:映像所属的映像项目;例如debian-cloud
。如需详细了解支持的映像项目,请参阅公共映像。IMAGE
:指定以下其中一项:MACHINE_TYPE
:要在实例模板中指定的机器类型。
如需详细了解如何创建实例模板,请参阅创建实例模板。
查看客机操作系统关停设置
您可以检查在停止或删除计算实例时,Compute Engine 是否会跳过客机操作系统关停。
如需查看实例中的客机操作系统关停时间,请选择以下选项之一:
gcloud
如需查看实例的详细信息以及实例是否跳过 guest 操作系统关机,请使用
gcloud compute instances describe
命令:gcloud compute instances describe INSTANCE_NAME \ --zone=ZONE
替换以下内容:
INSTANCE_NAME
:实例的名称。ZONE
:实例所在的可用区。
如果您将实例配置为跳过客机操作系统关停,则输出包含设置为
true
的skipGuestOsShutdown
字段,如下例所示:... scheduling: automaticRestart: true skipGuestOsShutdown: true onHostMaintenance: MIGRATE preemptible: false provisioningModel: STANDARD ...
否则,如果
skipGuestOsShutdown
字段缺失或设置为false
,则 guest 操作系统会使用默认关机时间。REST
如需查看实例的详细信息以及该实例是否跳过 guest 操作系统关机,请向
instances.get
方法发出GET
请求:GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME
替换以下内容:
PROJECT_ID
:实例所在项目的 ID。ZONE
:实例所在的可用区。INSTANCE_NAME
:实例的名称。
如果您将实例配置为跳过客机操作系统关停,则输出包含设置为
true
的skipGuestOsShutdown
字段,如下例所示:{ ... "scheduling": { "automaticRestart": true, "skipGuestOsShutdown": true, "onHostMaintenance": "MIGRATE", "preemptible": false, "provisioningModel": "STANDARD" }, ... }
否则,如果
skipGuestOsShutdown
字段缺失或设置为false
,则 guest 操作系统会使用默认关机时间。后续步骤
如未另行说明,那么本页面中的内容已根据知识共享署名 4.0 许可获得了许可,并且代码示例已根据 Apache 2.0 许可获得了许可。有关详情,请参阅 Google 开发者网站政策。Java 是 Oracle 和/或其关联公司的注册商标。
最后更新时间 (UTC):2025-09-18。
-