本文档介绍了如何停止或重启 Compute Engine 实例。如需详细了解如何暂停、停止或重置实例,请参阅暂停、停止或重置 Compute Engine 实例。
当您不再使用实例或要修改其属性(例如更改其机器类型或移除任何已挂接和已装载的磁盘)时,停止实例会很有用。停止实例后,您可以执行以下操作:
重启该实例即可恢复工作负载。
如果您不再需要该文件,请将其删除。
如需自动停止或重启实例,请改为参阅以下内容:
准备工作
-
如果您尚未设置身份验证,请进行设置。身份验证是通过其进行身份验证以访问 Google Cloud 服务和 API 的过程。如需从本地开发环境运行代码或示例,您可以通过选择以下选项之一向 Compute Engine 进行身份验证:
Select the tab for how you plan to use the samples on this page:
Console
When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.
gcloud
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- Set a default region and zone.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
-
如需停止实例,请在实例上执行
compute.instances.stop
-
从客机操作系统内部停止实例:实例的
compute.instances.setMetadata
权限(如果实例使用实例级 SSH 公钥)。 -
如需重启实例,请执行以下操作:实例的
compute.instances.start
权限 -
重启使用加密密钥的实例:实例的
compute.instances.startWithEncryptionKey
权限 -
您可以同时停止一个或多个未挂接任何本地 SSD 磁盘的实例。实例中的所有关停脚本都必须在默认关停期限内完成运行。
-
同时停止一个或多个挂接了本地 SSD 磁盘的实例时,您可以选择舍弃或保留(预览版)这些磁盘上的数据。实例中的所有关闭脚本都必须在默认关闭期限内完成运行。
-
通过这种方法,您可以仅在关停脚本运行完毕后停止单个实例;如果您启用了正常关停,则可以停止实例而不正常关停,或者结束正在进行的正常关停。除非您手动将任何已挂接的本地 SSD 磁盘中的数据备份到持久性存储卷,否则从客机操作系统内停止实例会舍弃这些磁盘上的所有数据。
如果您已在实例中启用正常关闭功能,则可以使用 Google Cloud 控制台、gcloud CLI 或 REST API 停止实例,而无需正常关闭实例或结束正在进行的正常关闭。
如需同时停止多个实例,请使用 Google Cloud 控制台或 gcloud CLI(对于位于同一可用区中的实例)。
在 Google Cloud 控制台中,前往虚拟机实例页面。
选择要停止的正在运行的实例。
点击
停止。在对话框中,执行以下操作:
可选:如需在不正常关闭的情况下停止实例,或结束正在进行的正常关闭,请选中跳过正常关闭(如果适用)复选框。
点击停止进行确认。
INSTANCE_NAMES
:以空格分隔的实例名称列表,例如instance-01 instance-02 instance-03
。ZONE
:实例所在的可用区。INSTANCE_NAME
:实例的名称。PROJECT_ID
:实例所在项目的 ID。ZONE
:实例所在的区域。如果您已在实例中启用正常关闭功能,则可以使用 Google Cloud 控制台、gcloud CLI 或 REST API 停止实例,而无需正常关闭实例或结束正在进行的正常关闭。
如需保留挂接到实例(不包括 Z3 实例)的本地 SSD 磁盘的数据,请使用 gcloud CLI 或 REST API 停止实例。
如需同时停止多个实例,请使用 Google Cloud 控制台或 gcloud CLI(对于位于同一可用区中的实例)。
在 Google Cloud 控制台中,前往虚拟机实例页面。
选择要停止的正在运行的实例。
点击
停止。在对话框中,执行以下操作:
可选:如需在不正常关闭的情况下停止实例,或结束正在进行的正常关闭,请选中跳过正常关闭(如果适用)复选框。
点击停止进行确认。
如需舍弃本地 SSD 数据,请使用带有
--discard-local-ssd=true
标志的gcloud compute instances stop
命令:gcloud compute instances stop INSTANCE_NAMES \ --discard-local-ssd=true \ --zone=ZONE
如需保留本地 SSD 数据,请使用带有
--discard-local-ssd=false
标志的gcloud beta compute instances stop
命令:gcloud beta compute instances stop INSTANCE_NAMES \ --discard-local-ssd=false \ --zone=ZONE
INSTANCE_NAMES
:以空格分隔的实例名称列表,例如instance-01 instance-02 instance-03
。ZONE
:实例所在的可用区。如需舍弃本地 SSD 数据,请向
instances.stop
方法发出POST
请求。在请求网址中添加discardLocalSsd
查询参数并设置为true
:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME/stop?discardLocalSsd=true
如需保留本地 SSD 数据,请向
beta.instances.stop
方法发出POST
请求。在请求网址中添加discardLocalSsd
查询参数并设置为false
:POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME/stop?discardLocalSsd=false
PROJECT_ID
:实例所在项目的 ID。ZONE
:实例所在的区域。INSTANCE_NAME
:实例的名称。如果您尚未连接到实例,请先连接。
如需停止实例,请选择以下方法之一:
如需进行彻底关停,使实例能够先关停脚本,然后系统再关闭客机操作系统,请运行以下命令:
sudo shutdown -h now
否则,如需强制关停,请运行以下命令:
sudo poweroff
如果您尚未连接到实例,请使用以下方法之一连接:
如需停止实例,请选择以下方法之一:
如需正常停止实例,并让实例在关闭客机操作系统之前运行关闭脚本,请运行以下命令:
shutdown /s
如需强制关闭,请运行以下命令:
shutdown /f
如果您的实例没有挂接加密磁盘,请参阅重启没有加密磁盘的实例。
否则,请参阅重启挂接了加密磁盘的实例。
在 Google Cloud 控制台中,前往虚拟机实例页面。
选择一个或多个实例。
点击
启动/恢复。INSTANCE_NAMES
:以空格分隔的实例名称列表,例如instance-01 instance-02 instance-03
。ZONE
:实例所在的可用区。INSTANCE_NAME
:要重启的实例的名称。PROJECT_ID
:实例所在项目的 ID。ZONE
:实例所在的区域。在 Google Cloud 控制台中,前往虚拟机实例页面。
选择要重启的实例。
点击
启动/恢复。为挂接到实例的每个加密磁盘指定加密密钥,然后点击开始。
INSTANCE_NAMES
:以空格分隔的实例名称列表,例如instance-01 instance-02 instance-03
。ENCRYPTION_KEY_FILE
:包含客户提供的加密密钥的 JSON 文件的相对路径。只有当多个实例使用相同的客户提供的加密密钥时,您才能同时重启多个实例。ZONE
:实例所在的可用区。PROJECT_ID
:实例所在项目的 ID。ZONE
:实例所在的区域。INSTANCE_NAME
:实例的名称。DISK_URL
:与挂接的磁盘(已使用客户提供的加密密钥进行了加密)的完整资源名称对应的资源网址。ENCRYPTION_TYPE
:您使用的磁盘加密类型,可以是以下类型之一:rawKey
、kmsKeyName
或rsaEncryptedKey
。如果您使用rsaEncryptedKey
类型,请向beta.instances.startWithEncryptionKey
方法发出POST
请求。ENCRYPTION_KEY
:用于加密挂接到实例的永久性磁盘的加密密钥。rawKey
或rsaEncryptedKey
密钥必须采用 base64 编码。此外,如需准备rsaEncryptedKey
密钥,请参阅 RSA 密钥封装。
Go
如需在本地开发环境中使用本页面上的 Go 示例,请安装并初始化 gcloud CLI,然后使用您的用户凭据设置应用默认凭据。
如需了解详情,请参阅 Set up authentication for a local development environment。 如需了解详情,请参阅身份验证文档中的为本地开发环境设置 ADC。
Java
如需在本地开发环境中使用本页面上的 Java 示例,请安装并初始化 gcloud CLI,然后使用您的用户凭据设置应用默认凭据。
如需了解详情,请参阅 Set up authentication for a local development environment。 如需了解详情,请参阅身份验证文档中的为本地开发环境设置 ADC。
Node.js
如需在本地开发环境中使用本页面上的 Node.js 示例,请安装并初始化 gcloud CLI,然后使用您的用户凭据设置应用默认凭据。
如需了解详情,请参阅 Set up authentication for a local development environment。 如需了解详情,请参阅身份验证文档中的为本地开发环境设置 ADC。
PHP
如需在本地开发环境中使用本页面上的 PHP 示例,请安装并初始化 gcloud CLI,然后使用您的用户凭据设置应用默认凭据。
如需了解详情,请参阅 Set up authentication for a local development environment。
Python
如需在本地开发环境中使用本页面上的 Python 示例,请安装并初始化 gcloud CLI,然后使用您的用户凭据设置应用默认凭据。
如需了解详情,请参阅 Set up authentication for a local development environment。 如需了解详情,请参阅身份验证文档中的为本地开发环境设置 ADC。
REST
如需在本地开发环境中使用本页面上的 REST API 示例,请使用您提供给 gcloud CLI 的凭据。
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
如需了解详情,请参阅 Google Cloud 身份验证文档中的使用 REST 时进行身份验证。
所需的角色
如需获得停止或重启计算实例所需的权限,请让管理员为您授予项目的 Compute Instance Admin (v1) (
roles/compute.instanceAdmin.v1
) IAM 角色。 如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。此预定义角色包含停止或重启计算实例所需的权限。如需查看所需的确切权限,请展开所需权限部分:
所需权限
如需停止或重启计算实例,您需要具备以下权限:
停止实例
当您停止计算实例,或 Compute Engine 因某个预定的操作而停止实例时,实例会保留其附加的资源、配置设置、内部 IP 地址、MAC 地址和元数据。但是,实例会失去其内存中数据和应用状态。如果您需要保留这些状态,请改为暂停实例。
您可以使用以下方法停止实例,具体取决于实例是否挂接了本地 SSD 磁盘以及您希望如何处理任何关闭脚本:
停止没有本地 SSD 磁盘的实例
根据您在停止实例时要执行的操作,使用以下选项:
如需停止一个或多个实例,请选择以下选项之一:
控制台
gcloud
如需停止同一可用区中的一个或多个实例,请使用
gcloud compute instances stop
命令:gcloud compute instances stop INSTANCE_NAMES \ --zone=ZONE
替换以下内容:
(可选)如果您已在一个或多个实例中启用正常关闭,则可以停止实例,而无需正常关闭它们,也可以手动结束正在进行的正常关闭。为此,请使用带有
--no-graceful-shutdown
标志的gcloud beta compute instances stop
命令:gcloud beta compute instances stop INSTANCE_NAMES \ --no-graceful-shutdown \ --zone=ZONE
Go
Java
Node.js
PHP
Python
REST
如需停止实例,请向
instances.stop
方法发出POST
请求:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME/stop
替换以下内容:
(可选)如果您已在实例中启用正常关闭,则可以停止实例而不正常关闭,也可以手动结束正在进行的正常关闭。为此,请向
instances.stop
方法发出POST
请求。在请求网址中添加noGracefulShutdown=true
查询参数:POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/stop?noGracefulShutdown=true
停止具有本地 SSD 磁盘的实例
根据您在停止计算实例时要执行的操作,使用以下选项:
如需停止一个或多个挂接了本地 SSD 磁盘的实例,请选择以下选项之一:
控制台
gcloud
在同一可用区中停止挂接了本地 SSD 磁盘的一个或多个实例时,请指定是舍弃还是保留本地 SSD 数据,如下所示:
替换以下内容:
(可选)如果您已在一个或多个实例中启用正常关闭功能,则可以停止这些实例,而无需正常关闭它们,也可以结束正在进行的正常关闭。为此,请使用带有
--no-graceful-shutdown
标志的gcloud beta compute instances stop
命令:gcloud beta compute instances stop INSTANCE_NAMES \ --discard-local-ssd=DISCARD_LOCAL_SSD \ --no-graceful-shutdown \ --zone=ZONE
将
DISCARD_LOCAL_SSD
替换为true
以舍弃本地 SSD 磁盘中的数据,或替换为false
以保留数据。REST
停止挂接了本地 SSD 磁盘的实例时,请指定是舍弃还是保留本地 SSD 数据,如下所示:
替换以下内容:
(可选)如果您已在实例中启用正常关闭功能,则可以在不正常关闭的情况下停止实例,也可以手动结束正在进行的正常关闭。为此,请向
instances.stop
方法发出POST
请求。在请求网址中添加noGracefulShutdown=true
查询参数:POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/stop?discardLocalSsd=DISCARD_LOCAL_SSD&noGracefulShutdown=true
将
DISCARD_LOCAL_SSD
替换为true
以舍弃本地 SSD 磁盘中的数据,或替换为false
以保留数据。从客机操作系统停止实例
如果计算实例挂接了本地 SSD 磁盘,则关闭客机操作系统会自动舍弃本地 SSD 数据。如需保留此类数据,请在停止实例之前手动将数据复制到持久性存储选项。
如需从客机操作系统停止实例,请选择以下选项之一:
Linux
Windows
重启实例
您可以重启已完全停止的计算实例(即实例状态为
TERMINATED
)。如果您在停止实例时选择保留本地 SSD 磁盘的数据,则可能需要在重启实例后重新装载本地 SSD 磁盘。如需详细了解如何装载本地 SSD 磁盘,请参阅格式化并装载本地 SSD 设备。
如需重启实例,请根据实例是否挂接了加密磁盘,使用以下方法之一:
重启没有加密磁盘的实例
您可以同时重启多个计算实例或单个实例。对于多个实例,请使用 Google Cloud 控制台;对于位于同一可用区中的实例,请使用 gcloud CLI。对于单个实例,请选择以下任一选项:
控制台
gcloud
如需重启同一可用区中的一个或多个实例,请使用
gcloud compute instances start
命令:gcloud compute instances start INSTANCE_NAMES \ --zone=ZONE
替换以下内容:
Go
Java
Node.js
PHP
Python
REST
如需重启实例,请向
instances.start
方法发出POST
请求:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME/start
替换以下内容:
重启具有加密磁盘的实例
当您重启已停止的计算实例时,如果该实例的挂接磁盘是使用客户提供的加密密钥加密的,您必须提供加密密钥信息。
您可以同时重启多个实例或单个实例。对于多个实例,请使用 Google Cloud 控制台;对于位于同一可用区中的实例,请使用 gcloud CLI。对于单个实例,请选择以下任一选项:
控制台
gcloud
如需重启同一可用区中使用加密磁盘的一个或多个实例,请使用带有
--csek-key-file
标志的gcloud compute instances start
命令。如果您使用的是 RSA 封装密钥,请改用带有--csek-key-file
标志的gcloud beta compute instances start
命令:gcloud compute instances start INSTANCE_NAMES \ --csek-key-file=ENCRYPTION_KEY_FILE \ --zone=ZONE
替换以下内容:
Go
Java
Node.js
PHP
Python
REST
如需重启使用加密磁盘的实例,请向
instances.startWithEncryptionKey
方法发出POST
请求:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME/startWithEncryptionKey { "disks": [ { "source": "DISK_URL", "diskEncryptionKey": { "ENCRYPTION_TYPE": "ENCRYPTION_KEY" } } ] }
替换以下内容:
后续步骤
如未另行说明,那么本页面中的内容已根据知识共享署名 4.0 许可获得了许可,并且代码示例已根据 Apache 2.0 许可获得了许可。有关详情,请参阅 Google 开发者网站政策。Java 是 Oracle 和/或其关联公司的注册商标。
最后更新时间 (UTC):2025-03-04。
-