您可以将启动磁盘与虚拟机实例分离,并挂接新的启动磁盘。借助此功能,您可以在不删除原始实例的情况下将启动磁盘装载到另一个虚拟机,从而简化了修复启动磁盘的过程。此外,您可以替换实例的启动磁盘,而不必重新创建整个虚拟机实例。
如果虚拟机实例没有启动磁盘,则尝试启动该实例会生成错误。但是,您仍然可以修改其他实例属性。
准备工作
-
如果您尚未设置身份验证,请进行设置。身份验证是通过其进行身份验证以访问 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
-
After installing the Google Cloud CLI, initialize it by running the following command:
gcloud init
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
- Set a default region and zone.
- 针对实例的
compute.instances.detachDisk
权限 - 针对实例的
compute.instances.attachDisk
权限 - 您只能为已停止的虚拟机实例挂接或分离启动磁盘。
- 每个虚拟机实例只能挂接一个启动磁盘。
- 如果使用 gcloud CLI 或 REST,您只能将现有启动磁盘挂接到虚拟机实例。
- 转到“虚拟机实例”页面。
- 如果出现提示,请选择您的项目并点击继续。
- 点击要分离其启动磁盘的实例。
- 点击 停止以停止虚拟机。如果没有停止选项,请依次点击 更多操作 > 停止。
- 点击修改。
- 向下滚动到启动磁盘部分,然后点击要分离的启动磁盘旁边的 X。
- 点击保存。
INSTANCE_NAME
:实例的名称。DISK_NAME
:要分离的磁盘的名称。磁盘名称通常与实例名称相同。PROJECT_ID
:您的项目的 ID。INSTANCE_NAME
:实例的名称。ZONE
:您的实例所在的可用区。DISK_NAME
:要分离的磁盘的名称。磁盘名称通常与实例名称相同。- 转到“虚拟机实例”页面。
- 如果出现提示,请选择您的项目并点击继续。
- 点击要挂接启动磁盘的实例。
- 如果虚拟机正在运行,请点击 停止以停止虚拟机。如果没有停止选项,请依次点击 更多操作 > 停止。
- 点击修改。
- 前往启动磁盘部分。
- 点击添加项目。
- 从下拉菜单中选择启动磁盘。
- 点击保存。
INSTANCE_NAME
:实例的名称。DISK_NAME
:要挂接的磁盘的名称。磁盘名称可能与实例名称相同。PROJECT_ID
:您的项目的 ID。INSTANCE_NAME
:您要挂接新的 Persistent Disk 永久性磁盘的实例的名称。ZONE
:您的实例和新磁盘所在的可用区。DISK_NAME
:新磁盘的名称。- 转到“虚拟机实例”页面。
- 如果出现提示,请选择您的项目并点击继续。
- 点击要挂接启动磁盘的实例。
- 如果虚拟机正在运行,请点击 停止以停止虚拟机。如果没有停止选项,请依次点击 更多操作 > 停止。
- 点击页面顶部的修改。
- 向下滚动到启动磁盘部分。
- 点击当前启动磁盘旁边的 X。
- 点击添加项。
- 从下拉菜单中选择启动磁盘。
- 点击保存。
REST
如需在本地开发环境中使用本页面上的 REST API 示例,请使用您提供给 gcloud CLI 的凭据。
After installing the Google Cloud CLI, initialize it by running the following command:
gcloud init
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
如需了解详情,请参阅 Google Cloud 身份验证文档中的使用 REST 时进行身份验证。
执行此任务所需的权限
您必须拥有以下权限才能执行此任务:
限制
分离启动磁盘
在从虚拟机实例分离启动磁盘之前,必须停止实例。您不需要卸载磁盘。
控制台
gcloud
使用
gcloud compute instances detach-disk
命令从实例中分离启动磁盘。gcloud compute instances detach-disk INSTANCE_NAME \ --disk=DISK_NAME
请替换以下内容:
REST
构建
POST
请求以分离磁盘:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME/detachDisk?deviceName=DISK_NAME
替换以下内容:
重新挂接启动磁盘
只要实例尚未挂接启动磁盘,并且启动磁盘与虚拟机实例位于同一地区,则任何磁盘都能作为启动磁盘重新挂接到该实例。如果自定义启动磁盘,则必须确保启动磁盘在挂接后正确启动。
现有磁盘和新磁盘要么均兼容 UEFI,要么均不兼容 UEFI。如需创建与 UEFI 兼容的磁盘,请使用
gcloud compute disk create
命令,并将--guest-os-features
标志设置为UEFI_COMPATIBLE
。控制台
gcloud
使用
gcloud compute instances attach-disk
命令将启动磁盘挂接或重新挂接到虚拟机实例。添加 标志以指示将该磁盘用作实例的启动磁盘。如果没有使用此标志,则该磁盘将作为非启动数据磁盘挂接。--boot
gcloud compute instances attach-disk INSTANCE_NAME \ --disk=DISK_NAME \ --boot
请替换以下内容:
REST
构建
POST
请求以挂接磁盘。添加可选"boot": true
参数以指示该磁盘为启动磁盘。如果没有使用此参数,则该磁盘将作为非启动数据磁盘挂接。POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME/attachDisk { "boot": true, "source": "zones/ZONE/disks/DISK_NAME" }
替换以下内容:
将磁盘挂接到虚拟机实例后,重新启动该实例。
更新实例的启动磁盘
您只能使用 Google Cloud 控制台通过一个步骤更新虚拟机的启动磁盘。具体而言,您可以通过一个操作分离现有启动磁盘并挂接新的启动磁盘。
通过 gcloud CLI 或 REST 无法使用此功能。
Google Cloud 控制台将继续分离现有启动磁盘,并挂接您指定的新启动磁盘。此过程完成后,重启虚拟机实例。
后续步骤
如未另行说明,那么本页面中的内容已根据知识共享署名 4.0 许可获得了许可,并且代码示例已根据 Apache 2.0 许可获得了许可。有关详情,请参阅 Google 开发者网站政策。Java 是 Oracle 和/或其关联公司的注册商标。
最后更新时间 (UTC):2025-06-24。
-