CAMPUX Cloud Bootcamp
Field notes · Storage
LRS vs ZRS vs GRS vs GZRS

LRS, ZRS, GRS, GZRS: which copy of your data survives what

By Victor Thomson16 July 20266 min read

Azure keeps multiple copies of everything in a storage account — the only question is where. One letter of the redundancy setting is the difference between surviving a dead drive and surviving a dead region. Here is how to choose without overpaying for a disaster you will never have.

Every Azure storage account replicates your data automatically; you never store a single unguarded copy. What you actually choose when you pick a redundancy option is the blast radius you want to survive — a failed disk, a flooded datacenter, or an entire region falling off the map. The four options read like alphabet soup, but they are just two questions stacked on top of each other: how far apart are the copies in my primary region, and do I also keep copies in a second region hundreds of miles away?

The two questions, answered

Question one — spread within the primary region:

Question two — do you also copy to a second region? Both of the above have a geo- sibling:

OptionSurvives a dead drive/rackSurvives a lost datacenterSurvives a lost regionDurability (per year)
LRSYesNoNo11 nines
ZRSYesYesNo12 nines
GRSYesNo*Yes (after failover)16 nines
GZRSYesYesYes (after failover)16 nines

* GRS uses LRS in the primary region, so a full primary-datacenter loss still needs the secondary region to take over.

The catch nobody mentions until it bites: the secondary is not readable

This is the single most misunderstood point, and a favourite interview trap. With plain GRS or GZRS, that second-region copy is a disaster-recovery copy, not a live read replica. You cannot read from it while the primary is healthy — and even during a primary outage you cannot read from it until a failover promotes the secondary to primary.

If you want to actually read from the secondary region — say, to serve traffic from the closest copy or to keep reading through an outage — you must enable the read-access variants: RA-GRS or RA-GZRS. They expose a second read-only endpoint with a -secondary suffix on the account name. Without the RA-, that copy is a fire extinguisher behind glass: there for the disaster, not for daily use.

Async means a small window of possible loss

The copy to the secondary region is asynchronous, so the secondary trails the primary by a little. If the primary is destroyed before the last writes replicate, those writes can be lost. That gap is your recovery point objective (RPO) — worth naming out loud, because "geo-redundant" can otherwise sound like "zero data loss," which it is not.

Durability protects you from Azure losing your data. It does nothing to protect you from you deleting it.

Redundancy is not backup

Sixteen nines sounds like it should let you sleep through anything, so say the quiet part clearly: all replicas reflect the same current state. Delete a blob, or overwrite it with garbage, and every copy — local, zonal, and geo — faithfully deletes or corrupts in lockstep. Redundancy defends against hardware and infrastructure failure. It is not a defence against a fat-fingered delete, a buggy job, or ransomware. For those you need actual data-protection features: soft delete, blob versioning, and point-in-time restore. Redundancy and backup answer different questions; a good engineer never confuses them.

So which do you pick?

Match the option to the blast radius the data actually warrants, remember that geo-copies are for disasters rather than daily reads, and keep backup as a separate line of defence. Do that and you will never again pay region-scale prices for a spreadsheet you could rebuild in an afternoon.

Further reading — the Microsoft docs
Drilled in Class 12 — Storage Accounts. Next note: What is a resource group, really? →