Add disks from a Hyperdisk pool to VMs
Stay organized with collections
Save and categorize content based on your preferences.
This document describes how to create disks in a pool.
You can create a disk in a pool and then attach the disk to
a virtual machine (VM) instance, or you can create disks in the
pool when you create a VM instance.
If you haven't already, set up authentication.
Authentication verifies your identity for access to Google Cloud services and APIs. To run
code or samples from a local development environment, you can authenticate to
Compute Engine by selecting one of the following options:
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
Install the Google Cloud CLI.
After installation,
initialize the Google Cloud CLI by running the following command:
To use the Go samples on this page in a local development environment, install and
initialize the gcloud CLI, and then set up Application Default Credentials with
your user credentials.
To use the Java samples on this page in a local development environment, install and
initialize the gcloud CLI, and then set up Application Default Credentials with
your user credentials.
To use the Node.js samples on this page in a local development environment, install and
initialize the gcloud CLI, and then set up Application Default Credentials with
your user credentials.
To get the permissions that
you need to create a Hyperdisk Balanced or Hyperdisk Throughput disk in a pool,
ask your administrator to grant you the
following IAM roles on the project:
These predefined roles contain
the permissions required to create a Hyperdisk Balanced or Hyperdisk Throughput disk in a 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 Balanced or Hyperdisk Throughput disk in a pool:
To create disks in a pool and attach the disks to a VM instance:
compute.disks.create
on the project
compute.instances.attachDisk
on the VM
compute.disks.use
on the volume that you want to attach to the VM
compute.storagePools.use
on the pool you're creating disks in
To format and mount the attached volume:
compute.instances.setMetadata
on the VM
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.
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;
you have to recreate the disk from a standard 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.
Limitations specific to Storage Pools:
You can create up to 10,000 disks in a
Storage Pool.
Limitations specific to Exapools:
You can create up to 500,000 disks in an
Exapool.
Provisioning options
Depending on the provisioning type for the pool, you can
choose how to provision both the capacity and the performance of each the disk
that you create in the pool.
Provisioning disk capacity
If you're using an Exapool or an advanced capacity
Storage Pool, you can create disks in the pool with a
cumulative size that exceeds the provisioned capacity of the pool. The used
capacity of the pool is defined by the total data in use and
not by the amount of disk space that you've provisioned. You can provision disks
with an aggregate capacity of up to five or
50 times the provisioned capacity of an Advanced capacity
pool or Hyperdisk Exapool, respectively.
If you are creating disks in a Standard capacity pool, then you
create disks in the pool until the total size of all disks
in the pool reaches the pool's
provisioned capacity. The disks in a pool with Standard capacity
behave similarly to non-pool disks, where capacity is consumed when you create
the disks.
Provisioning performance
If you're using an Exapool or an advanced capacity
Storage Pool, you can create disks in the pool with a
cumulative amount of IOPS and throughput that exceeds the provisioned
performance of the pool. The used performance of the pool is
defined by the total performance used by the disks and not by the amount of
performance provisioned to each disk.
For Storage Pools, you can provision disks with an aggregate
performance of up to 500%% of the provisioned performance of an
Advanced performance pool.
For Exapools, you can provision disks with an aggregate
performance of up to 50x the pool's
provisioned write performance.
If you're creating disks in a Standard performance pool, the IOPS or
throughput that you provision for a disk must be less than the available IOPS or
throughput in the Hyperdisk Storage Pool. The available IOPS or throughput is the
provisioned amount for the pool minus the used amount for
all the disks created in the pool.
If any of the conditions in the previous paragraph aren't true, then the
request to create a disk in the pool fails and the
disk isn't created.
Example
Assume that you have a Hyperdisk Balanced Storage Pool with 100,000 provisioned IOPS.
With Standard performance provisioning:
You can provision up to 100,000 of aggregate IOPS when creating
Hyperdisk Balanced disks in the Storage Pool.
You are charged for the 100,000 IOPS of Hyperdisk Balanced Storage Pool provisioned performance.
Like disks created outside of a storage pool, Hyperdisk Balanced disks in Standard performance Storage Pools
are automatically provisioned with up to 3,000 baseline IOPS and 140 MiB/s of baseline
throughput. This baseline performance isn't counted against the provisioned performance for the
Storage Pool. Only when you add disks to the Storage Pool with provisioned
performance that's above the baseline does it count against the provisioned performance for
the Storage Pool, for example:
A disk provisioned with 3,000 IOPS uses 0 pool IOPS and the pool still has 100,000
provisioned IOPS available for other disks.
A disk provisioned with 13,000 IOPS uses 10,000 pool IOPS and the pool has 90,000
provisioned IOPS remaining that you can allocate to other disks in the Storage Pool.
With Advanced performance provisioning:
You can provision up to 500,000 IOPS of aggregate Hyperdisk
performance when creating disks in the Storage Pool.
You are charged for 100,000 IOPS provisioned by the Storage Pool.
If you create a single disk (Disk1) in the Storage Pool that has 5,000
IOPS, you don't consume any IOPS from the Storage Pool provisioned IOPS.
However, the amount of IOPS that you can provision to new disks created in
the Storage Pool is now 495,000.
If Disk1 starts to read and write data, and if it uses its maximum of 5,000
IOPS in a given minute, then 5,000 IOPS is consumed from the
Storage Pool provisioned IOPS. Any other disks that you created in the
same storage pool can use an aggregated maximum of 95,000 IOPS in that same
minute without running into contention.
Create disks in the pool
You can use the Google Cloud console, Google Cloud CLI, or REST to create a
disk in a pool.
When you create a VM, you configure a boot disk, and you can optionally create
additional data (non-boot) disks, which are automatically attached to the VM.
The following sections explain how to create each type of disk in a
pool as part of the VM creation process.
Create the boot disk for a VM in a pool
To create a VM that uses a boot disk in a pool, you must
first create a Hyperdisk Balanced Storage Pool or Hyperdisk Balanced Exapool. You can then create an instance
using a machine type that supports Hyperdisk Balanced disks. The machine type, disk type, and
pool must all be available in the zone that you choose.
The instance templates used to create managed instance groups (MIGs) can
contain the pool information. The disks created using the
instance template are placed in the specified pool.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Hard to understand","hardToUnderstand","thumb-down"],["Incorrect information or sample code","incorrectInformationOrSampleCode","thumb-down"],["Missing the information/samples I need","missingTheInformationSamplesINeed","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2026-09-30 UTC."],[],[]]