Linux Windows
You can increase the size of your persistent disk when your virtual machine (VM)instance requires additional storage space or increased performance limits.You can increase the disk size at any time, whether or not the disk is attachedto a running VM.
You can only increase, and not decrease, the size of a disk. To decrease thedisk size, you must create a new disk with a smaller size. Until you delete theoriginal, larger disk, you are charged for both disks.
When you create a custom Linux image orcustom Windows image,you need to manually increase the size of the boot and non-boot disks. If you'reusing a public image, Compute Engineautomatically resizes the boot disks.
Increasing the size of a disk doesn't delete or modify disk data, but as a bestpractice, before you make any changes to the file system or partitions, alwaysback up your disk by creating a snapshot.
Compute Engine manages the hardware behind persistent disks, so thatyou can add and resize your disks without handling striping or redundancy.
Increase the size of a disk
To increase the size of a boot or non-boot disk, use the following procedure:
Permissions required for this task
To perform this task, you must have the following permissions:
compute.disks.update
on the disk
Console
In the Google Cloud console, go to the Disks page.
Go to Disks
In the list of persistent disks in your project, click the name of thedisk that you want to resize.
On the disk details page, clickeditEdit. You might need toclick the more_vertMore actions menu and theneditEdit.
In the Size field, enter the new size for your disk. Disks with MBRpartition tables can only resize up to 2 TB.
Click Save to apply your changes to the disk.
gcloud
-
In the Google Cloud console, activate Cloud Shell.
Activate Cloud Shell
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
In the gcloud CLI, use the gcloud compute disks resizecommandand specify the
--size
flag with the desired disk size, in gigabytes.gcloud compute disks resize DISK_NAME --size DISK_SIZE
Replace the following:
See AlsoAnnouncement of pricing changes for Cloud Storage | Google Cloud5 tips to help free up storage space on your Google accountHow to Clean Up Your Google Drive and Gmail to Save Space and MoneyDISK_NAME
: the name of the disk that you areresizing.DISK_SIZE
: the new size, in gigabytes, for thedisk. Disks with MBR partition tables can resize only up to 2 TB.
Terraform
To change the size of a persistent disk, you can use thegoogle_compute_disk
resource and use thesize
parameter.
# Using pd-standard because it's the default for Compute Engineresource "google_compute_disk" "default" { name = "disk-data" type = "pd-standard" zone = "us-west1-a" size = "5"}
If you include the size
parameter along with the image
or snapshot
parameter, the size
value must be equal to or greater than the size of theimage or snapshot.
If you omit the image
and snapshot
parameters, you can set the size
parameter to less than the existing disk size. If you do this,Terraform destroys the disk and creates a new empty persistent disk. Duringthe re-creation, Terraform doesn't copy over other data that isn't alsoincluded in the Terraform configuration, such as labels or snapshotschedules. To prevent Terraform from destroying and re-creating a disk, youcan add the lifecycle.prevent_destroy = true
setting to the Terraform configuration.
API
In the API, construct a POST
request to thecompute.disks.resize method.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/disks/DISK_NAME/resize{ "sizeGb": "DISK_SIZE"}
Replace the following:
PROJECT_ID
: your project ID.ZONE
: the zone where your disk is located.DISK_NAME
: the name of the disk to resize.DISK_SIZE
: the new size, in gigabytes, for thedisk. Disks with MBR partition tables can resize only up to 2 TB.
Resize the file system and partitions
After increasing the size of a disk, you might need to resize its file systemand partitions. The following list shows additional information for boot andnon-boot disks:
Boot disk: If you are using a custom Linux imageor a custom Windows image,you must manually resize the root partition and file system. For VMs withpublic images, Compute Engine automaticallyresizes the root partition and file system after you increase the size of theboot disk and restart the VM.
Non-boot disk: After increasing the size of the disk, you must extend thefile system on the disk to use the added space.
The following example shows how to manually resize the root partition and filesystem of a boot disk, and how to manually resize the file system of a non-bootdata disk with no partition table. This example assumes that the attached diskwas previously formatted and mounted.
Linux VMs
In the Google Cloud console, go to the VM instances page.
Go to VM instances
Next to the instance that has the new attached disk, click the SSHbutton. The browser opens a terminal connection to the instance.
Use the
df
and thelsblk
commands to list the size of the file systemand to find the device names for your disks.$ sudo df -ThFilesystem Type Size Used Avail Use% Mounted on/dev/sda1 ext4 9.7G 1.2G 8.5G 12% //dev/sdb ext4 250G 60M 250G 1% /mnt/disks/disk-1
$ sudo lsblkNAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTsda 8:0 0 20G 0 disk└─sda1 8:1 0 10G 0 part /sdb 8:16 0 500G 0 disk /mnt/disks/disk-1
This example includes the following disks:
- Boot disk: The
/dev/sda1
partition is on a boot disk that hasbeen resized to 20 GB. The partition table and the file system provideonly 9.7 GB to the operating system. - Non-boot data disk: The
/dev/sdb
non-boot data disk has nopartition table, but the file system on that disk provides only 250 GBto the operating system. The mount directory for this disk is/mnt/disks/disk-1
.
The
df
command shows that the/dev/sda1
partition is mounted as theroot file system, and the/dev/sdb
disk is mounted as a non-boot datadisk at/mnt/disks/disk-1
. Make note of the Type column, whichindicates if your disk uses anext4
orxfs
file system.- Boot disk: The
Verify the partition type:
sudo parted -l
or to see information only for a specific disk:sudo parted -l /dev/DEVICE_NAME
look for field: Partition Table, if the value ismsdos
then thedisk has an MBR partition type. This means the maximum size of such diskwould be 2 TB.Resize the root partition and file system on the boot disk. This exampleassumes the VM image does not support automatic root partitioning andfile system resizing.
Resize the root partition by using
parted
. For example, thefollowing commands expand partition 1 of/dev/sda
to the maximumpossible size:Open
parted
on the/dev/sda
partition:sudo parted /dev/sda
At the
(parted)
prompt, enter:resizepart
At the
Partition number?
prompt, enter:1
At the
Warning: Partition /dev/sda1 is being used. Are you sureyou want to continue?
prompt, enter:Yes
At the
End?
prompt, enter100%
At the
(parted)
prompt, enter:quit
Read the new partition table using
partprobe
.sudo partprobe /dev/sda
Extend the file system:
If you are using
ext4
, use theresize2fs
command:sudo resize2fs /dev/sda1
If you are using
xfs
, use thexfs_growfs
command:sudo xfs_growfs -d /
If you are using btrfs,use the
btrfs
command:sudo btrfs filesystem resize max /
Resize the file system on the non-boot data disk.
If you are using
ext4
, use theresize2fs
command to extend thefile system:sudo resize2fs /dev/DEVICE_NAME
Replace
DEVICE_NAME
with the device name forthe disk. In this example, the device name is/dev/sdb
.If you are using
xfs
, use thexfs_growfs
command to extend thefile system:sudo xfs_growfs MOUNT_DIR
Replace MOUNT_DIR with the mount point of the device. Youcan find the mount point listed in the
MOUNTPOINT
column in theoutput of thelsblk
command.If you are using btrfs,use the
btrfs
command to extend the file system:sudo btrfs filesystem resize max MOUNT_DIR
Replace MOUNT_DIR with the mount point of the device. Youcan find the mount point listed in the
MOUNTPOINT
column in theoutput of thelsblk
command.
Use the
df
command to verify that the file system is extended. Forexample:df -h /dev/sdbFilesystem Size Used Avail Use% Mounted on/dev/sdb 493G 70M 492G 1% /mnt/disks/disk-1
Windows VMs
Use the Windows Disk Management utility to resize partitions on a Windows instance.
In the Google Cloud console, go to the VM instances page.
Go to VM instances
Next to the instance that has the resized disk, click the RDP button.The browser opens an RDP connection to the instance.
Right-click the Windows Start button and select Disk Management toopen the Disk Management tool.
Show the disks partition type by running in Powershell:
Get-Disk
under Partition Style column, if the value is MBR then thedisk has an MBR partition type. This means themaximum size of such a disk would be 2TB.Refresh the Disk Management tool so that it recognizes the additionalspace on your zonal persistent disk. At the top of the Disk Managementwindow, click Action and select Refresh.
On the disk that you resized, right-click the formatted partition andselect Extend Volume.
Follow the instructions in the Extend Volume Wizard to extend yourexisting partition to include the extra disk space. If the existingpartition is formatted in NTFS, the maximum partition size is limited byits cluster size settings.
After you complete the wizard and the volume finishes formatting, checkthe
Status
column on the list of attached disks to ensure that the newdisk has aHealthy
status.
You do not need to restart your instance after you complete this process. You cannow use the added disk space to store data.
What's next
- Troubleshooting full disks and disk resizing