Cloud & infrastructure

Azure Storage Redundancy: LRS vs ZRS vs GRS vs GZRS Explained

Compare Azure Storage redundancy options by durability, availability, failure scenarios and cost order, and learn how to change a storage account's redundancy safely.

By EpiFive Editorial TeamReviewed/updated 11 min readHow we check articles
On this page

Choose LRS for the cheapest, easily reconstructed data, ZRS when the data must survive the loss of a datacenter or availability zone, and GRS or GZRS when it must survive the loss of the whole region. GRS adds a second region to LRS, GZRS adds a second region to ZRS, and the RA variants add read access to the secondary copy. The setting applies to the whole storage account and you can change it later.

Who this is for and what you will have at the end

This guide is for architects, administrators and developers choosing or reviewing the redundancy of an Azure storage account for blobs, files, queues, tables or disks.

At the end you will have:

  • A clear picture of how each option replicates data.
  • The documented durability and availability figures side by side.
  • A matching of failure scenarios to options.
  • The service and account-type limits that rule options out.
  • Commands for changing redundancy, and the restrictions that apply.

How the four options replicate data

Azure Storage always stores multiple copies of your data. The redundancy setting is shared by every service in the storage account, so all resources in one account have the same setting. If different data needs different redundancy, use separate accounts.

OptionPrimary regionSecondary region
LRSReplicated within a single datacenterNone
ZRSCopied synchronously across three or more availability zonesNone
GRSLRS in the primary regionCopied asynchronously to the paired region, then LRS there
GZRSZRS in the primary regionCopied asynchronously to the paired region, then LRS there

The difference between GRS and GZRS is only how data is replicated in the primary region. In the secondary region, data is always replicated synchronously using LRS.

Key points from the documentation:

  • LRS replicates within one datacenter. Choosing a zone isn't supported, although Azure might move or expand LRS accounts across zones for load balancing. If a disaster such as fire or flooding strikes the datacenter, all replicas might be lost or unrecoverable, and a temporary event can make them temporarily unavailable.
  • ZRS writes synchronously. A write returns only after the data is written to all replicas across the three availability zones, or all available zones if one is temporarily down. If a zone becomes unavailable, Azure performs networking updates such as DNS repointing, so applications should use retry policies with exponential back-off.
  • GRS and GZRS write to the primary first, then replicate asynchronously to the secondary region, which is hundreds of miles away. The paired region is set by the primary region and can't be changed.
  • RA-GRS and RA-GZRS add read access to the secondary. The secondary endpoint appends -secondary to the account name, for example myaccount-secondary.blob.core.windows.net, and the account keys are the same for both endpoints.

Durability and availability figures

ParameterLRSZRSGRS / RA-GRSGZRS / RA-GZRS
Durability of objects over a yearAt least 99.999999999% (11 nines)At least 99.9999999999% (12 nines)At least 99.99999999999999% (16 nines)At least 99.99999999999999% (16 nines)
Read availabilityAt least 99.9% (99% for cool, cold and archive tiers)At least 99.9% (99% for cool and cold)GRS at least 99.9%; RA-GRS at least 99.99%GZRS at least 99.9%; RA-GZRS at least 99.99%
Write availabilityAt least 99.9% (99% for cool, cold and archive)At least 99.9% (99% for cool and cold)At least 99.9%At least 99.9%

For the cool and cold tiers the read figures are lower, as listed in the Microsoft page. Check the Azure Storage SLA for the exact terms before you quote these to a customer or auditor.

Durability is not availability. Durability is the chance the data still exists. Availability is the chance you can reach it at that moment.

Which failures does each option survive?

ScenarioLRSZRSGRS / RA-GRSGZRS / RA-GZRS
A node within a datacenter becomes unavailableYesYesYesYes
An entire datacenter (zonal or non-zonal) becomes unavailableNoYesYes, after account failoverYes
A region-wide outage in the primary regionNoNoYes, after account failoverYes, after account failover
Read access to the secondary during a primary outageNoNoYes with RA-GRSYes with RA-GZRS

"After account failover" means that to restore write availability when the primary region is unavailable, you must fail over the account. During the failover process, data is inaccessible. After it completes, the secondary region becomes the primary and you can read and write. See the Azure Storage disaster recovery guidance for the process.

Plan for data loss

Because replication to the secondary region is asynchronous, the secondary is typically behind the primary. If the primary region can't be recovered, some recent writes could be lost and files within a directory or container may not be consistent. The interval between the latest write to the primary and the last write to the secondary is the recovery point objective (RPO). Azure Storage offers Geo priority replication, which keeps the RPO for block blobs to 15 minutes or less.

What redundancy does not cover

All replicas reflect the same current state. A deletion or overwrite applies to all copies at the same time, so redundancy protects against hardware failure and not against data-modifying operations. For accidental deletion use blob soft delete, versioning or backup. See /blog/azure-backup-vm-recovery-services-vault for VM backup, and /blog/azure-sql-database-backup-restore-pitr-ltr for the equivalent on databases.

Service and account-type support

ServiceLRSZRSGRSRA-GRSGZRSRA-GZRS
Blob Storage (including Data Lake Storage)YesYesYesYesYesYes
Queue StorageYesYesYesYesYesYes
Table StorageYesYesYesYesYesYes
Azure FilesYes (SSD shares too)Yes (SSD shares too)YesNoYesNo
Managed disksYesYes, with limitationsNoNoNoNo
Elastic SANYesYesNoNoNoNo

Restrictions to note:

  • Azure Files doesn't support RA-GRS or RA-GZRS.
  • The archive tier for Blob Storage isn't supported for ZRS, GZRS or RA-GZRS accounts. It is supported for LRS, GRS and RA-GRS.
  • Unmanaged disks don't support ZRS or GZRS, and Microsoft doesn't recommend GRS for them because of consistency issues with asynchronous geo-replication.
  • Geo-zone redundancy needs a region with availability zones and a paired region.
  • Standard general-purpose v2 accounts support all four options. Premium block blob and SSD file share accounts support LRS and ZRS only.
  • Microsoft recommends ZRS for Azure Files workloads and for Azure Data Lake Storage workloads. For high availability, it recommends ZRS in the primary region and replicating to a secondary region as well.

Choosing: a decision guide

  1. Can you rebuild the data from elsewhere, and is a datacenter outage acceptable? Choose LRS. It is the lowest-cost option and also fits data that must stay inside one region for governance reasons.
  2. Must the data stay readable and writable if a zone or datacenter fails, within one region? Choose ZRS. Microsoft also recommends it to restrict replication to one region while still surviving a zone failure.
  3. Must the data survive losing the whole region? Choose GRS if zone failures in the primary are acceptable to ride out, or GZRS to cover both zone and regional failures.
  4. Must applications read during a primary outage without waiting for failover? Add read access: RA-GRS or RA-GZRS. Design the application to fall back to the -secondary endpoint.

Cost order, from least to most expensive: LRS, ZRS, GRS, RA-GRS, GZRS, RA-GZRS. Check the Azure Storage pricing page for current per-GB prices in your region, since this guide does not quote them.

Change the redundancy of an existing account

You can change redundancy as needed, but some paths have limits. There are three methods:

  • Add or remove geo-replication or read access with the portal, PowerShell or CLI.
  • Add or remove zone redundancy with a conversion.
  • Perform a manual migration where the first two aren't supported, or when you need a fixed timeline.

Geo-redundancy and read access can change in the same operation. Any change that involves zone redundancy must be done in a separate step. For example, LRS to GZRS is two steps: LRS to GRS first, then a conversion to GZRS, or the reverse order.

Portal

  1. Open the storage account in the Azure portal.
  2. Under Data management, select Redundancy.
  3. Change the Redundancy setting and select Save.

Changing replication in the portal causes no downtime, including changes that need a conversion.

PowerShell and CLI

Change between locally redundant and geo-redundant storage with the -SkuName or --sku parameter:

Set-AzStorageAccount -ResourceGroupName <resource_group> `
    -Name <storage_account> `
    -SkuName <sku>
az storage account update \
    --name <storage-account> \
    --resource-group <resource_group> \
    --sku <sku>

To add or remove zone redundancy, start a conversion. Standard_ZRS is the target SKU in the documented examples:

Start-AzStorageAccountMigration `
    -AccountName <storage_account> `
    -ResourceGroupName <resource_group> `
    -TargetSku Standard_ZRS `
    -AsJob
az storage account migration start \
    --account-name <storage-account> \
    --resource-group <resource_group> \
    --sku Standard_ZRS \
    --no-wait

Track progress with Get-AzStorageAccountMigration or az storage account migration show --account-name <storage-account> --resource-group <resource_group> --name "default". The status moves from Submitted for conversion to In Progress and then Completed or Failed. If it fails, open a support request.

What to know about conversions

  • A conversion needs no data loss or application downtime. HNS-enabled accounts might see a pause of under 30 seconds. Endpoints, keys and SAS tokens stay unchanged.
  • There is no SLA for completion. A customer-initiated conversion typically begins within 72 hours but can take longer. If you need a hard date, plan a manual migration.
  • After a zone-redundancy conversion, wait at least 24 hours before changing redundancy again.
  • Adding geo-redundancy incurs a one-time egress charge for replicating the whole account, and later writes incur egress to replicate. Removing geo-redundancy is free, but the secondary data is deleted.
  • If you remove read access (RA-GRS to GRS or LRS), the account is billed as RA-GRS for another 30 days.
  • Failover to the secondary can't start until initial synchronization completes, even though enabling geo-redundancy appears instant.

Blocking conditions

ConditionEffect
Archive-tier blobs, going to ZRS or GZRSNot supported. Rehydrate first, or migrate manually.
Block blob (premium) accountsConversion isn't supported; use a manual migration.
NFSv3 enabled on Blob StorageConversion isn't supported.
Azure Files NFSv4.1 shares with public endpoint accessDisable public endpoint access, convert, then reconfigure endpoints.
General-purpose v1 accountUpgrade to v2 before converting.
Boot diagnostics using the accountAdding zone redundancy fails with StorageAccountTypeNotSupported for VMs. Disable boot diagnostics and retry.
Account failed over from GRSIt becomes LRS in the new primary region. Conversion to ZRS or GZRS isn't supported, so use a manual migration.
Target region lacks the optionCheck that the region supports ZRS or GZRS.

Manual migration means copying data to a new account with a tool such as AzCopy. It can cause application downtime and is required to move to a different region.

Troubleshooting

SymptomCause and fix
The ZRS or GZRS option is greyed out or missingThe region may not support availability zones or may lack a paired region, or the account type doesn't support it.
Conversion request is stuck for daysThere's no completion SLA; typical start is within 72 hours. Use a manual migration if you need a date.
Can't read from the secondary during an outageThe account is GRS or GZRS. Only RA-GRS or RA-GZRS allows secondary reads, otherwise fail over.
Boot diagnostics error StorageAccountTypeNotSupported after switching to ZRSBoot diagnostics doesn't support premium or zone-redundant accounts. Use a separate LRS account for it.
Data written just before an outage is missing after failoverAsynchronous replication means the secondary lags. Plan around the RPO.

Checklist

  • Choose redundancy per account, based on the data it holds.
  • Prefer ZRS in the primary region where high availability matters, and add geo-replication for regional disasters.
  • Use RA-GRS or RA-GZRS only if the application can read from the -secondary endpoint.
  • Check that region, account type, access tiers and features support your choice.
  • Plan conversions with no completion SLA in mind, and use manual migration for hard deadlines.
  • Add backup, soft delete or versioning, because redundancy doesn't protect against deletion.
  • Review costs: egress when adding geo-replication, and higher per-GB cost for each step up.

References

Questions people ask

What is the difference between LRS and ZRS in Azure Storage?

LRS keeps copies in a single datacenter in the primary region, so a datacenter-wide event can lose or block all copies. ZRS writes synchronously across three or more availability zones, so data stays readable and writable if one zone goes down. ZRS has higher durability (12 nines versus 11) and costs more.

Does GRS let me read data from the secondary region?

Not by default. With GRS or GZRS, data in the secondary region is not available for read or write unless a failover occurs. To read from the secondary during an outage you need RA-GRS or RA-GZRS, and the secondary endpoint is the account name with the -secondary suffix.

Can I change a storage account from LRS to ZRS without downtime?

Yes in most cases. A conversion needs no application downtime or data loss, but it has no completion SLA and usually begins within 72 hours of the request. Block blob accounts, accounts with archive-tier blobs that you don't want to rehydrate, and moves to another region need a manual migration, which can cause downtime.

Does redundancy protect me from accidental deletion?

No. All replicas reflect the same current state, so deletions and overwrites apply to every copy at once. Redundancy protects against hardware and facility failure. Use soft delete, versioning, backups or immutability for accidental or malicious changes.

Azure StorageLRSZRSGRSGZRS
  1. Azure Storage SAS Tokens: User Delegation SAS vs Account Keys

    Share Azure blobs through expiring links without handing out account keys. Compare the three SAS types, create a user delegation SAS with the Azure CLI and revoke it.

  2. Fix Azure private endpoint DNS from on-premises with DNS Private Resolver

    Stop private endpoints resolving to public IP addresses from on-premises and VPN clients: link the privatelink zone, add a DNS Private Resolver inbound endpoint and forward the right zones.

  3. AWS EC2 Pricing Explained: On-Demand, Savings Plans, Reserved and Spot

    Compare the EC2 purchasing options in USD terms: On-Demand, Savings Plans, Reserved Instances and Spot. Learn when each fits and how to estimate cost with the AWS Pricing Calculator.

  4. Azure Reservations vs Savings Plan for Compute: Which Saves More

    Compare Azure reserved instances with a compute savings plan for steady workloads, including discounts, flexibility, exchange and refund rules, and how the two apply together.

  5. Statuszen: Free, Self-Hosted Uptime Monitoring and Status Pages (Open Source)

    Statuszen is an MIT-licensed uptime monitor, public status page and cron job monitor you run on your own server. What it does, how to install it and how heartbeat monitoring works.

  6. AWS Budgets and Billing Alerts: Set Them Up Before a Surprise Bill

    Set up AWS Budgets, Free Tier usage alerts and a CloudWatch billing alarm on a new AWS account, and learn what each one does, its delays, and why alerts do not stop spending.