更改磁盘类型


本文档介绍了如何在磁盘上执行特定任务。如需执行以下任一任务,您必须创建新的磁盘。您无法对磁盘进行以下更改。

  • 更改磁盘的类型,例如将 Hyperdisk Throughput 卷更改为 Hyperdisk Balanced 卷。
  • 更改磁盘的加密类型,例如,将磁盘的加密方式从使用 Google 生成的密钥更改为使用客户管理的加密密钥 (CMEK)。
  • 将磁盘移入或移出 Hyperdisk 存储池

如需执行上述任何任务,请按以下步骤操作:

  1. 创建现有磁盘的快照。
  2. 使用快照作为磁盘的数据源,创建正确类型或在存储池(称为其位置)中的新磁盘。
  3. 验证新磁盘后,您可以删除原始磁盘。

准备工作

  • 如果要将新的 Hyperdisk 卷放在存储池中,请查看存储池的文档,尤其是:

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

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

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

        gcloud init

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

所需的角色和权限

如需获得更改磁盘类型所需的权限,请让管理员向您授予项目上的以下 IAM 角色:

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

这些预定义角色包含更改磁盘类型所需的权限。如需查看所需的确切权限,请展开所需权限部分:

所需权限

如需更改磁盘类型,您需要具备以下权限:

  • 如需创建磁盘的快照:
    • 针对项目的 compute.snapshots.create 权限
    • 针对磁盘的 compute.disks.createSnapshot 权限
  • 创建新磁盘:针对项目的 compute.disks.create 权限
  • 如需在存储池中创建磁盘:
    • 针对项目的 compute.storagePools.use 权限
    • 针对项目的 compute.disks.create 权限
  • 如需将磁盘挂接到虚拟机:
    • 针对虚拟机的 compute.instances.attachDisk 权限
    • 针对您要挂接到虚拟机的卷的 compute.disks.use
  • 如需删除磁盘:针对项目的 compute.disks.delete 权限

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

更改磁盘的类型或位置

如需将 Persistent Disk 卷迁移到 Hyperdisk,或者在存储池内外重新创建磁盘,请创建磁盘快照,然后在创建新磁盘时使用该快照。

创建新的 Hyperdisk 卷时,您可以将其创建为独立磁盘,也可以在存储池中创建磁盘(如果存储池存在)。

控制台

  1. 准备创建磁盘快照:

    重要说明:如果您在创建快照之前暂停应用,则只有在快照资源达到 UPLOADING 状态后才能恢复工作负载。

    如需了解详情,请参阅手动创建应用一致快照中的表。

  2. 创建现有磁盘的快照

  3. 可选:如需在存储池中创建新的 Hyperdisk,您必须创建存储空间池(如果不存在)。
  4. 转到磁盘页面。

    转到“磁盘”
  5. 点击 + 创建磁盘
  6. 磁盘类型下,选择 Hyperdisk ExtremeHyperdisk ThroughputHyperdisk Balanced

    可选:如需使用存储池,请选择 Hyperdisk Balanced 或 Hyperdisk Throughput。

  7. 对于磁盘来源类型,选择快照,然后选择要恢复的快照的名称。
  8. 指定新磁盘的大小(以 GiB 为单位)。此数字必须等于或大于快照最初的来源磁盘大小。
  9. 可选:如果您要更改磁盘类型,请更改默认值:

    • Hyperdisk Balanced:更改预配的 IOPS 值和预配的吞吐量值。
    • Hyperdisk Extreme:更改预配的 IOPS 值。
    • Hyperdisk Throughput:更改预配的吞吐量值。
  10. 可选:如需在存储池中创建新磁盘,请执行以下操作:

    1. 存储空间池部分中,选择启用存储池
    2. 选择要在其中创建磁盘的存储池的名称。

      列表中仅显示所选可用区中存在的存储池。

  11. 点击创建以创建新磁盘。
  12. 创建磁盘后,您可以将磁盘挂接到任何正在运行或已停止的计算实例。

gcloud

  1. 准备创建磁盘快照:

    重要说明:如果您在创建快照之前暂停应用,则只有在快照资源达到 UPLOADING 状态后才能恢复工作负载。

    如需了解详情,请参阅手动创建应用一致快照中的表。

  2. 创建现有磁盘的快照

  3. 使用 disks create 命令根据快照创建 Hyperdisk Extreme 卷。

    gcloud compute disks create DISK_NAME \
     --zone=ZONE \
     --storage-pool=STORAGE_POOL_NAME \
     --size=SIZE \
     --source-snapshot=SNAPSHOT_NAME \
     --type=DISK_TYPE \
     --provisioned-iops=PROVISIONED_IOPS \
     --provisioned-throughput=PROVISIONED_THROUGHPUT
    

    替换以下内容:

    • DISK_NAME:磁盘的唯一名称。您可以提供由空间指定的磁盘名称列表,以创建具有相同属性的多个磁盘。
    • ZONE:您要在其中创建磁盘的可用区。如果要在存储池中创建磁盘,则必须指定存储池所在的可用区。采用区域-可用区格式指定此值,例如 us-central1-a
    • STORAGE_POOL_NAME(可选):要在其中创建磁盘的存储池的名称。如果您不添加此参数,则系统会创建一个独立的 Hyperdisk。
    • SIZE(可选):新磁盘的预配容量。该大小必须大于或等于来源 Persistent Disk 的大小。该值必须是一个整数,后跟大小单位(GB 表示吉比字节,或 TB 表示太比字节)。如果未指定大小,则使用 100 GB 作为默认值。
    • SNAPSHOT_NAME:您根据原始磁盘创建的快照的名称。
    • DISK_TYPE:要创建的磁盘类型。如果在存储池中创建磁盘,则此值必须与 Hyperdisk 存储池的类型匹配,即 hyperdisk-balancedhyperdisk-throughput
    • PROVISIONED_IOPS(可选):要为磁盘预配的 IOPS。只有在创建 Hyperdisk Balanced 或 Hyperdisk Extreme 磁盘时才能使用此参数。
    • PROVISIONED_THROUGHPUT(可选):对于 Hyperdisk Balanced 和 Hyperdisk Throughput 磁盘,要为磁盘预配的每秒吞吐量 (MB)。该值必须为正整数。
  4. 创建磁盘后,您可以将磁盘挂接到任何正在运行或已停止的计算实例。

REST

  1. 使用 disks.insert 方法构建 POST 请求以创建可用区级 Hyperdisk。 请求应包含 namesizeGbtypesourceSnapshot 属性。

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/disks
    {
       "name": "DISK_NAME",
       "sizeGb": "DISK_SIZE",
       "type": "https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/diskTypes/DISK_TYPE",
       "sourceSnapshot": "SNAPSHOT_NAME",
       "provisionedIops": "IOPS_LIMIT",
       "provisionedThroughput": "THROUGHPUT_LIMIT",
       "accessMode": "DISK_ACCESS_MODE"
    }
    

    替换以下内容:

    • PROJECT_ID:您的项目 ID
    • ZONE:您的计算实例和新磁盘所在的可用区
    • DISK_NAME:新磁盘的名称
    • DISK_SIZE:可选:新磁盘的大小。该值必须是一个整数,后跟大小单位(GB 表示吉比字节,或 TB 表示太比字节)。
    • DISK_TYPE:磁盘类型。如需创建 Hyperdisk 卷,请使用以下值之一:hyperdisk-balancedhyperdisk-extremehyperdisk-mlhyperdisk-throughput
    • IOPS_LIMIT(可选):对于 Hyperdisk Balanced 和 Hyperdisk Extreme,这是磁盘每秒可处理的 I/O 操作次数。
    • THROUGHPUT_LIMIT:可选:对于 Hyperdisk Balanced、Hyperdisk ML 或 Hyperdisk Throughput 卷,这是一个整数,表示磁盘可以处理的吞吐量(以 MiB/秒为单位)。
    • DISK_ACCESS_MODE:计算实例如何访问磁盘上的数据。支持的值包括:

      • READ_WRITE_SINGLE,用于从一个实例进行读写权限。这是默认值。
      • READ_WRITE_MANY,用于从多个实例进行读写权限。
      • READ_ONLY_MANY,用于从多个实例进行只读访问。

      您可以为以下磁盘类型设置访问模式:

      • 平衡 Hyperdisk
      • Hyperdisk ML
      • 高可用性平衡 Hyperdisk(预览版
  2. 可选:使用 compute.disks.get 方法查看磁盘的说明。

  3. 创建磁盘后,您可以将磁盘挂接到任何正在运行或已停止的计算实例。

将可用区磁盘更改为区域级 Hyperdisk Balanced 高可用性磁盘

如需将可用区磁盘更改为 Hyperdisk 平衡高可用性磁盘,请创建可用区磁盘的快照,并在创建区域磁盘时将该快照用作来源。

控制台

  1. 准备创建磁盘快照:

    重要说明:如果您在创建快照之前暂停应用,则只有在快照资源达到 UPLOADING 状态后才能恢复工作负载。

    如需了解详情,请参阅手动创建应用一致快照中的表。

  2. 创建现有磁盘的快照

  3. 转到磁盘页面。

    转到“磁盘”
  4. 点击 + 创建磁盘
  5. 为磁盘指定名称。
  6. 位置字段中,选择区域级
  7. 区域可用区字段中,为磁盘指定主可用区。

    磁盘必须与您计划将其附加到的计算实例位于同一区域。

  8. 副本可用区字段中指定辅助可用区。
  9. 对于磁盘来源类型,选择快照,然后选择要恢复的快照的名称。
  10. 磁盘类型下,选择 Hyperdisk Balanced 高可用性

    如果您在列表中没有看到 Hyperdisk Balanced 高可用性磁盘类型,则可能需要选择提供 Hyperdisk Balanced 高可用性磁盘的区域

  11. 指定新磁盘的大小(以 GiB 为单位)。此数字必须等于或大于快照最初的来源磁盘大小。
  12. 可选:更改新磁盘的默认预配 IOPS预配吞吐量值:

  13. 点击创建以创建新磁盘。
  14. 创建磁盘后,您可以将磁盘挂接到任何正在运行或已停止的计算实例。

gcloud

  1. 准备创建磁盘快照:

    重要说明:如果您在创建快照之前暂停应用,则只有在快照资源达到 UPLOADING 状态后才能恢复工作负载。

    如需了解详情,请参阅手动创建应用一致快照中的表。

  2. 创建现有磁盘的快照

  3. 使用 disks create 命令根据快照创建 Hyperdisk Balanced 高可用性磁盘。

    gcloud compute disks create DISK_NAME \
     --size=SIZE \
     --type=hyperdisk-balanced-high-availability \
     --source-snapshot=SNAPSHOT_NAME \
     --provisioned-iops=PROVISIONED_IOPS \
     --provisioned-throughput=PROVISIONED_THROUGHPUT \
     --region=REGION \
     --replica-zones=ZONE1,ZONE2
    

    替换以下内容:

    • DISK_NAME:磁盘的唯一名称。
    • SIZE(可选):新磁盘的预配容量。该大小必须大于或等于来源磁盘的大小。该值必须是一个整数,后跟大小单位(GB 表示吉比字节,或 TB 表示太比字节)。
    • SNAPSHOT_NAME:您根据原始磁盘创建的快照的名称。
    • PROVISIONED_IOPS(可选):要为磁盘预配的 IOPS。
    • PROVISIONED_THROUGHPUT(可选):要为磁盘预配的吞吐量,以兆字节 (MB)/秒为单位。
    • REGION:区域磁盘将驻留的区域,例如 europe-west1
    • ZONE1ZONE2:两个磁盘副本所在区域内的可用区,例如 europe-west1-b,europe-west1-c

Terraform

如需创建 Hyperdisk Balanced 高可用性卷,您可以使用 google_compute_region_disk 资源,如以下示例所示,但请将磁盘类型从 pd-ssd 更改为 hyperdisk-balanced-high-availability

resource "google_compute_region_disk" "regiondisk" {
  name                      = "region-disk-name"
  snapshot                  = google_compute_snapshot.snapdisk.id
  type                      = "pd-ssd"
  region                    = "us-central1"
  physical_block_size_bytes = 4096
  size                      = 11

  replica_zones = ["us-central1-a", "us-central1-f"]
}

REST

如需创建 Hyperdisk Balanced 高可用性卷,请构建一个向 compute.regionDisks.insert 方法发出的 POST 请求。

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/disks
{
  "name": "DISK_NAME",
  "sourceSnapshot": "SNAPSHOT_NAME",
  "region": "projects/PROJECT_ID/regions/REGION",
  "replicaZones": [
    "projects/PROJECT_ID/zones/ZONE1",
    "projects/PROJECT_ID/zones/ZONE2"
  ],
  "sizeGb": "DISK_SIZE",
  "type": "projects/PROJECT_ID/regions/REGION/diskTypes/hyperdisk-balanced-high-availability"
}

替换以下内容:

  • PROJECT_ID:您的项目 ID
  • REGION:区域磁盘将驻留的区域,例如 europe-west1
  • DISK_NAME:新磁盘的名称
  • SNAPSHOT_NAME:您根据原始磁盘创建的快照的名称。
  • ZONE1ZONE2:新磁盘副本应位于的可用区,例如 europe-west1-b,europe-west1-c
  • DISK_SIZE:新磁盘的大小(以 GB 为单位)

将新磁盘设为可供虚拟机实例访问

创建磁盘后,您必须先将磁盘挂接将区域性磁盘挂接到计算实例,然后才能使用它。

由于您创建的新磁盘不是空白磁盘,因此在将磁盘挂接到实例后,您只需装载该磁盘,即可将其提供给操作系统。

如需了解如何装载磁盘,请参阅以下内容:

移除原始磁盘

验证新磁盘后,您可以执行以下操作:

后续步骤