将非启动磁盘挂接到虚拟机


本页面介绍如何将现有非启动磁盘挂接到一个或多个虚拟机 (VM) 实例。

如需创建或更改虚拟机的启动磁盘,请分别参阅创建启动磁盘以及分离和重新挂接启动磁盘

如需创建新磁盘,请参阅创建新的 Persistent Disk 卷创建新的 Hyperdisk 卷

所需的角色和权限

如需获得将磁盘挂接到虚拟机所需的权限,请让您的管理员为您授予项目的以下 IAM 角色:

  • Compute Instance Admin (v1) (roles/compute.instanceAdmin.v1)
  • 若要连接到能够以服务账号的身份运行的虚拟机实例:Service Account User (v1)(roles/iam.serviceAccountUser 角色)

如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限

这些预定义角色可提供将磁盘挂接到虚拟机所需的权限。如需查看所需的确切权限,请展开所需权限部分:

所需权限

将磁盘挂接到虚拟机需要以下权限:

  • 如需将磁盘挂接到虚拟机:
    • 针对虚拟机的 compute.instances.attachDisk 权限
    • 针对虚拟机的 compute.instances.attachDisk 权限
    • 针对您要挂接到虚拟机的磁盘的 compute.disks.use 权限
  • 为了格式化和装载挂接的卷:针对虚拟机的 compute.instances.setMetadata

您也可以使用自定义角色或其他预定义角色来获取这些权限。

磁盘挂接模式

将磁盘挂接到虚拟机时,您可以通过指定磁盘挂接模式来指明虚拟机如何访问磁盘上的数据。您可以选择只读模式或读写模式。

默认模式为读写。

在虚拟机之间共享磁盘

您可以在虚拟机之间共享同一磁盘,只需将磁盘挂接到每个虚拟机,即可让每个虚拟机同时访问该磁盘。如果磁盘类型和虚拟机的机器类型支持,您可以将磁盘挂接到多个虚拟机。

如需将磁盘挂接到多个虚拟机,请针对每个虚拟机按照将非启动磁盘挂接到虚拟机中的过程操作。

您必须对磁盘挂接到的所有虚拟机使用相同的磁盘挂接模式。例如,您不能将磁盘以读写模式挂接到一个虚拟机,同时又以只读模式将其挂接到另一个虚拟机。

如需了解如何将磁盘挂接到多个虚拟机(包括支持的磁盘类型),请参阅在虚拟机之间共享磁盘

将 Hyperdisk 卷挂接到多个虚拟机

如需将 Hyperdisk 卷挂接到多个虚拟机,请确保将磁盘的访问模式设置为适合您的应用场景的值。如需了解如何设置访问模式,请参阅设置磁盘的访问模式

将 Hyperdisk 卷挂接到虚拟机时,您必须选择不会与磁盘访问模式冲突的磁盘挂接模式。例如,您不能将只读挂接模式与处于单写入者模式或多写入者模式的磁盘搭配使用。

限制

将磁盘挂接到虚拟机时,请注意以下限制:

  • 您最多可以向虚拟机挂接 127 个辅助非启动可用区级磁盘。

  • 如果将磁盘挂接到虚拟机导致超出虚拟机的磁盘容量上限,则无法执行此操作。

  • 以下磁盘类型不支持只读模式:

    • 平衡 Hyperdisk
    • Hyperdisk Throughput
    • Hyperdisk Balanced 高可用性
    • Hyperdisk Extreme
  • 将磁盘挂接到多个虚拟机时,您必须对所有虚拟机使用相同的磁盘挂接模式。

  • 将磁盘挂接到多个虚拟机时,还有一些其他限制:请参阅以只读模式多写入者模式在虚拟机之间共享磁盘的限制。

  • 挂接到多个虚拟机的磁盘不支持自动删除,也就是说,在删除虚拟机时,这些磁盘无法自动删除。

将非启动磁盘挂接到虚拟机

您可以使用 Google Cloud 控制台、Google Cloud CLI 或 REST 将可用区级非启动磁盘挂接到虚拟机。

将磁盘挂接到虚拟机时,请注意以下几点:

  • 使用自定义设备名称:Google 建议您在将磁盘挂接到虚拟机时指定自定义设备名称。您指定的名称将用于在客户机操作系统中为磁盘生成符号链接,以便更轻松地识别和管理虚拟机上的磁盘。

  • 将磁盘挂接到多个虚拟机:如需将磁盘挂接到多个虚拟机,请针对每个虚拟机重复本部分中的过程。您必须对磁盘挂接到的所有虚拟机使用相同的磁盘挂接模式。

如需将 区域级永久性磁盘Hyperdisk Balanced 高可用性卷挂接到虚拟机,请改为参阅将区域性磁盘挂接到虚拟机

控制台

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

    转到“虚拟机实例”页面

  2. 点击要在其中添加磁盘的虚拟机的名称。

  3. 在详细信息页面上,点击修改

  4. 存储空间部分中的额外磁盘下,点击 + 挂接现有磁盘

  5. 磁盘列表中,选择要挂接的磁盘。如果未列出该磁盘,请确保该磁盘与虚拟机位于同一位置。这意味着,对于可用区级磁盘,应位于同一可用区;对于区域级磁盘,应位于同一区域。

  6. 磁盘挂接模式部分,选择只读以仅允许虚拟机从磁盘读取数据。如需允许虚拟机读写权限,请选择读写

  7. 删除规则下,指定是否在删除虚拟机时删除磁盘。如需在删除虚拟机时保留磁盘,请选择保留磁盘。如需在删除虚拟机时删除磁盘,请选择删除磁盘。如果您要将磁盘挂接到多个虚拟机,则必须选择保留磁盘

  8. 可选:在设备名称标题下,选择使用自定义设备名称选项。您输入的名称用于为磁盘生成符号链接,以方便识别磁盘。

  9. 如需将更改应用于磁盘,请点击完成

  10. 点击保存以应用更改并将磁盘挂接到虚拟机。

gcloud

如需将磁盘挂接到虚拟机,请使用 gcloud compute instances attach-disk 命令。使用 mode 标志指定磁盘挂接模式。

gcloud compute instances attach-disk VM_NAME \
    --disk DISK_NAME --device-name=DEVICE_NAME
    --mode DISK_ATTACHMENT_MODE

替换以下内容:

  • VM_NAME:要添加新可用区级永久性磁盘的虚拟机的名称
  • DISK_NAME:要挂接到虚拟机的新磁盘的名称
  • DEVICE_NAME(可选):客户机操作系统用于识别磁盘的名称。
  • DISK_ATTACHMENT_MODE(可选):如何将磁盘挂接到虚拟机。对于只读模式,请设置为 ro。对于读写模式,请设置为 rw,或省略此标志,因为 rw 是默认值。

Terraform

如需将磁盘挂接到虚拟机,请使用 google_compute_instance 资源

resource "google_compute_instance" "test_node" {
  name         = "test-node"
  machine_type = "f1-micro"
  zone         = "us-west1-a"

  boot_disk {
    initialize_params {
      image = "debian-cloud/debian-11"
    }
  }
  attached_disk {
    source      = google_compute_disk.default.id
    device_name = google_compute_disk.default.name
  }

  network_interface {
    network = "default"
    access_config {
      # Ephemeral IP
    }
  }

  # Ignore changes for persistent disk attachments
  lifecycle {
    ignore_changes = [attached_disk]
  }


}

如需了解如何应用或移除 Terraform 配置,请参阅基本 Terraform 命令

REST

如需将磁盘挂接到虚拟机,请构建一个向 compute.instances.attachDisk 方法发出的 POST 请求,并添加您要挂接的磁盘的网址。

如需指定磁盘挂接模式,请使用 mode 参数。

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/attachDisk

{
   "source": "/compute/v1/projects/PROJECT_ID/zones/ZONE/disks/DISK_NAME",
   "deviceName": DEVICE_NAME,
   "mode" : "DISK_ATTACHMENT_MODE"
}

替换以下内容:

  • PROJECT_ID:您的项目 ID
  • ZONE:虚拟机和磁盘所在的可用区。
  • VM_NAME:您要将磁盘挂接到的虚拟机的名称
  • DISK_NAME:要挂接的磁盘的名称
  • DEVICE_NAME(可选):客机操作系统用于创建符号链接的名称,有助于识别磁盘。
  • DISK_ATTACHMENT_MODE(可选):磁盘应如何挂接到虚拟机。对于只读模式,请使用 READ_ONLY。对于读写模式,请设置为 READ_WRITE,或省略此标志,因为 READ_WRITE 是默认值。

将磁盘挂接到虚拟机后,连接到虚拟机并启用虚拟机的操作系统 (OS) 以使用该磁盘:

  • 如果您挂接了空白磁盘,请格式化并装载该磁盘
  • 如果您挂接了非空磁盘,请装载该磁盘

了解如何在 LinuxWindows 虚拟机上格式化和装载新磁盘。

后续步骤