分离和重新挂接启动磁盘


您可以将启动磁盘与虚拟机实例分离,并挂接新的启动磁盘。借助此功能,您可以在不删除原始实例的情况下将启动磁盘装载到另一个虚拟机,从而简化了修复启动磁盘的过程。此外,您可以替换实例的启动磁盘,而不必重新创建整个虚拟机实例。

如果虚拟机实例没有启动磁盘,则尝试启动该实例会生成错误。但是,您仍然可以修改其他实例属性。

准备工作

  • 设置身份验证(如果尚未设置)。身份验证是通过其进行身份验证以访问 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

    1. 安装 Google Cloud CLI,然后通过运行以下命令初始化 Google Cloud CLI:

      gcloud init
    2. Set a default region and zone.
    3. REST

      如需在本地开发环境中使用本页面上的 REST API 示例,请使用您提供给 gcloud CLI 的凭据。

        安装 Google Cloud CLI,然后通过运行以下命令初始化 Google Cloud CLI:

        gcloud init

      如需了解详情,请参阅 Google Cloud 身份验证文档中的使用 REST 时进行身份验证

执行此任务所需的权限

您必须拥有以下权限才能执行此任务:

  • 针对实例的 compute.instances.detachDisk 权限
  • 针对实例的 compute.instances.attachDisk 权限

限制

  • 您只能为已停止的虚拟机实例挂接或分离启动磁盘。
  • 每个虚拟机实例只能挂接一个启动磁盘。
  • 如果使用 gcloud CLI 或 REST,您只能将现有启动磁盘挂接到虚拟机实例。

分离启动磁盘

在从虚拟机实例分离启动磁盘之前,必须停止实例。您不需要卸载磁盘。

控制台

  1. 转到“虚拟机实例”页面。

    转到“虚拟机实例”

  2. 如果出现提示,请选择您的项目并点击继续
  3. 点击要分离其启动磁盘的实例。
  4. 点击页面顶部的停止
  5. 点击页面顶部的修改
  6. 向下滚动到启动磁盘部分,然后点击要分离的启动磁盘旁边的 X
  7. 点击保存

gcloud

使用 gcloud compute instances detach-disk 命令从实例中分离启动磁盘。

gcloud compute instances detach-disk INSTANCE_NAME \
    --disk=DISK_NAME

请替换以下内容:

  • INSTANCE_NAME:实例的名称。
  • DISK_NAME:要分离的磁盘的名称。磁盘名称通常与实例名称相同。

REST

构建 POST 请求以分离磁盘:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME/detachDisk?deviceName=DISK_NAME

替换以下内容:

  • PROJECT_ID:您的项目的 ID。
  • INSTANCE_NAME:实例的名称。
  • ZONE:您的实例所在的可用区。
  • DISK_NAME:要分离的磁盘的名称。磁盘名称通常与实例名称相同。

重新挂接启动磁盘

只要实例尚未挂接启动磁盘,并且启动磁盘与虚拟机实例位于同一地区,则任何磁盘都能作为启动磁盘重新挂接到该实例。如果自定义启动磁盘,则必须确保启动磁盘在挂接后正确启动。

现有磁盘和新磁盘要么均兼容 UEFI,要么均不兼容 UEFI。如需创建与 UEFI 兼容的磁盘,请使用 gcloud compute disk create 命令,并将 --guest-os-features 标志设置为 UEFI_COMPATIBLE

控制台

  1. 转到“虚拟机实例”页面。

    转到“虚拟机实例”

  2. 如果出现提示,请选择您的项目并点击继续
  3. 点击要挂接启动磁盘的实例。
  4. 如果虚拟机实例尚未停止,请点击页面顶部的停止
  5. 点击页面顶部的修改
  6. 向下滚动到启动磁盘部分。
  7. 点击添加项
  8. 从下拉菜单中选择启动磁盘。
  9. 点击保存

gcloud

使用 gcloud compute instances attach-disk 命令将启动磁盘挂接或重新挂接到虚拟机实例。添加 --boot 标志以指示将该磁盘用作实例的启动磁盘。如果没有使用此标志,则该磁盘将作为非启动数据磁盘挂接。

gcloud compute instances attach-disk INSTANCE_NAME \
    --disk=DISK_NAME \
    --boot

请替换以下内容:

  • INSTANCE_NAME:实例的名称。
  • DISK_NAME:要挂接的磁盘的名称。磁盘名称可能与实例名称相同。

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"
}

替换以下内容:

  • PROJECT_ID:您的项目的 ID。
  • INSTANCE_NAME:您要挂接新的 Persistent Disk 永久性磁盘的实例的名称。
  • ZONE:您的实例和新磁盘所在的可用域。
  • DISK_NAME:新磁盘的名称。

将磁盘挂接到虚拟机实例后,重新启动该实例

更新实例的启动磁盘

您只能使用 Google Cloud 控制台通过一个步骤更新虚拟机的启动磁盘。具体而言,您可以通过一个操作分离现有启动磁盘并挂接新的启动磁盘。

通过 gcloud CLI 或 REST 无法使用此功能。

  1. 转到“虚拟机实例”页面。

    转到“虚拟机实例”

  2. 如果出现提示,请选择您的项目并点击继续
  3. 点击要挂接启动磁盘的实例。
  4. 如果虚拟机实例尚未停止,请点击页面顶部的停止
  5. 点击页面顶部的修改
  6. 向下滚动到启动磁盘部分。
  7. 点击当前启动磁盘旁边的 X
  8. 点击添加项
  9. 从下拉菜单中选择启动磁盘。
  10. 点击保存

Google Cloud 控制台将继续分离现有启动磁盘,并挂接您指定的新启动磁盘。此过程完成后,重启虚拟机实例

后续步骤