向实例添加永久性磁盘


您可以创建空白的永久性磁盘,也可以从数据源创建磁盘。您可以将永久性磁盘用作虚拟机实例的启动磁盘,也可以用作挂接到虚拟机的数据磁盘。

本文档介绍如何:

  • 创建空白的非启动可用区永久性磁盘,并将其挂接到虚拟机。

如果您要创建稍后可用于创建虚拟机的启动磁盘,请参阅创建自定义启动磁盘

如果要将 Google Cloud Hyperdisk 磁盘添加到虚拟机,请参阅将 Hyperdisk 存储添加到虚拟机

如果您需要在虚拟机上格式化或装载永久性磁盘,请参阅:

如需大致了解 Persistent Disk 以及可用磁盘类型,请参阅 Persistent Disk 概览

准备工作

  • 设置身份验证(如果尚未设置)。身份验证是通过其进行身份验证以访问 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. Install the Google Cloud CLI, then initialize it by running the following command:

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

      如需在本地开发环境中使用本页面上的 Terraform 示例,请安装并初始化 gcloud CLI,然后使用您的用户凭据设置应用默认凭据。

      1. Install the Google Cloud CLI.
      2. To initialize the gcloud CLI, run the following command:

        gcloud init
      3. If you're using a local shell, then create local authentication credentials for your user account:

        gcloud auth application-default login

        You don't need to do this if you're using Cloud Shell.

      如需了解详情,请参阅 Set up authentication for a local development environment

      REST

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

        Install the Google Cloud CLI, then initialize it by running the following command:

        gcloud init

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

限制

  • 在创建虚拟机期间,您最多可以挂接 127 个辅助非启动可用区级永久性磁盘。
  • 每个虚拟机可以挂接的总容量为 257 TB。如需了解如何在使用大容量卷时确保最高性能,请参阅逻辑卷大小

将非启动磁盘添加到虚拟机

使用 Google Cloud 控制台Google Cloud CLIREST 创建并挂接可用区级非启动磁盘。

如果您在 Google Cloud 控制台中创建磁盘,则默认磁盘类型pd-balanced。如果您使用 gcloud CLI 或 REST 创建磁盘,则默认磁盘类型为 pd-standard

在将磁盘挂接到虚拟机时,您应指定自定义设备名称。您指定的名称将用于在客户机操作系统中为磁盘生成符号链接,以方便识别。

控制台

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

    转到“虚拟机实例”页面

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

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

  4. 额外磁盘下,点击添加新磁盘

  5. 指定磁盘名称,配置磁盘属性,然后选择空白作为来源类型

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

  7. 点击完成完成磁盘的配置。

  8. 点击保存以将更改应用于虚拟机并添加新磁盘。

gcloud

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  2. 使用 gcloud compute disks create 命令创建可用区永久性磁盘。

    gcloud compute disks create DISK_NAME \
      --size DISK_SIZE \
      --type DISK_TYPE
    

    请替换以下内容:

    • DISK_NAME:新磁盘的名称。
    • DISK_SIZE:新磁盘的大小(以 GB 为单位)。可接受的大小范围介于 10 GB 到 65536 GB(含边界值)之间并以 1 GB 为增量。
    • DISK_TYPE:永久性磁盘类型的完整或部分网址。例如 https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/diskTypes/pd-ssd
  3. 创建磁盘后,将其挂接到任何正在运行或已停止的虚拟机。使用 gcloud compute instances attach-disk 命令

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

    替换以下内容:

    • VM_NAME:要添加新可用区级永久性磁盘的虚拟机的名称
    • DISK_NAME:要挂接到虚拟机的新磁盘的名称
    • DEVICE_NAME(可选):客户机操作系统用于识别磁盘的名称。
  4. 使用 gcloud compute disks describe 命令查看磁盘的说明。

Terraform

如需创建磁盘,请使用 google_compute_disk 资源

# Using pd-standard because it's the default for Compute Engine

resource "google_compute_disk" "default" {
  name = "disk-data"
  type = "pd-standard"
  zone = "us-west1-a"
  size = "5"
}

如需将磁盘挂接到虚拟机,请使用 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

  1. 使用 disks.insert 方法构建 POST 请求,以创建可用区级 Persistent Disk 永久性磁盘。请添加 namesizeGbtype 属性。如需创建一个空白且未格式化的非启动磁盘,请不要为此磁盘指定来源映像或来源快照。

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/disks
    
    {
     "name": "DISK_NAME",
     "sizeGb": "DISK_SIZE",
     "type": "DISK_TYPE"
    }
    

    替换以下内容:

    • PROJECT_ID:您的项目 ID。
    • ZONE:您的虚拟机和新磁盘所在的可用区。
    • DISK_NAME:新磁盘的名称。
    • DISK_SIZE:新磁盘的大小(以 GB 为单位)。可接受的大小范围介于 10 GB 到 65536 GB(含边界值)之间并以 1 GB 为增量。
    • DISK_TYPE:永久性磁盘类型的完整或部分网址。例如 https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/diskTypes/pd-ssd
  2. 构建一个向 compute.instances.attachDisk 方法发出的 POST 请求,并在其中添加您刚创建的可用区级永久性磁盘的网址:

    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
    }
    

    替换以下内容:

    • PROJECT_ID:您的项目 ID
    • ZONE:您的虚拟机和新磁盘所在的可用区
    • VM_NAME:要添加新的永久性磁盘的虚拟机的名称
    • DISK_NAME:新磁盘的名称
    • DEVICE_NAME(可选):客户机操作系统用于识别磁盘的名称。

创建新磁盘并将其挂接到虚拟机后,必须格式化并装载磁盘,以便操作系统可以使用可用的存储空间。

后续步骤