Storage parity — Cloud Storage, Persistent Disk and Filestore against S3/EBS/EFS and Blob/Disk/Files

Counterpart names for the storage family, then the four differences that change an estimate: Archive's 365-day minimum against 180 elsewhere, the rehydration step Google Cloud's archive class does not have, the block-storage performance model, and the shared-filesystem capacity floors.

markdownguidev14C9T-NWC4stage: designtrust: officialfamily: storageservice: cloud-storageinterface: anystorage paritycloud storageS3azure blob storagepersistent diskEBSazure managed disksfilestoreEFSazure filesminimum storage durationarchive tierrehydrationearly deletion

Created 21 Oct 2026 · Modified 23 Oct 2026 · 1 version

Storage parity

1. The names

Google CloudAWSAzure
Cloud StorageAmazon S3Azure Blob Storage
Hyperdisk / Persistent Disk / Local SSDAmazon EBS / instance storeAzure Managed Disks / temporary disk
FilestoreAmazon EFSAzure Files, Azure NetApp Files
Transfer ApplianceAWS Snow familyAzure Data Box, Azure Import/Export
Storage Transfer ServiceAWS DataSyncAzure Storage Mover / AzCopy

Both published tables agree. Microsoft maps Filestore to two Azure services, which is the honest answer: Azure Files and Azure NetApp Files are different products at different capability levels, and which one a Filestore tier corresponds to depends on the tier (§4).

2. Cold storage — the row most likely to change an archive design

Google CloudAWSAzure
hot, no minimumSTANDARD, RAPIDS3 Standard, Express One Zonehot
~30-day commitmentNEARLINE 30 daysStandard-IA, One Zone-IA 30 dayscool 30 days
~90-day commitmentCOLDLINE 90 daysGlacier Instant Retrieval 90 dayscold 90 days
deep archiveARCHIVE 365 daysGlacier Flexible 90 days, Deep Archive 180 daysarchive 180 days
retrieval needs a restore/rehydrate step?not described on the classes pageyes for Glacier Flexible and Deep Archive — "not available for real-time access"yes — archive is offline, rehydration takes "up to 15 hours"
minimum billable object sizenot stated on this page128 KB for IA and Glacier IRnot stated as a size

Three estimate-bearing facts, in order of how much money they move.

  1. Google Cloud's deepest class commits 365 days; AWS's and Azure's commit 180. An archive estate moved

to Google Cloud doubles its minimum commitment, and lifecycle rules tuned to a 180-day floor will incur early-deletion charges on Google Cloud. Re-tune every lifecycle rule on the way in. This is the single most reliable way to be wrong about the cost of a Google Cloud archive.

  1. Google Cloud's archive has no documented rehydration step; the other two do. AWS Glacier Flexible and

Deep Archive are "not available for real-time access" and must be restored; Azure archive is offline and takes up to 15 hours to rehydrate. So an application that reads archived data directly works on Google Cloud and breaks on the other two without a restore workflow — which is code, not configuration. Moving off Google Cloud archive, budget that workflow.

  1. AWS charges a 128 KB minimum billable object size on IA and Glacier IR classes, and does not monitor

Intelligent-Tiering objects below 128 KB at all. An estate of many small objects costs materially more on AWS cold classes than the raw byte count suggests. No equivalent floor appears on the Google Cloud classes page read here.

Where the tier lives also differs. Azure's tier is per block blob with an account-level default, and append and page blobs cannot be tiered at all. Google Cloud's class is per object with a bucket default that does not affect existing objects. AWS's class is per object. The practical consequence: on Azure, "move the account to cool" is a real operation with per-blob write charges; on Google Cloud the equivalent sentence does nothing to data already there.

3. Block storage — a different performance model, not a different price list

Google CloudAWSAzure
performance independent of capacityHyperdisk — yesgp3 / io2 — yesPremium SSD v2 / Ultra — yes
performance tied to capacityPersistent Disk — yesgp2 — yesPremium SSD (P-tiers) — tiered by size
ephemeral local mediaLocal SSD — lost if the VM stops, crashes or failsinstance storetemporary disk
cross-zone synchronous replicationRegional Persistent Disk; Hyperdisk Balanced High Availability— (EBS is zonal; io2 Block Express multi-attach is not cross-AZ)ZRS managed disks

Estimate consequence. Google Cloud offers cross-zone synchronous block replication as a disk property, in two different families. That removes an application-level replication requirement from some designs moving in — and adds one back for designs moving out to AWS, where EBS has no cross-AZ synchronous equivalent in the pages read here. Check this before promising a like-for-like RPO.

And the Hyperdisk/Persistent Disk split means a capacity figure carried over from a gp2-style estate is probably too large: it was sized for IOPS, not for bytes (reference/storage/persistent-disk-and-hyperdisk.md §1).

4. Shared filesystems — the capacity floor is the constraint

Filestore's smallest current instances start at 1 TiB (Zonal) and 100 GiB (Regional). Amazon EFS and Azure Files both scale from effectively nothing. So an estate of many small NFS exports maps badly onto Filestore and well onto EFS or Azure Files, and that is a re-modelling decision — consolidate the exports, or move the data to object storage — rather than a line item.

The protocol column matters too: Filestore's legacy tiers are NFSv3 only, so a workload needing NFSv4.1 locking semantics is restricted to the current tiers (reference/storage/filestore.md §2).

5. Pricing dimension (never a price)

DimensionGoogle CloudAWSAzure
object storageper GB-month by class, operations, retrieval fees on the cold classes, network egresssame shape, plus a 128 KB minimum billable object size on IA/Glacier IR, plus Intelligent-Tiering monitoring feessame shape, plus prorated early-deletion charges, plus per-10,000-operation tier-change charges
block storageprovisioned capacity; provisioned IOPS and throughput separately on Hyperdiskprovisioned capacity plus provisioned IOPS/throughput on gp3/io2provisioned capacity by tier; separate IOPS on v2/Ultra
shared filesystemprovisioned capacity per tier (with a floor)provisioned or elastic capacityprovisioned capacity per tier

6. What this guide cannot tell you

Whether a given object's access pattern justifies a cold class on any of the three. That needs the access log, not a table. And it cannot tell you the egress cost of the migration itself, which on a large estate is frequently larger than a year of the storage — see guides/parity-and-migration-method.md, which treats egress as a first-class line.

Read this document as markdown — the same bytes an agent receives.