Create a Hyperdisk pool

This document describes how to create Hyperdisk pools. Hyperdisk pools are block storage resources that help you manage your Hyperdisk block storage resources in aggregate. Hyperdisk pools are available in the following variants:

  • Hyperdisk Storage Pools: recommended for most workloads
  • Hyperdisk Exapools: recommended for very large workloads that require more than 100 GiB/s of concurrent performance

To learn about the different types of Hyperdisk pools, see Hyperdisk pools overview.

Before you begin

Required roles and permissions

To get the permissions that you need to create a Hyperdisk 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 to projects, folders, and organizations.

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

Required permissions

The following permissions are required to create a Hyperdisk 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

The following limitations apply when you create Hyperdisk Storage Pools:

Resource limits:

  • You can create a Hyperdisk Storage Pool with up to 5 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. For example, you can't change a Standard capacity Storage Pool to an Advanced capacity Storage Pool or an Advanced performance Storage Pool to a Standard performance Storage Pool.
  • Pools are a zonal resource.
  • You can create up to 10,000 disks in a Storage Pool.
  • You can use Hyperdisk Storage Pools with only Compute Engine. Cloud SQL instances can't use Hyperdisk Storage Pools.
  • You can change the provisioned capacity or performance of a Storage Pool at most two times in a 24 hour period.
  • You can create only Hyperdisk Balanced disks in a Hyperdisk Balanced pool, and you can create only Hyperdisk Throughput disks in a Hyperdisk Throughput pool
  • You must contact your account team to change the provisioned capacity, IOPS, or throughput of an Exapool.
  • You must contact your account team to delete an Exapool.

Limits for disks in a Storage Pool:

  • Only new disks in the same project and zone can be created in a pool.
  • You can't move disks in or out of a pool. To move a disk in or out of a pool, you have to recreate the disk from a snapshot. For more information, see Change the disk type.
  • To create boot disks in a pool, you must use a Hyperdisk Balanced Storage Pool or Hyperdisk Balanced Exapool.
  • Pools don't support regional disks.
  • You can't clone, create instant snapshots of, or configure Asynchronous Replication for disks in a pool.

Capacity ranges and provisioned performance limits

When you create a Storage Pool, the provisioned capacity, IOPS, and throughput can't exceed the limits described in Limits for pools.

To create a new Hyperdisk Storage Pool, use the Google Cloud console, Google Cloud CLI, or REST. You must specify the following properties when you create a Storage Pool:

  • Zone
  • Storage Pool type
  • Capacity provisioning model
  • Pool provisioned capacity
  • Performance provisioning type
  • Pool provisioned IOPS and throughput

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. Select the Region and Zone in which to create the Storage Pool.
  5. Choose a value for the Storage pool type.
  6. Choose a provisioning type in the Capacity type field and specify the capacity to provision for the Storage Pool 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 quota adjustment.

  7. Choose a provisioning type in the Performance type field. You can use the following provisioning types with Hyperdisk Storage Pools:

    • Standard capacity: The capacity provisioned for each disk created in the Storage Pool is deducted from the total provisioned capacity of the Storage Pool.
    • Advanced capacity: The Storage Pool benefits from thin-provisioning and data reduction. Only the amount of actual written data is deducted from the total provisioned capacity of the Storage Pool.
    • Standard performance: The performance provisioned for each disk created in the Storage Pool is deducted from the total provisioned performance of the Storage Pool.
    • Advanced performance: The performance provisioned for each disk benefits from thin-provisioning. Only the amount of performance used by a disk is deducted from the total provisioned performance of the Storage Pool.
  8. For Hyperdisk Balanced Storage Pools, in the Provisioned IOPS field, enter the IOPS to provision for the Storage Pool.

  9. 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.

  10. 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_TYPE \
    --provisioned-capacity=POOL_CAPACITY   \
    --performance-provisioning-type=PERFORMANCE_TYPE \
    --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_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.
  • PERFORMANCE_TYPE: Optional: the performance provisioning type of the Storage Pool. The allowed values are advanced and standard. If not specified, the value advanced is used.
  • 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": "projects/PROJECT_ID/zones/ZONE/storagePoolTypes/STORAGE_POOL_TYPE",
    "poolProvisionedIops": "IOPS",
    "poolProvisionedThroughput": "THROUGHPUT",
    "capacityProvisioningType": "CAPACITY_TYPE",
    "performanceProvisioningType": "PERFORMANCE_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_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.
  • PERFORMANCE_TYPE: Optional: the performance provisioning type of the Storage Pool. The allowed values are advanced and standard. If not specified, the value advanced is used.

Go

Java

Node.js

Create a Hyperdisk Exapool

Hyperdisk Exapools are generally available with an allowlist. To create a Hyperdisk Exapool, contact your account team.

What's next?

Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 4.0 License, and code samples are licensed under the Apache 2.0 License. For details, see the Google Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.

Last updated 2026-02-23 UTC.