Skip to content
Cloud Efficiency Hub

Unattached Persistent Disk or Hyperdisk Volume

The short version

Persistent Disk and Hyperdisk volumes are billed for their full provisioned size until they are deleted, whether or not any VM is using them.

PointFive Research

Cloud cost research at PointFive

Category
Storage
Reference
CER-0461
Type
Idle or Unused Resource

Explanation

Why the waste happens and who it affects.

Disks become detached and forgotten in predictable ways: a VM is deleted with auto-delete turned off for its data disks, a disk is detached during troubleshooting or a migration, a disk is restored from a snapshot to inspect data, or a blank disk is created for a test and never attached. Detached disks raise no errors and keep billing silently, so they persist for months.

The waste is the entire cost of the disk, including provisioned IOPS and throughput on Hyperdisk, for data that nobody reads. Large SSD, Extreme and regional disks are the most expensive to leave behind.

Billing model

The pricing dimensions that drive this cost.

Provisioned disk space
Billed per GiB of provisioned capacity, including all used and unused space, prorated per second until the disk is deleted
Hyperdisk performance
Hyperdisk volumes also bill provisioned IOPS and throughput (for Hyperdisk Balanced, above a baseline of 3,000 IOPS and 140 MBps)
Regional disks
Regional Persistent Disk and Hyperdisk Balanced High Availability are billed at about double the zonal rate
Standard snapshots
Billed on compressed, incremental stored data rather than provisioned size, which is why snapshot then delete usually saves money

How to detect

4 checks to find it in your estate.

  • Review the Idle persistent disk recommender (google.compute.disk.IdleResourceRecommender, "Backup and remove unused disks"); it flags disks detached for at least 15 days and blank disks created at least 15 days ago that were never attached, excluding disks bound to GKE Pods
  • List disks with no attached instance using gcloud compute disks list --filter="-users:*" and sort by size and type
  • Use the lastDetachTimestamp field and labels to judge how long a disk has been unattached and who owns it
  • Check for disks that belong to GKE PersistentVolumes separately; they are not covered by this recommender and are handled at the cluster level

How to fix

4 ways to remove the waste.

  • Snapshot disks whose data may be needed, then delete them; use archive snapshots for data kept only for compliance, keeping in mind their 90-day minimum storage charge and retrieval fee
  • Delete blank disks that were never attached
  • Enable auto-delete on boot and data disks in instance templates and VM definitions (or gcloud compute instances set-disk-auto-delete) so disks are removed with the VM when that is the intended lifecycle
  • Label disks with owner and purpose at creation so unattached disks can be traced and reviewed

Documentation

Vendor references for pricing and configuration.