Skip to main content
emnode
Site Reliability

Choose zone-redundant storage for managed disks

One capability across your VM estate: make sure the disks behind the workloads you cannot afford to lose are replicated across three availability zones, so a single zone going dark does not take the application with it.

14 min·10 sections·AZURE

Last reviewed

Zone-redundant disks: the basics

What does a single-zone disk actually risk?

A managed disk is the durable state behind a virtual machine, and the redundancy you pick for it decides what kind of failure it can survive. The default, locally redundant storage (LRS), keeps three synchronous copies inside one data centre. That protects against a failed drive or rack, but every copy lives in the same availability zone, so if that zone loses power, cooling or network, the disk and the workload on top of it go down together. Zone-redundant storage (ZRS) instead replicates every write synchronously across three separate availability zones in the region, each a physically distinct location with independent power, cooling and networking. A write only completes once it has landed in clusters in multiple zones, so the disk keeps serving even if an entire zone fails.

Azure Advisor surfaces this as a reliability recommendation: for maximum availability and durability, use a zone-redundant (ZRS) disk so the disk can tolerate a zonal failure without disrupting the application. It reads as a single line item per disk on the Advisor reliability tab, but the underlying decision is the same one every time: is this disk behind a workload whose outage you would have to explain, and if so, is it pinned to a single zone that can take it offline on its own.

Most single-zone exposure is default, not intent. A VM was created, its OS and data disks defaulted to LRS, and nobody revisited the redundancy choice once the workload became important. The work is to find the disks behind the workloads that matter, decide which genuinely need to survive a zone failure, and move those to ZRS, while leaving the throwaway and easily rebuilt ones on cheaper LRS on purpose.

In this lesson you will learn how Azure managed disks express zone resilience, how to find every disk behind a critical workload that is still pinned to a single zone, and how to move the ones that matter to zone-redundant storage without taking the workload offline or overspending on the ones that do not need it. You will see the exact Azure CLI to inventory and convert disks, the Bicep to make ZRS the default for new critical workloads, and the limits that decide whether a disk can be converted in place or needs a snapshot.

Fun fact

Three zones, one write

The thing that makes a ZRS disk feel like ordinary storage is that the cross-zone replication is synchronous and invisible: every write is acknowledged only once it has been committed to clusters in more than one availability zone, so there is no replica to fail over to and no lag to reconcile after a zone failure. The trade is a small amount of extra write latency, because a write now has to cross zones before it completes, where an LRS write stays inside one data centre. For the workloads people choose ZRS for, that millisecond-scale latency cost is exactly the price of never having to run a failover during a zone outage.

Finding single-zone disks behind critical workloads

Priya is the platform lead at a fintech whose payments API has a contractual uptime commitment to its own customers. Azure Advisor's reliability tab is showing ZRS recommendations against a handful of disks, and a recent regional incident, where a single zone degraded for a few hours, has made the question urgent.

Rather than convert everything Advisor flags, Priya starts by listing the Premium and Standard SSD disks that are still on a locally redundant SKU, so the disks behind the workloads that actually carry an uptime promise can be separated from the ones that can simply be rebuilt.

Start by listing the managed disks still on a locally redundant SKU, with the SKU and the VM each is attached to. These are the candidates a zone failure can take down.

$ az disk list --query "[?ends_with(sku.name, '_LRS')].{name:name, sku:sku.name, attachedTo:managedBy}" -o table
Name Sku AttachedTo
------------------ --------------- -----------------
payments-api-os Premium_LRS vm-payments-api
payments-api-data Premium_LRS vm-payments-api
batch-nightly-os StandardSSD_LRS vm-batch-nightly
# payments-api disks carry an uptime promise and are single-zoned. Move these first.

A disk behind a workload with a contractual uptime commitment, still on a locally redundant SKU, is the highest-value target. Convert these before the rebuildable batch boxes.

How Azure decides a disk can survive a zone failuredeep dive

Redundancy is expressed by the disk's SKU name. A locally redundant disk ends in '_LRS' (Premium_LRS, StandardSSD_LRS, Standard_LRS) and keeps all three of its synchronous copies in one zone. A zone-redundant disk ends in '_ZRS' (Premium_ZRS, StandardSSD_ZRS) and spreads its synchronous copies across three availability zones, which is why it carries about a quarter more durability on paper, twelve nines over a year against eleven for LRS, and why it keeps serving through a zone outage. ZRS is supported only on Premium SSD and Standard SSD; Premium SSD v2 and Ultra Disk do not offer a ZRS SKU, so for those tiers zone resilience has to come from the application layer instead.

There is a structural difference that matters when you plan the move. A ZRS disk is regional: it is not pinned to a single availability zone, and it can be attached to a VM in any zone in the same region. An LRS disk may be regional (no zone specified) or zonal (pinned to one zone). A regional LRS disk can be converted to ZRS in place by changing its SKU while the VM is deallocated. A zonal LRS disk cannot have its SKU changed directly; you take a snapshot and create a new ZRS disk from it, then swap it in.

Advisor evaluates these recommendations on its own cycle, so converting a disk does not clear the recommendation the instant the SKU changes; the control-plane change is immediate but the reliability tab catches up on the next assessment. The strongest position is not just to convert today's disks but to make ZRS the default redundancy in the templates and modules that stamp out new critical workloads, so a future VM behind an uptime commitment does not quietly land back on a single-zone disk.

What is the impact of leaving a critical disk single-zoned?

The direct impact is correlated downtime. When the availability zone holding a single-zone disk fails, every workload whose disk lived only in that zone goes down at once, and it stays down until the zone recovers or you restore from a backup into another zone. That is precisely the failure availability zones exist to contain, and a single-zone disk is what stops you from benefiting from the containment. The overwhelming majority of these exposures are accidents of default: the disk defaulted to LRS at VM creation and the redundancy choice was never revisited once the workload became important.

The second-order impact is recovery cost and complexity. Without zone redundancy, surviving a zone failure means a restore-and-failover exercise under incident pressure: provisioning new disks in a healthy zone, restoring from backup or snapshot, reattaching and validating, all while the service is down and the recovery point is whatever your last backup captured. A ZRS disk removes that exercise for zone failures entirely, because the disk simply keeps serving. The cost of the single-zone choice is paid not in the steady state but in the worst hour you will have.

On the commitments side, if you have promised your own customers an uptime figure, or you are aligning to an internal reliability target, a single-zone dependency under a critical workload is the gap an auditor or a post-incident review will find first. Evidence that the disks behind your committed workloads are zone-redundant by design is the cleanest artefact you can show that the commitment is engineered, not hoped for.

How do you move critical disks to ZRS safely?

Work this as a tiering exercise, not a blanket conversion. The order matters: decide which workloads must survive a zone failure before you change any SKU, so you spend the uplift only where an outage would actually cost you, and so you do not disrupt a workload that cannot tolerate the brief deallocation a conversion needs.

1. Inventory disks by redundancy and workload

List every managed disk still on a locally redundant SKU, with the VM it is attached to. Treat this inventory, mapped to the workloads behind it, as the source of truth rather than the raw Advisor count, because a single critical VM can have several disks and the OS disk matters as much as the data disks.

2. Tier by cost of an outage

For each disk, decide whether the workload behind it must survive a zone failure. Revenue-bearing services and anything with an uptime commitment to your own customers are ZRS candidates. Workloads that can be rebuilt from an image in under an hour with no contractual consequence stay on cheaper LRS on purpose. Write the decision down; the goal is deliberate tiering, not maximal redundancy.

3. Convert the critical disks the right way for their shape

A regional LRS disk can be converted in place by changing its SKU to the matching ZRS one while the VM is deallocated, then starting the VM again. A zonal LRS disk cannot change SKU directly: take a snapshot, create a new ZRS disk from it, and swap it in. Premium SSD v2 and Ultra disks have no ZRS SKU, so handle their zone resilience at the application layer instead.

4. Make ZRS the default for new critical workloads

Convert today's disks, then set ZRS as the redundancy in the Bicep modules and templates that stamp out new workloads in your committed tier, so a future critical VM does not quietly default back to a single-zone disk. This is what turns a one-off cleanup into a durable posture.

# Convert a REGIONAL (non-zonal) LRS disk to ZRS in place.
# The disk's SKU can be changed directly; the VM must be deallocated first.
RG="rg-payments"
VM="vm-payments-api"
DISK="payments-api-data"

az vm deallocate --resource-group "$RG" --name "$VM"

az disk update --resource-group "$RG" --name "$DISK" --sku Premium_ZRS

az vm start --resource-group "$RG" --name "$VM"
echo "$DISK: converted to Premium_ZRS, now replicated across three availability zones"

# For a ZONAL LRS disk the SKU cannot be changed directly: snapshot, then
# create a new ZRS disk from the snapshot and swap it in.
# az snapshot create --resource-group "$RG" --name "${DISK}-snap" --source "$DISK"
# az disk create --resource-group "$RG" --name "${DISK}-zrs" \
#   --sku Premium_ZRS --source "${DISK}-snap"

Quick quiz

Question 1 of 5

What does zone-redundant storage (ZRS) give a managed disk that locally redundant storage (LRS) does not?

You can now treat managed disk redundancy as one deliberate decision rather than a default: inventory the disks still on a locally redundant SKU, tier them by the cost of an outage of the workload behind each, convert the critical ones to zone-redundant storage the right way for their shape, and make ZRS the default in the templates that build new committed workloads. Single-zone exposure stops being something a zone failure can surprise you with and becomes a choice you have made and written down.

Back to the library