Change the disk type

This document discusses how to perform certain tasks on a disk. To perform anyof the following tasks, you must create a new disk. You can't make the followingchanges to a disk.

  • Change a disk's type, for example, change a Hyperdisk Throughput volume to a Hyperdisk Balancedvolume.
  • Change the disk's encryption type, for example, modify a disk's encryptionfrom using Google-generated keys to customer-managed encryption keys (CMEK).
  • Move a disk into or out of aHyperdisk Storage Pool.
  • Move a disk to a different region or zone.

Follow these steps to perform any of the previously mentioned tasks:

  1. Create a snapshot of the existing disk.
  2. Create a new disk of the correct type or within a storage pool (referred toas itsplacement), using thesnapshot as the data source for the disk.
  3. After verifying the new disk, you can delete the original disk.

Before you begin

Required roles and permissions

To get the permissions that you need to change the disk type, ask your administrator to grant you the following IAM roles on the project:

For more information about granting roles, seeManage access to projects, folders, and organizations.

These predefined roles contain the permissions required to change the disk type. To see the exact permissions that are required, expand theRequired permissions section:

Required permissions

The following permissions are required to change the disk type:

  • To create a snapshot of the disk:
    • compute.snapshots.create on the project
    • compute.disks.createSnapshot on the disk
  • To create a new disk: compute.disks.create on the project
  • To create a disk in a storage pool:
    • compute.storagePools.use on the project
    • compute.disks.create on the project
  • To attach a disk to a VM:
    • compute.instances.attachDisk on the VM
    • compute.disks.use on the volume that you want to attach to the VM
  • To delete a disk: compute.disks.delete on the project

You might also be able to get these permissions withcustom roles or otherpredefined roles.

Change the type, placement, or location of a disk

To migrate a Persistent Disk volume to Hyperdisk, recreate adisk in or out of a storage pool, or move a disk to a different region orzone, you create a snapshot of the disk, and then use the snapshot when creatinga new disk.

When creating a new Hyperdisk volume, you can create it asa standalone disk, or you can create the disk in a storage pool, if oneexists.

Console

  1. Prepare for creating a disk snapshot:

    Important: If you pause your applications before creating a snapshot, resume your workloads only after the snapshot resource reaches theUPLOADING status.

    For more information, see the table inManually creating application consistent snapshots.

  2. Create a snapshot of your existing disk.

    Note: When creating a snapshot, Google recommends using thesnapshots.insert method instead of thedisks.createSnapshot method because it supports more features, such as creating snapshots in a project different from the source disk project.
  3. Optional: To create a new Hyperdisks in a storage pool, you mustcreate a storage pool, if one doesn't exist.
  4. Go to theDisks page.

    Go to Disks
  5. Click+ Create Disk.
  6. UnderDisk Type, selectHyperdisk Extreme,Hyperdisk Throughput, orHyperdisk Balanced.

    Optional: To use storage pools, select either Hyperdisk Balanced or Hyperdisk Throughput.

  7. ForDisk source type, selectSnapshot, then select the name of the snapshot to restore.
  8. Specify theSize of the new disk, in GiB. This number must be equal to or larger than the original source disk for the snapshot.
  9. Optional: Change the defaults, if you are changing the disk type:

    • Hyperdisk Balanced: Change theProvisioned IOPS value andProvisioned throughput value.
    • Hyperdisk Extreme: Change theProvisioned IOPS value.
    • Hyperdisk Throughput: Change theProvisioned throughput value.
  10. Optional: To create the new disk in a storage pool:

    1. In theStorage pool section, selectEnable storage pool.
    2. Choose the name of the storage pool to create the disk in.

      Only storage pools that exist in the selected zone appear in the list.

  11. ClickCreate to create the new disk.
  12. After you create the disk, you canattach the disk to any running or stopped compute instance.

gcloud

  1. Prepare for creating a disk snapshot:

    Important: If you pause your applications before creating a snapshot, resume your workloads only after the snapshot resource reaches theUPLOADING status.

    For more information, see the table inManually creating application consistent snapshots.

  2. Create a snapshot of your existing disk.

    Note: When creating a snapshot, Google recommends using thesnapshots.insert method instead of thedisks.createSnapshot method because it supports more features, such as creating snapshots in a project different from the source disk project.
  3. Use thedisks create commandto create a Hyperdisk volume from your snapshot.

    gcloud compute disks createDISK_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

    Replace the following:

    • DISK_NAME: a unique name for the disk. You can provide alist of disk names specified by spaces to create multiple disks withthe same attributes.
    • ZONE: the zone where you want to create the disk. If you wantto create the disk in a storage pool, you must specify the zonewhere the storage pool is located. Specify this value inregion-zone format, for exampleus-central1-a.
    • STORAGE_POOL_NAME: Optional: the name of thestorage pool to create the disk in. If you don't include thisparameter, then a standalone Hyperdisk is created.
    • SIZE: Optional: the provisioned capacity of the new disk. Thesize must be greater or equal to the size of the source Persistent Disk. Thevalue must be a whole number followed by a size unit of GB forgibibyte,or TB for tebibyte. If no size is specified, 100 GB is used as thedefault value.
    • SNAPSHOT_NAME: The name of the snapshot that you created fromthe original disk.
    • DISK_TYPE: the type of disk to create. If creating a disk ina storage pool, then this value must match the type of theHyperdisk Storage Pool, eitherhyperdisk-balanced orhyperdisk-throughput.
    • PROVISIONED_IOPS: Optional: the IOPS to provision for thedisk. You can use this parameter only when you create a Hyperdisk Balanced orHyperdisk Extreme disk.
    • PROVISIONED_THROUGHPUT: Optional: for Hyperdisk Balancedand Hyperdisk Throughput disks, the throughput in megabyte (MB) per second toprovision for the disk. The value must be a positive integer.
  4. After you create the disk, you canattach the diskto any running or stopped compute instance.

REST

  1. Construct aPOST request to create a zonal Hyperdiskby using thedisks.insert method.Include thename,sizeGb,type, andsourceSnapshot properties.

    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"}

    Replace the following:

    • PROJECT_ID: your project ID
    • ZONE: the zone where your compute instanceand new disk are located
    • DISK_NAME: the name of the new disk
    • DISK_SIZE: Optional: The size of the newdisk. The value must be a whole number followed by a size unit of GBfor gibibytes or TB for tebibytes.
    • DISK_TYPE: the type of disk. To create aHyperdisk volume, use one of the following values:hyperdisk-balanced,hyperdisk-extreme,hyperdisk-ml, orhyperdisk-throughput.
    • IOPS_LIMIT: Optional: ForHyperdisk Balanced and Hyperdisk Extreme, this is the number of I/Ooperations per second that the disk can handle.
    • THROUGHPUT_LIMIT: Optional: For Hyperdisk Balanced,Hyperdisk ML, or Hyperdisk Throughput volumes, this is an integer that represents thethroughput, measured in MiB per second, that the disk can handle.
    • DISK_ACCESS_MODE: how compute instances canaccess the data on the disk. Supported values are:

      • READ_WRITE_SINGLE, for read-write access from one instance.This is the default value.
      • READ_WRITE_MANY, for read-write access from multiple instances.
      • READ_ONLY_MANY, for read-only access from multiple instances.

      You can set the access mode for the following disk types:

      • Hyperdisk Balanced
      • Hyperdisk ML
      • Hyperdisk Balanced High Availability (Preview)
  2. Optional: Use thecompute.disks.get method to see a description of yourdisk.

  3. After you create the disk, you canattach the diskto any running or stopped compute instance.

Change a zonal disk to a regional Hyperdisk Balanced High Availability disk

To change a zonal disk to a Hyperdisk Balanced High Availability disk, create a snapshot of the zonal diskand use the snapshot as the source when creating the regional disk.

Console

  1. Prepare for creating a disk snapshot:

    Important: If you pause your applications before creating a snapshot, resume your workloads only after the snapshot resource reaches theUPLOADING status.

    For more information, see the table inManually creating application consistent snapshots.

  2. Create a snapshot of your existing disk.

    Note: When creating a snapshot, Google recommends using thesnapshots.insert method instead of thedisks.createSnapshot method because it supports more features, such as creating snapshots in a project different from the source disk project.
  3. Go to theDisks page.

    Go to Disks
  4. Click+ Create Disk.
  5. Specify a name for the disk.
  6. In theLocation field, chooseRegional.
  7. Specify the primary zone for the disk in theRegion andZone fields.

    The disk must be in the same region as the compute instance that you plan to attach it to.

  8. Specify the secondary zone in theReplica zone field.
  9. ForDisk source type, selectSnapshot, then select the name of the snapshot to restore.
  10. UnderDisk Type, selectHyperdisk Balanced High Availability.

    If you don't see the Hyperdisk Balanced High Availability disk type in the list, you might have to choose aregion that offers Hyperdisk Balanced High Availability disks.

  11. Specify theSize of the new disk, in GiB. This number must be equal to or larger than the original source disk for the snapshot.
  12. Optional: Change the defaultProvisioned IOPS andProvisioned throughput values for the new disk:

  13. ClickCreate to create the new disk.
  14. After you create the disk, you canattach the disk to any running or stopped compute instance.

gcloud

  1. Prepare for creating a disk snapshot:

    Important: If you pause your applications before creating a snapshot, resume your workloads only after the snapshot resource reaches theUPLOADING status.

    For more information, see the table inManually creating application consistent snapshots.

  2. Create a snapshot of your existing disk.

    Note: When creating a snapshot, Google recommends using thesnapshots.insert method instead of thedisks.createSnapshot method because it supports more features, such as creating snapshots in a project different from the source disk project.
  3. Use thedisks create commandto create a Hyperdisk Balanced High Availability disk from your snapshot.

    gcloud compute disks createDISK_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

    Replace the following:

    • DISK_NAME: a unique name for the disk.
    • SIZE: Optional: the provisioned capacity of thenew disk. The size must be greater or equal to the size of the sourcedisk. The value must be a whole number followed by a size unit of GB forgibibyte,or TB for tebibyte.
    • SNAPSHOT_NAME: The name of the snapshot thatyou created from the original disk.
    • PROVISIONED_IOPS: Optional: the IOPS toprovision for the disk.
    • PROVISIONED_THROUGHPUT: Optional: thethroughput in megabyte (MB) per second to provision for the disk.
    • REGION: the region for the regional diskto reside in, for example:europe-west1
    • ZONE1,ZONE2: thezones within the region where the two disk replicas are located,for example:europe-west1-b,europe-west1-c

Terraform

To create a Hyperdisk Balanced High Availability volume, you can use thegoogle_compute_region_disk resource, as shown in the following example, but change the disktype frompd-ssd tohyperdisk-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

To create a Hyperdisk Balanced High Availability volume, construct aPOST request to thecompute.regionDisks.insert method.

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"}

Replace the following:

  • PROJECT_ID: your project ID
  • REGION: the region for the regional diskto reside in, for example:europe-west1
  • DISK_NAME: the name of the new disk
  • SNAPSHOT_NAME: The name of the snapshot thatyou created from the original disk.
  • ZONE1,ZONE2: thezones where replicas of the new disk should be located,for example:europe-west1-b,europe-west1-c
  • DISK_SIZE: the size, in GiB, of the new disk

Make the new disk accessible to your VM instance

After you create the disk, you mustattach the disk orattach the regional diskto your compute instance before you can use it.

Because the new disk you created isn't a blank disk, after attaching thedisk to an instance, you only need to mount the disk to make it available theoperating system.

Caution: Don't format the disk before mounting it, because this will remove allthe copied data from the disk.

For information on how to mount the disk, refer to the following:

Remove the original disk

After verifying the new disk, you can:

What's next

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

Last updated 2025-12-15 UTC.