分离和重新挂接启动磁盘


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

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

准备工作

  • 设置身份验证(如果尚未设置)。身份验证是通过其进行身份验证以访问 Google Cloud 服务和 API 的过程。如需从本地开发环境运行代码或示例,您可以按如下方式向 Compute Engine 进行身份验证。

    选择标签页以了解您打算如何使用本页面上的示例:

    控制台

    当您使用 Google Cloud 控制台访问 Google Cloud 服务和 API 时,无需设置身份验证。

    gcloud

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

      gcloud init
    2. 设置默认区域和可用区

    REST

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

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

      gcloud init

执行此任务所需的权限

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

  • 针对实例的 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 控制台将继续分离现有启动磁盘,并挂接您指定的新启动磁盘。此过程完成后,重启虚拟机实例

后续步骤