管理 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. 安装 Google Cloud CLI,然后通过运行以下命令初始化 Google Cloud CLI:

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

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

        安装 Google Cloud CLI,然后通过运行以下命令初始化 Google Cloud CLI:

        gcloud init

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

所需的角色和权限

如需获得管理存储池所需的权限,请让管理员向您授予项目的以下 IAM 角色:

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

如需详细了解如何授予角色,请参阅管理访问权限

这些预定义角色包含管理存储池所需的权限。如需查看所需的确切权限,请展开所需权限部分:

所需权限

管理存储池需要以下权限:

  • 如需列出项目和可用区的存储池: compute.storagePools.list
  • 如需列出存储池中的磁盘: compute.storagePools.get
  • 如需查看存储池的属性: compute.storagePools.get
  • 如需更新存储池的预配容量或性能,请执行以下操作:
    • compute.storagePools.get
    • compute.storagePools.update
  • 如需删除存储空间池: compute.storagePools.delete

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

限制

管理 Hyperdisk 存储池时,请注意以下限制:

  • 在 24 小时内,您最多可以更改两次存储池的预配容量。
  • 不允许将磁盘移入或移出存储池。如需将磁盘移入或移出存储池,您必须通过快照重新创建磁盘。如需了解详情,请参阅更改磁盘类型
  • 您无法对存储池中的磁盘进行克隆创建即时快照配置永久性磁盘异步复制等操作。
  • 您每小时最多可以删除 5 个存储池。
  • 存储池管理命令要么成功,要么立即失败,但最长可能需要 5 分钟才能完成操作,更改最长可能需要 30 分钟才会显示。

如需查看 Hyperdisk 存储池限制的完整列表,请参阅存储池的限制

修改存储池时的值范围

存储池的最小预配容量为 10 TiB,最大预配容量为 1 PiB。您可以采用 1 TiB 的增量更改存储池的预配容量。

如需了解性能预配限制,请参阅以下内容:

列出项目的存储池

如需查看在项目中创建的存储池,请使用 Google Cloud 控制台、Google Cloud CLI 或 REST。

控制台

  1. 转到 Google Cloud 控制台中的存储池页面。
    转到“存储池”页面

    该页面显示在所选项目中创建的存储池。

  2. 可选:使用过滤条件栏仅显示与过滤条件参数(例如位置、类型、名称和池容量剩余)匹配的存储池。

gcloud

如需列出当前项目中创建的所有存储池,请使用 gcloud compute storage-pools list 命令

gcloud compute storage-pools list

REST

如需显示在项目和可用区中创建的存储池,请使用 storagePools.list 方法构建 GET 请求。

GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/storagePools

替换以下内容:

  • PROJECT_ID:包含存储池的项目的 ID
  • ZONE:存储池所在的可用区,例如 us-central1-a

列出存储池中的磁盘

如需获取存储池中创建的磁盘列表,请使用 Google Cloud 控制台、Google Cloud CLI 或 REST。

控制台

  1. 转到 Google Cloud 控制台中的存储池页面。
    转到“存储池”页面

    该页面显示在所选项目中创建的存储池。

  2. 名称字段中,点击要查看的存储池的名称。

    管理存储池页面会打开。

  3. 存储池磁盘部分中,您可以查看在存储池中创建的磁盘。

gcloud

如需列出在存储池中创建的磁盘,请使用 gcloud compute storage-pools list-disks 命令

gcloud compute storage-pools list-disks STORAGE_POOL_NAME  \
    [--zone=ZONE]

替换以下内容:

  • STORAGE_POOL_NAME:存储池的名称。
  • ZONE:可选。存储池所在的可用区,例如 us-central1-a

REST

如需列出正在使用存储池的磁盘,请使用 storagePools.listDisks 方法构建 GET 请求。

GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/storagePools/STORAGE_POOL_NAME/listDisks

替换以下内容:

  • PROJECT_ID:包含存储池的项目的 ID
  • ZONE:存储池所在的可用区,例如 us-central1-a
  • STORAGE_POOL_NAME:存储池的名称。

描述存储池

如需查看存储空间池的详细信息,您可以使用 Google Cloud 控制台、Google Cloud CLI 或 REST。

控制台

  1. 转到 Google Cloud 控制台中的存储池页面。
    转到“存储池”页面
  2. 对于页面中列出的每个存储池,您可以查看以下信息:

    • 状态
    • 名称
    • 位置
    • 池类型
    • 存储池容量
    • 剩余的池容量
    • 池 IOPS
    • 存储池 IOPS 余量
    • 池中创建的磁盘数
  3. 名称字段中,点击要查看的存储池的名称。

    管理存储池页面会打开。

  4. 存储池设置部分中,您可以查看存储池的其他属性,例如创建时间和容量预配类型。

  5. 存储池磁盘部分中,您可以查看有关在存储池中创建的磁盘的信息。

gcloud

使用 gcloud compute storage-pools describe 命令查看存储池的详细信息。

gcloud compute storage-pools describe STORAGE_POOL_NAME  \
    [--zone=ZONE]

替换以下内容:

  • STORAGE_POOL_NAME:具有唯一性的存储池名称。
  • ZONE:可选。存储池所在的可用区,例如 us-central1-a

REST

如需检索有关存储池的详细信息,请使用 storagePools.get 方法构建 GET 请求。

GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/storagePools/STORAGE_POOL_NAME

替换以下内容:

  • PROJECT_ID:包含存储池的项目的 ID
  • ZONE:存储池所在的可用区,例如 us-central1-a
  • STORAGE_POOL_NAME:存储池的名称

更新存储池的预配容量、IOPS 或吞吐量

您可以增加或减少存储池的预配容量、IOPS 或吞吐量。如需增加存储池的容量、IOPS 或吞吐量,您必须拥有项目和区域的可用配额。

控制台

  1. 转到 Google Cloud 控制台中的存储池页面。
    转到“存储池”页面
  2. 名称字段中,点击要修改的存储池的名称。

    管理存储池页面会打开。

  3. 点击 修改

    此时会打开修改存储池页面。

  4. 可选:在存储池容量字段中,输入池预配容量的新值。新值必须至少比当前值高 1 TiB,并且最多只能比当前值多 100 TiB。最小大小不能小于 10 TiB,最大大小不能超过 1024 TiB。

  5. 可选:在预配吞吐量字段中,输入预配吞吐量的新值。

  6. 可选:对于 Hyperdisk Balanced 类型的存储池,在预配 IOPS 字段中,输入预配的 IOPS 的新值。

  7. 点击保存以更新存储池。

gcloud

使用 gcloud compute storage-pools update 命令修改存储池。

gcloud compute storage-pools update STORAGE_POOL_NAME  \
    --zone=ZONE   \
    --provisioned-capacity=POOL_SIZETiB   \
    --provisioned-iops=IOPS   \
    --provisioned-throughput=THROUGHPUT   \
    --description=DESCRIPTION

替换以下内容:

  • STORAGE_POOL_NAME:存储池的名称。
  • ZONE:可选:存储池所在的可用区,例如 us-central1-a
  • POOL_SIZE:可选:存储池预配的容量(以 TiB 为单位)。
  • IOPS:可选:存储池预配的 IOPS。此标志只能用于 Hyperdisk Balanced 存储池。
  • THROUGHPUT:可选:存储池预配的吞吐量(以 MBps 为单位)。
  • DESCRIPTION:可选:存储池的描述性字符串。

REST

如需更新存储池,请使用 storagePools.update 方法构建 PATCH 请求。

PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/storagePools/STORAGE_POOL_NAME

{
    "description": "DESCRIPTION",
    "poolProvisionedCapacityGb": "SIZE",
    "poolProvisionedIops": "IOPS",
    "poolProvisionedThroughput": "THROUGHPUT"
}

替换以下内容:

  • PROJECT_ID:项目 ID
  • ZONE:存储池所在的可用区,例如 us-central1-a
  • STORAGE_POOL_NAME:存储池的名称。
  • DESCRIPTION:可选:用于描述存储池的文本字段。
  • SIZE:可选:新的存储池预配的容量(以 GiB 为单位)。
  • IOPS:可选:存储池预配的 IOPS 的新值。仅当存储池包含 hyperdisk-balanced 类型的磁盘时,才能指定此属性。
  • THROUGHPUT:可选:存储池预配吞吐量的新值(以 MBps 为单位)。

删除存储池

如需删除或移除存储池,您必须先删除存储池中的所有磁盘。然后,您可以使用 Google Cloud 控制台、Google Cloud CLI 或 REST 删除存储池。

删除存储池的操作不可逆转。但是,删除存储池不会删除根据存储池中创建的磁盘截取的任何快照。您必须单独删除这些快照。

控制台

  1. 转到 Google Cloud 控制台中的存储池页面。
    转到“存储池”页面
  2. 名称字段中,点击要移除的存储池的名称。

    管理存储池页面会打开。

  3. 存储池磁盘部分,验证是否未列出存储池的磁盘。

  4. 点击 删除池

gcloud

使用 gcloud compute storage-pools delete 命令删除存储池。

gcloud compute storage-pools delete STORAGE_POOL_NAME  \
    --zone=ZONE   \

替换以下内容:

  • STORAGE_POOL_NAME:具有唯一性的存储池名称。
  • ZONE:可选:存储池所在的可用区,例如 us-central1-a

REST

如需移除存储池,请为 storagePools.delete 方法构建 DELETE 请求。

DELETE https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/storagePools/STORAGE_POOL_NAME

替换以下内容:

  • PROJECT_ID:项目 ID
  • ZONE:存储池所在的可用区,例如 us-central1-a
  • STORAGE_POOL_NAME:具有唯一性的存储池名称。

后续步骤