Explanation
Why the waste happens and who it affects.
Azure Storage reserved capacity gives a discount on that stored capacity in exchange for a one- or three-year commitment, bought in 100 TiB or 1 PiB blocks.
It is easy to miss because commitment programs are usually run for compute. A storage reservation is also specific to a region, an access tier and a redundancy option, so a reservation bought for Hot LRS in one region does nothing for Cool GRS data or data in another region, and each combination has to be sized separately. Azure Advisor raises a dedicated purchase recommendation for Blob v2 and Data Lake Storage Gen2 capacity, and the Well-Architected guidance for Blob Storage asks teams to evaluate a commitment-based billing model for capacity.
Billing model
The pricing dimensions that drive this cost.
- Pay-as-you-go capacity
- Billed per GB per month at the rate for the account's region, access tier and redundancy
- Storage reserved capacity
- Prepaid capacity in 100 TiB or 1 PiB units per month for one or three years, for one region, access tier and redundancy
- Hourly application
- The discount applies each hour to matching stored data; unused reserved capacity in an hour is lost and usage above it is billed at pay-as-you-go rates
- Excluded charges
- Operations, bandwidth, data transfer and early deletion charges are never covered by the reservation
How to detect
4 checks to find it in your estate.
- Review Azure Advisor for 'Consider Blob storage reserved instance to save on Blob v2 and Datalake storage Gen2 costs' and the recommendations shown in the reservation purchase blade for Azure Blob Storage
- In Cost analysis, group block blob capacity charges by region, meter (access tier) and redundancy, and look for combinations that stay above 100 TiB month after month with no matching reservation
- Check reservation coverage for storage in Reservations and Cost Management; capacity billed at pay-as-you-go rates for a covered combination suggests a reservation is too small or expired
- Confirm the data is in a supported account and tier: standard general-purpose v2 or Blob storage accounts in the Hot, Cool or Archive tiers; premium, general-purpose v1, page blob, queue and table data are not eligible, and the Cold tier is not among the listed reservation options
How to fix
4 ways to remove the waste.
- Buy reserved capacity sized to the stable floor of each region, tier and redundancy combination rather than to peak usage, since unused reserved hours are lost
- Use shared or management group scope so the reservation follows the data across subscriptions in the billing context
- Plan around lifecycle policies that move data between tiers: data that will move from Hot to Cool or Archive during the term should be reserved in the tier where it will spend most of that term
- Check the renewal setting on every storage reservation and either enable automatic renewal or track expiry dates, since capacity falls back to pay-as-you-go rates the moment a reservation expires; exchanges into another storage reservation are available if the mix of tiers or regions changes
Documentation
Vendor references for pricing and configuration.
- Optimize costs for Blob storage with reserved capacitylearn.microsoft.com
- Understand how reservation discounts are applied to Azure storage serviceslearn.microsoft.com
- Cost recommendations - Azure Advisorlearn.microsoft.com
- Architecture Best Practices for Azure Blob Storagelearn.microsoft.com
- Automatically renew Azure reservationslearn.microsoft.com
- Azure Blob Storage pricingazure.microsoft.com