更改磁盘类型


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

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

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

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

准备工作

所需的角色和权限

如需获得更改磁盘类型所需的权限,请让管理员向您授予项目上的以下 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 Balanced 高可用性磁盘,请创建可用区级磁盘的快照,并在创建区域级磁盘时将该快照用作来源。

控制台

  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 为单位)

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

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

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

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

移除原始磁盘

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

后续步骤