分离和重新挂接启动磁盘

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

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

准备工作

执行此任务所需的权限

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

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

限制

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

分离启动磁盘

在从实例分离启动磁盘之前,必须停止实例。您无需卸载磁盘。

控制台

  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:要分离的磁盘的名称。磁盘名称通常与实例名称相同。

API

在 API 中,构建一个 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 兼容的磁盘,请使用 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:要挂接的磁盘的名称。磁盘名称可能与实例名称相同。

API

在 API 中,构建一个 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:您要挂接新永久性磁盘的实例的名称。
  • ZONE:您的实例和新磁盘所在的可用域。
  • DISK_NAME:新磁盘的名称。

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

更新实例的启动磁盘

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

此功能无法通过 gcloud 工具或 Compute Engine API 使用。

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

    转到“虚拟机实例”

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

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

后续步骤