Create Hyperdisk Storage Pools


Hyperdisk Storage Pools are a new block storage resource that helps you manage your Hyperdisk block storage in aggregate. Hyperdisk Storage Pools are available in Hyperdisk Throughput Storage Pool and Hyperdisk Balanced Storage Pool variants.

You must specify the following properties when creating a storage pool:

  • Storage pool type
  • Zone
  • Pool provisioned capacity
  • Pool provisioned IOPS and throughput

You can use Standard capacity or Advanced capacity provisioning with Hyperdisk Storage Pools. With Standard capacity, the total size of each disk is deducted from the storage pool provisioned capacity. Advanced capacity storage pools benefit from thin-provisioning and data reduction, and only the amount of actual written data is deducted from the pool provisioned capacity.

Before you begin

  • If you haven't already, set up authentication. Authentication is the process by which your identity is verified for access to Google Cloud services and APIs. To run code or samples from a local development environment, you can authenticate to Compute Engine as follows.

    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.

    REST

    To use the REST API samples on this page in a local development environment, you use the credentials you provide to the gcloud CLI.

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

      gcloud init

Required roles and permissions

To get the permissions that you need to create a storage pool, ask your administrator to grant you the following IAM roles on the project:

  • Compute Instance Admin (v1) (roles/compute.instanceAdmin.v1)
  • To connect to a VM instance that can run as a service account: Service Account User (v1) (roles/iam.serviceAccountUser role)

For more information about granting roles, see Manage access.

These predefined roles contain the permissions required to create a storage pool. To see the exact permissions that are required, expand the Required permissions section:

Required permissions

The following permissions are required to create a storage pool:

  • compute.storagePools.create on the project
  • compute.storagePools.setLabels on the project

You might also be able to get these permissions with custom roles or other predefined roles.

Limitations

Take note of the following limitations when creating Hyperdisk Storage Pools:

Resource limits:

  • You can create a Hyperdisk Storage Pool with up to 1 PiB of provisioned capacity.
  • You can create a maximum of 5 storage pools per hour.
  • You can create a maximum of 10 storage pools per day.
  • You can create at most 10 storage pools per project.
  • You can't change the provisioning model for a pool; you can't change a Standard capacity storage pool to an Advanced capacity storage pool.
  • Storage pools are a zonal resource.
  • You can create up to 1,000 disks in a storage pool.
  • You can use Hyperdisk Storage Pools with only Compute Engine. Cloud SQL instances cannot use Hyperdisk Storage Pools.
  • You can change the provisioned capacity of a storage pool at most two times in a 24 hour period.

Limits for disks in a storage pool:

Capacity ranges and provisioned performance limits

When creating a storage pool, the provisioned capacity, IOPS, and throughput are subject to the limits described in:

Create a Hyperdisk Storage Pool

To create a new Hyperdisk Storage Pool, use the Google Cloud console, Google Cloud CLI, or REST.

Console

  1. Go to the Create a storage pool page in the Google Cloud console.
    Go to the Create Storage Pool page
  2. In the Name field, enter a unique name for the storage pool.
  3. Optional: In the Description field, enter a description for the storage pool.
  4. In the Location field, select the region and zone in which to create the storage pool.
  5. Choose a value for the Storage Pool type.
  6. Choose a Capacity type and specify the capacity to provision for the storage pool in the size in the Storage Pool capacity field. You can specify a size from 10 TiB to 1 PiB.

    To create a storage pool with large capacity, you might have to request a higher quota.

  7. For Hyperdisk Balanced Storage Pools, in the Provisioned IOPS field, enter the IOPS to provision for the storage pool.

  8. For a Hyperdisk Throughput Storage Pool or Hyperdisk Balanced Storage Pool, in the Provisioned throughput field, enter the throughput to provision for the storage pool.

  9. Click Submit to create the storage pool.

gcloud

To create a Hyperdisk Storage Pool, use the gcloud compute storage-pools create command.

gcloud compute storage-pools create NAME  \
    --zone=ZONE   \
    --storage-pool-type=STORAGE_POOL_TYPE   \
    --capacity-provisioning-type=CAPACITY_PROVISIONING_TYPE \
    --provisioned-capacity=POOL_CAPACITY   \
    --provisioned-iops=IOPS   \
    --provisioned-throughput=THROUGHPUT   \
    --description=DESCRIPTION

Replace the following:

  • NAME: the unique storage pool name.
  • ZONE: the zone in which to create the storage pool, for example, us-central1-a.
  • STORAGE_POOL_TYPE: the type of disk to store in the storage pool. The allowed values are hyperdisk-throughput and hyperdisk-balanced.
  • CAPACITY_PROVISIONING_TYPE: Optional: the capacity provisioning type of the storage pool. The allowed values are advanced and standard. If not specified, the value advanced is used.
  • POOL_CAPACITY: the total capacity to provision for the new storage pool, specified in GiB by default.
  • IOPS: the IOPS to provision for the storage pool. You can use this flag only with Hyperdisk Balanced Storage Pools.
  • THROUGHPUT: the throughput in MBps to provision for the storage pool.
  • DESCRIPTION: Optional: a text string that describes the storage pool.

REST

Construct a POST request to create a Hyperdisk Storage Pool by using the storagePools.insert method.

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

{
    "name": "NAME",
    "description": "DESCRIPTION",
    "poolProvisionedCapacityGb": "POOL_CAPACITY",
    "storagePoolType": "STORAGE_POOL_TYPE",
    "poolProvisionedIops": "IOPS",
    "poolProvisionedThroughput": "THROUGHPUT",
    "capacityProvisioningType": "CAPACITY_PROVISIONING_TYPE"
}

Replace the following:

  • PROJECT_ID: the project ID
  • ZONE: the zone in which to create the storage pool, for example, us-central1-a.
  • NAME: a unique name for the storage pool .
  • DESCRIPTION: Optional: a text string that describes the storage pool.
  • POOL_CAPACITY: the total capacity to provision for the new storage pool, specified in GiB by default.
  • STORAGE_POOL_TYPE: the type of disk to store in the storage pool. The allowed values are hyperdisk-throughput and hyperdisk-balanced.
  • IOPS: Optional: the IOPS to provision for the storage pool. You can use this flag only with Hyperdisk Balanced Storage Pools.
  • THROUGHPUT: Optional: The throughput in MBps to provision for the storage pool.
  • CAPACITY_PROVISIONING_TYPE: Optional: the capacity provisioning type of the storage pool. The allowed values are advanced and standard. If not specified, the value advanced is used.

What's next?