Zone-redundant storage: the basics
What actually happens to a locally redundant account when a zone goes down?
A storage account's redundancy setting decides how many copies of your data exist and where they sit. Locally redundant storage (LRS) keeps three copies, but all three live in a single physical datacentre in the primary region. That protects you against a failed drive, server or rack, and Microsoft documents it at at least eleven nines of annual durability, but every copy shares one building. If that one datacentre has a power, cooling or networking event, every replica of the account can become unavailable at once, and the account stops answering reads and writes until the event clears.
Zone-redundant storage (ZRS) keeps the same three copies but spreads them across three or more Azure availability zones in the region, each a separate physical location with independent power, cooling and networking. A write returns successfully only after the data is committed across the zones, so the copies are always consistent, and if one zone becomes unavailable the account stays readable and writable from the others. Microsoft documents ZRS at at least twelve nines of annual durability. Geo-zone-redundant storage (GZRS) adds an asynchronous copy in a second region hundreds of miles away on top of the zone spread, taking documented durability to at least sixteen nines and protecting against a whole-region outage.
Most accounts that are still LRS are LRS by default, not by decision. LRS is the cheapest option and the one a bare ARM template or a quick portal click lands on, so an account created years ago for a workload that has since become business-critical can still be single-zone without anyone choosing that. The work in this lesson is to find every account whose data would be unavailable if a single zone failed, decide which ones genuinely need to survive a zone outage, and convert them to ZRS or GZRS with no downtime.
In this lesson you will learn how Azure Storage expresses zone redundancy, how to find every account whose data sits in a single zone, and how to convert the ones that matter to ZRS or GZRS with no application downtime. You will see how an LRS to ZRS conversion runs as a background operation, how long it takes and what the 72-hour rule means, and how to bake the right redundancy into new accounts so they are never single-zone by accident.
Durable is not the same as available
Locally redundant storage is advertised at eleven nines of annual durability, a number so large it reads as bulletproof. It is easy to assume that means the account will always be there. It does not. Durability measures the chance of permanently losing an object; availability measures whether you can reach it right now. An LRS account can hit its full durability target and still be completely unreachable for hours, because all three of its copies live in one datacentre and that datacentre is having a bad day. Zone-redundant storage is what turns near-perfect durability into near-perfect availability, by making sure the three copies are never in the same building.
Finding single-zone storage across a subscription
Priya is the reliability lead at a payments company running a post-incident review. A short availability-zone event in their primary region briefly knocked over a workload, and the question on the table is which other accounts would have gone down too.
Rather than guess, Priya starts by listing every storage account and its redundancy SKU, so the single-zone LRS accounts stand out from the ones already spread across zones.
List every storage account with its redundancy SKU. Anything reading Standard_LRS is single-zone: all its data sits in one datacentre.
A business-critical account on Standard_LRS is the highest-value target: one datacentre event takes it offline. Convert the revenue-path accounts before the regenerable staging ones.
How a zone-redundancy conversion actually worksdeep dive
Zone redundancy is a property of the account's SKU, not a per-container toggle. Standard_LRS means one datacentre; Standard_ZRS means three zones; Standard_GZRS adds the geo copy, and the read-access variants Standard_RAGRS and Standard_RAGZRS make the secondary region readable. Because the setting is on the account, every blob container, file share, table and queue in that account inherits the same redundancy. You cannot make one container zone-redundant and leave another single-zone.
Changing the zone-redundancy aspect is a conversion, which Azure runs as a background operation with no data loss and, for standard accounts, no interruption to availability. Microsoft documents that hierarchical-namespace accounts may see a pause of under thirty seconds while the account switches resiliency level, and that requests complete automatically after it. Service endpoints, access keys and shared access signatures are unchanged by the conversion, so applications keep working throughout. A customer-initiated conversion typically begins within 72 hours of you starting it, and there is no SLA on how long it then takes, which is why a date-driven move sometimes uses a manual migration instead.
Two rules catch people out. Adding geo-redundancy and adding zone-redundancy cannot be done in one step: going from LRS straight to GZRS is a two-step process, switch to GRS first, then convert to GZRS, in either order. And after any zone-redundancy conversion you must wait at least 72 hours before changing the account's redundancy again, while background processes settle. Knowing both up front stops a multi-account programme from stalling halfway.
What is the impact of leaving a critical account single-zone?
The direct impact is availability. A locally redundant account keeps all three copies in one datacentre, so when that datacentre has a power, cooling or networking event, the account stops answering reads and writes until the event resolves. Microsoft's own outage-scenario table is explicit: when an entire datacentre becomes unavailable, an LRS account is neither durable nor available, while a ZRS account stays both. If that account is the data store behind a live workload, the workload goes down with it.
The second-order impact is blast radius and recovery. A zone event is not something you can fix from inside the account; with LRS you wait for Azure to restore the datacentre, and your recovery time is whatever theirs turns out to be. With ZRS the account simply keeps serving from the surviving zones, and the only application-side concern is handling the brief networking repoint with normal retry logic. You convert an unbounded, out-of-your-hands outage into a non-event.
On the reliability side, this is the difference between a workload that meets its availability target on paper and one that meets it when a zone actually fails. Surviving a single-zone outage is the baseline expectation for anything the business calls critical, and a storage account quietly left on LRS is the weak link that turns a contained zone event into a workload-level outage.
How do you make critical storage zone-redundant safely?
Work this as one programme, not account by account in a panic. The order matters: decide which accounts genuinely need to survive a zone outage before you start converting, so the recurring uplift lands only where downtime would actually cost you.
1. Inventory every account by redundancy SKU
List every storage account with its SKU and region. Anything on Standard_LRS is single-zone. Treat this list as the source of truth: redundancy is an account-level property, so one account is one decision regardless of how many containers, shares, tables or queues it holds.
2. Rank accounts by the cost of their downtime
For each LRS account, ask what stops if a single zone takes it offline. Revenue-path and operations-critical stores go to the top; data that can simply be regenerated goes to the bottom and can stay LRS. The output is a ranked list where the redundancy uplift is justified by an outage cost, not applied uniformly.
3. Convert the critical accounts with no downtime
Run a customer-initiated conversion to ZRS, or to GZRS where the workload also needs to survive a whole-region outage. The conversion runs in the background with no data loss and, for standard accounts, no availability interruption. Remember that LRS to GZRS is two steps, and that you must wait at least 72 hours after a zone-redundancy conversion before changing the same account's redundancy again.
4. Make new accounts zone-redundant by default
Stop the problem recurring by setting the SKU explicitly in your infrastructure-as-code templates and modules so new critical accounts are born ZRS or GZRS rather than defaulting to LRS. Back this with an Azure Policy audit so any new Standard_LRS account in a scope that should be zone-redundant is flagged for a deliberate decision rather than slipping through.
# Start a no-downtime, customer-initiated conversion of a critical account to ZRS.
# The conversion runs in the background; endpoints, keys and SAS tokens are unchanged.
az storage account migration start \
--account-name paymentsledgerprod \
--resource-group payments-rg \
--sku Standard_ZRS \
--no-wait
# Track the conversion status (the migration resource is always named "default").
az storage account migration show \
--account-name paymentsledgerprod \
--resource-group payments-rg \
--name default \
-o table
# Bake the right redundancy into new accounts so they are never single-zone by accident.
# Bicep: pin the SKU to Standard_ZRS (use Standard_GZRS to also survive a region outage).
cat > storage.bicep <<'EOF'
param location string = resourceGroup().location
resource criticalStore 'Microsoft.Storage/storageAccounts@2023-05-01' = {
name: 'paymentsledgerprod'
location: location
sku: {
name: 'Standard_ZRS'
}
kind: 'StorageV2'
properties: {
minimumTlsVersion: 'TLS1_2'
supportsHttpsTrafficOnly: true
}
}
EOF Quick quiz
Question 1 of 5A storage account is on Standard_LRS. What is the key reliability limitation that converting it to Standard_ZRS removes?
You scored
0 / 5
Keep learning
Go deeper on how Azure Storage expresses redundancy across zones and regions, and how to change it without downtime.
- Azure Storage redundancy The full set of redundancy options, with the documented durability and outage-scenario tables for LRS, ZRS, GRS and GZRS.
- Change how a storage account is replicated How conversions and manual migrations work, the no-downtime guarantee, and the 72-hour rule between redundancy changes.
- Reliability in Azure Blob Storage How Blob Storage uses availability zones and how to design for zone resilience.
You can now treat storage redundancy as one reliability capability rather than a per-account afterthought: inventory every account by SKU, rank them by the cost of their downtime, convert the critical ones to ZRS or GZRS with no application downtime, and pin the right SKU in your templates so new accounts are never single-zone by accident. The deliberately single-zone accounts become a recorded choice rather than a hidden risk.
Back to the library