google_compute_disk cost estimation
A block storage disk for Compute Engine VMs. Priced per GB-month by disk type. Hyperdisk adds per-IOPS and per-throughput billing.
A google_compute_disk is block storage for Compute Engine instances. GCP has several disk types with different cost and performance profiles.
Standard disks:
pd-standard (HDD): $0.04/GB-month. Magnetic disks, lowest performance. Right for archive or sequential workloads.
pd-balanced: $0.10/GB-month. SSD performance at lower cost than pd-ssd. Default for boot disks. Right for general-purpose workloads.
pd-ssd: $0.17/GB-month. Higher IOPS and throughput than pd-balanced. Right for databases and other IOPS-sensitive workloads.
pd-extreme: $0.125/GB-month + $0.045/provisioned IOPS-month. Highest performance for SAP HANA and similar. Provisioned IOPS scale independently of size.
Hyperdisks (newer generation):
hyperdisk-balanced: $0.06/GB-month + per-IOPS and per-throughput billing. More flexible than pd-balanced.
hyperdisk-extreme: $0.085/GB-month + per-IOPS billing. Replacement for pd-extreme.
hyperdisk-throughput: optimized for high MB/s rather than IOPS. Right for analytics workloads.
Regional disks (regional = true) replicate synchronously across two zones for HA. Roughly double the per-GB cost. Right for stateful workloads needing zone failover.
Snapshots are billed separately at $0.026/GB-month for standard storage, $0.05/GB-month for multi-regional. Snapshots are incremental, so the second snapshot of a disk is much cheaper than the first.
c3x reads type, size, and provisioned IOPS attributes from the resource.
Terraform example
A minimal but realistic configuration that C3X can estimate.
resource "google_compute_disk" "data" {
name = "data-disk"
type = "pd-balanced"
zone = "us-central1-a"
size = 500
labels = {
environment = "production"
}
}
resource "google_compute_attached_disk" "data" {
disk = google_compute_disk.data.id
instance = google_compute_instance.api.id
}Pricing dimensions
What you actually pay for when you provision google_compute_disk.
| Dimension | Unit | What's being charged |
|---|---|---|
| pd-standard (HDD) | per GB-month | Magnetic storage. Cheapest. Right for cold or sequential data. $0.04/GB-month in us-central1 |
| pd-balanced | per GB-month | SSD performance, balanced cost. Default for boot disks. $0.10/GB-month |
| pd-ssd | per GB-month | Higher IOPS SSD. Right for databases. $0.17/GB-month |
| pd-extreme | per GB-month + per provisioned IOPS | Highest performance traditional PD. Provisioned IOPS scale independently of size. |
| hyperdisk-balanced | per GB + per IOPS + per MB/s | Newer generation. Independent IOPS/throughput provisioning. Right for modern workloads. |
| Regional disks (multiplier) | 2x base cost | Synchronous replication across two zones. Right for stateful workloads needing zone failover. |
Optimization tips
Common ways to reduce google_compute_disk cost without changing the workload.
Use pd-balanced for boot disks
About 41% vs pd-ssdpd-balanced is the right default for boot disks: SSD performance at 41% lower cost than pd-ssd. Most workloads don't need pd-ssd IOPS for the boot disk.
Right-size disk capacity
Workload-dependentGCP charges by provisioned size, not used size. Many VMs provision 500 GB and use 50 GB. Audit actual usage and resize down (only growing is supported, so plan for some headroom).
Use Hyperdisks for workloads that need specific IOPS
Workload-dependentHyperdisks bill IOPS and throughput separately from capacity. For a 200 GB disk needing 15,000 IOPS, hyperdisk-balanced is cheaper than pd-ssd at the size that would be needed for those IOPS.
Delete unused snapshots
Snapshot costSnapshots accumulate. Use lifecycle policies (snapshot_schedule_policy) to expire old snapshots. Each snapshot costs $0.026/GB-month of unique data.
Use zonal disks unless you need regional HA
About 50%Regional disks double the cost for cross-zone replication. For application-replicated workloads (Cassandra, replicated databases), zonal is sufficient.
FAQ
When should I use Hyperdisk vs Persistent Disk?
Hyperdisk is the newer generation with independent IOPS and throughput billing. Use it when you need specific IOPS or throughput that doesn't naturally fit a PD type. For simple boot disks or small workloads, pd-balanced is still fine.
Does c3x include CUDs for disks?
GCP Committed Use Discounts apply to persistent disks. c3x applies them when purchaseOption: 'cud_1yr' or 'cud_3yr' is set in c3x-usage.yml on the disk.
What about Local SSDs?
Local SSDs (google_compute_resource_policy with the SSD type, or attached to instance via scratch_disk) have separate pricing and don't persist across instance restart. They're billed per 375 GB partition per hour. c3x estimates them when declared on instances.
Do snapshots count as separate cost?
Yes. Snapshots are billed at $0.026/GB-month for standard storage. They're incremental so the first snapshot is full-disk-size; subsequent snapshots are just the changed blocks. c3x estimates declared snapshots.
Related resources
Estimate this resource in your own Terraform
Free, open source, no API key. C3X parses your Terraform and shows line-item cost for every resource, including google_compute_disk.