Skip to content
Cloud Efficiency Hub

Overprovisioned Filestore Instance Capacity

The short version

Filestore bills for provisioned capacity, not for the data stored.

PointFive Research

Cloud cost research at PointFive

GCP service
GCP Filestore
Category
Storage
Reference
CER-0474
Type
Overprovisioned Resource

Explanation

Why the waste happens and who it affects.

Google's pricing page puts it plainly: a 1 TiB instance holding 100 GiB of data is charged for the full 1 TiB. Instances are often sized for projected growth, for peak throughput on tiers where performance scales with capacity, or at a tier minimum (1 TiB for Basic HDD and Zonal, 2.5 TiB for Basic SSD), and are often not reduced once the data settles at a much smaller footprint.

The waste persists because scaling down is not possible on every tier and is easy to forget on the tiers where it is. Zonal, Regional and Enterprise instances can be scaled up or down while in use, but Basic HDD and Basic SSD can only grow. Instances with custom performance also bill provisioned IOPS separately, which can be set higher than the workload needs. Typical cases are shared home directories, CI caches, GKE ReadWriteMany volumes and lift-and-shift NFS workloads.

Billing model

The pricing dimensions that drive this cost.

Filestore is charged per second from instance creation; rates vary by tier and region.

Provisioned capacity
Billed per GiB of provisioned capacity whether or not it holds data
Custom performance
When enabled, billed as a per-instance charge plus per-GiB capacity plus provisioned IOPS; it cannot be turned off once enabled
Tier minimums
Each tier has a minimum instance size, so small data sets on high-minimum tiers pay for unused capacity
Backups
Billed separately per GiB of stored, compressed and incremental backup data

How to detect

4 checks to find it in your estate.

  • Compare file.googleapis.com/nfs/server/used_bytes with provisioned capacity, or chart nfs/server/used_bytes_percent, per instance and file share over at least 30 days
  • Flag instances whose used space stays well below provisioned capacity, and note the tier, since Basic HDD and Basic SSD cannot be scaled down in place
  • Check nfs/server/read_ops_count, write_ops_count and procedure_call_count for instances with little or no client activity, which may be idle rather than just oversized
  • For custom performance instances, compare provisioned IOPS with observed operations; include snapshots_used_bytes, since snapshots consume instance capacity

How to fix

4 ways to remove the waste.

  • Scale down Zonal, Regional and Enterprise instances with gcloud filestore instances update INSTANCE --file-share=name=SHARE,capacity=SIZE; scaling does not affect availability, but capacity cannot go below what existing data and metadata require
  • For Basic tiers, which scale up only, create a smaller instance or a tier with a lower minimum and copy the data, then delete the old instance
  • Lower provisioned IOPS on custom performance instances to observed needs plus headroom; capacity and IOPS can be changed at any time
  • Delete idle instances after taking a backup, and consolidate many small GKE volumes onto Filestore multishares where supported

Documentation

Vendor references for pricing and configuration.