Skip to main content
emnode
Cost

Buy Blob storage reserved capacity

One capability: commit to the steady, predictable base of Blob and Data Lake Gen2 storage you keep year after year, and pay the reserved rate for it instead of the pay-as-you-go rate, without changing a single byte of how the data is stored.

13 min·10 sections·AZURE

Last reviewed

Blob storage reserved capacity: the basics

What does Azure Advisor actually mean by 'consider Blob storage reserved instance'?

If you keep a large, steady amount of data in standard Blob storage or Azure Data Lake Storage Gen2, you are almost certainly paying the on-demand rate for capacity you never delete. Azure Storage reserved capacity is a billing discount: you commit to a fixed amount of capacity, measured in units of 100 TiB or 1 PiB per month, for a one-year or three-year term, and Azure charges the matching usage at the reserved rate instead of the pay-as-you-go rate. Nothing about the data moves or changes. The accounts, containers, tiers and redundancy all stay exactly as they are. Only the price of the capacity you were already going to store changes.

Azure Advisor surfaces this as a Cost recommendation, 'Consider Blob storage reserved instance to save on Blob v2 and Datalake storage Gen2 costs' (recommendation ID 0169a2e1-c7bf-4c37-90b8-0714811c82d3). Advisor looks at your recent usage of standard general-purpose v2 and Blob storage accounts, works out the stable base you have stored every hour over the lookback window, and recommends a reservation sized to that base. The recommendation is purely a savings signal: there is no security or reliability change behind it, just an unused commitment discount you are leaving on the table.

The reservation is scoped to a specific region, access tier and redundancy option, and it is a use-it-or-lose-it commitment for each hour. That is the whole shape of the decision: reserve the floor of storage you are confident you will always be holding in a given region, tier and redundancy, and keep paying pay-as-you-go for the variable layer on top. Get the floor right and the discount is risk-free; reserve more than you actually hold and the unused hours are simply wasted.

In this lesson you will learn exactly what Azure Storage reserved capacity discounts and what it does not, how Advisor decides a reservation is worth recommending, how to size the commitment to a safe floor so the discount is risk-free, and how to purchase and govern reservations across the estate. The focus throughout is the saving and the payback, not security: this is a pricing decision about capacity you already hold.

Fun fact

The discount that hides in plain sight

Reserved capacity is unusual among cost levers because it changes nothing about the workload. There is no migration, no tier change, no code path to test, and no risk to availability or durability. The data sits exactly where it was, served exactly as before, and the invoice line for capacity simply drops to the reserved rate. The most common way teams lose this saving is not technical failure but silence: a reservation reaches the end of its term, nobody renews it, and the capacity quietly rolls back onto the full pay-as-you-go rate. Azure sends a notice 30 days before expiry and again on the day, precisely because the lapse is so easy to miss.

Reading the reserved-capacity recommendation across a subscription

Priya runs the platform team at a media company that stores years of rendered assets and a growing Data Lake Gen2 in standard storage. Azure Advisor has raised the Blob reserved-capacity recommendation with a projected annual saving, and the question on the table is whether the committed base is solid enough to act on.

Rather than accept the headline number blind, Priya starts by pulling the Advisor cost recommendation and confirming what stable capacity the estate has actually been holding, so the reservation is sized to a floor the team is confident about rather than to a recent peak.

List the Advisor Cost recommendations and surface the Blob reserved-capacity one, with the saving Advisor has projected against your own usage.

$ az advisor recommendation list --category Cost \ --query "[?contains(shortDescription.solution, 'Blob storage reserved')].{problem:shortDescription.problem, saving:extendedProperties.annualSavingsAmount, region:extendedProperties.region}" -o table
Problem Saving Region
-------------------------------------------- -------- --------
You could save by buying a reserved instance 12480 westeurope
# Advisor sized this against the stable base you already store. Confirm the floor before committing.

Advisor projects the annual saving against your real recent usage in a specific region. Treat it as a sized starting point, then sanity-check the floor you are confident you will hold for the whole term.

How the reserved-capacity discount actually appliesdeep dive

A reservation is a billing construct, not a storage construct. When you buy one, you choose four things: the region, the access tier (hot, cool or archive), the redundancy option (LRS, ZRS, GRS, GZRS, RA-GRS or RA-GZRS), and the size (a number of 100 TiB or 1 PiB units) for a one-year or three-year term. For every hour, Azure matches your actual standard Blob and Data Lake Gen2 capacity usage against reservations with the same attributes and bills the matched portion at the reserved rate. It applies automatically to existing and future data that fits the terms; you do not point it at a specific account or container.

The discount is use-it-or-lose-it per hour. If, in a given hour, you store less than the reserved amount that matches a reservation's region, tier and redundancy, the unused portion of that hour's commitment is forfeited; it does not roll forward. This is why sizing to the floor matters: a reservation set to capacity you reliably exceed is always fully used, while one set above your real usage wastes the gap every hour. Because the attributes must match, a reservation bought for the hot tier in one region does not discount cool-tier data or data in another region; you would buy separate reservations for those.

Several things are explicitly outside the reservation and stay at pay-as-you-go: early deletion charges, per-operation transaction costs, bandwidth and data transfer. The reservation discounts capacity, the gigabytes stored, and nothing else. It also does not cover premium accounts, general-purpose v1 accounts, page blobs, Queue storage or Table storage; Azure Files reserved capacity is a separate, distinct reservation. Knowing the boundary keeps the saving estimate honest: it is a discount on the capacity line, not on the whole storage bill.

What is the impact of leaving the recommendation unactioned?

The direct impact is simply overpayment. Every month the steady base of standard Blob and Data Lake Gen2 capacity is billed at the pay-as-you-go rate when a matching reservation would discount it, the difference is money spent for nothing in return. Because storage bases tend to be large and to grow, the gap compounds: the longer a stable floor sits unreserved, the more pay-as-you-go premium has been paid that a reservation would have avoided. Advisor quantifies exactly this as the projected annual saving on the recommendation.

The second-order impact is forecast noise. Pay-as-you-go capacity is a variable line that drifts with usage, whereas a reservation converts the predictable floor into a fixed, known monthly cost. Reserving the base makes the storage bill easier to forecast and reserves the variability for the genuinely variable layer on top. Leaving everything on demand keeps the whole line fuzzy even though most of it is, in practice, perfectly predictable.

The risk of acting is bounded and well defined: it is the commitment itself. A reservation is paid for whether or not the capacity is held that hour, so reserving more than you reliably store strands part of the commitment. That risk is fully controllable by sizing to the conservative floor, and Azure provides an exchange and refund route, with documented limits including a maximum refund per year, as a safety valve if the estate changes materially. The asymmetry favours acting on a well-sized floor: the saving is certain and recurring, while the only downside is a forecasting error you control.

How do you capture the saving safely?

Work it as a sizing-and-commit loop, not a one-click accept of the Advisor figure. The order matters: confirm the durable floor before committing, so every reserved unit is covered every hour and the discount stays risk-free.

1. Confirm the durable floor, not the recent peak

Plot stored standard Blob and Data Lake Gen2 capacity over the lookback window for each region, access tier and redundancy combination. Identify the floor: the capacity present every month that the business is confident it will keep for the whole term. Advisor's projection is a sized starting point; this step converts it into a commitment you can defend.

2. Match the reservation attributes exactly

A reservation only discounts usage with the same region, access tier and redundancy, so buy one reservation per combination that has a meaningful floor. Hot-tier data in West Europe and cool-tier data elsewhere need separate reservations. Reserve in units of 100 TiB or 1 PiB, sizing each to its own floor.

3. Choose the term and billing plan deliberately

A three-year term gives a deeper discount than one year but commits for longer; a one-year term is the safer choice where the floor is less certain. Billing can be upfront or monthly at no extra cost, so monthly billing captures the same discount without the cash outlay. Leave the variable layer above the floor on pay-as-you-go.

4. Own the renewal and keep the safety valve in reach

Record the reservation, its scope and its expiry date so the saving is renewed deliberately rather than lapsing back to the full rate. If the estate shifts materially, use the exchange route to re-size into a new Azure Storage reservation, or refund within the documented limits, including the maximum refund per year.

# 1. Pull the Advisor reserved-capacity recommendation and its projected saving.
az advisor recommendation list --category Cost \
  --query "[?contains(shortDescription.solution, 'Blob storage reserved')]" -o jsonc

# 2. Price the reservation BEFORE buying: confirm the discount on the floor you sized.
#    BlockBlob is the reserved-resource-type for Blob + Data Lake Gen2 capacity.
#    --sku, --location, --quantity must match the region/tier/redundancy floor you confirmed.
az reservations reservation-order calculate \
  --reserved-resource-type BlockBlob \
  --sku <blob-reservation-sku> \
  --location westeurope \
  --quantity 1 \
  --term P3Y \
  --billing-plan Monthly \
  --applied-scope-type Shared \
  --display-name "blob-reserved-floor-westeurope"

# 3. Purchase once the calculated price and discount are confirmed.
#    --reservation-order-id is the GUID returned by the calculate step (or generate one).
#    Monthly billing captures the same discount with no upfront cash outlay.
az reservations reservation-order purchase \
  --reservation-order-id <reservation-order-guid> \
  --reserved-resource-type BlockBlob \
  --sku <blob-reservation-sku> \
  --location westeurope \
  --quantity 1 \
  --term P3Y \
  --billing-plan Monthly \
  --applied-scope-type Shared \
  --display-name "blob-reserved-floor-westeurope"

Quick quiz

Question 1 of 5

Azure Advisor recommends 'Consider Blob storage reserved instance to save on Blob v2 and Datalake storage Gen2 costs'. What does acting on it actually change?

You can now treat the Advisor reserved-capacity recommendation as one capability rather than a notification to ignore: confirm the durable floor of standard Blob and Data Lake Gen2 capacity you reliably hold, match a reservation to each region, tier and redundancy combination, choose the term and billing plan deliberately, and own the renewal so the saving never lapses. Nothing about the data changes; only the unit price on the steady base you already store.

Back to the library