Skip to content

Estimating Storage Volume

tobiasny edited this page Apr 30, 2024 · 3 revisions

Estimating Storage Volume from Usage

The Azure cost export provides various metrics that allows for estimating storage volume for certain services. Metrics including Quantity and UnitOfMeasure can be utilized to deduced an estimate of the storage volume. The storage component for Azure services is billed in different ways, and will in certain cases not directly reflect the corresponding storage volume. Storage is often billed in GiB/Month, GB/Month or GiB/Hour on a daily basis, and thus a set of assumptions must be made to calculate an estimate of the storage volume. This document serves as a reference to describe the assumptions made in order to estimate the storage volume for various Azure services.

For simplicity we will use gibibytes (GiB) as our base unit of measure. It's relation to GB is given by the following relation

$$ 1 \text{GB} = \frac{10^9}{2^{30}} \text{GiB} = 0.931322575 \text{GiB} $$

When aggregating storage volume it is desirable to denote the volume in tibibytes (TiB). Its relation to gibibytes is determined by the following relation:

$$ 1 \text{TiB} = 2^{10} \text{GiB} = 1024 \text{GiB} $$

The storage quantities are aften given in GB/Month or GiB/Month. Thus the Quantity property in the cost export aggregated with a monthly granularity will yield an approximate storage volume average for a given month. But the storage volume itself may vary significantly from day to day, and thus the monthly aggregated average might be misleading. But this means that the quantities aggregated with a daily granularity will yield the daily storage share of the full monthly storage volume. Subsequently, by multipying the daily storage volume aggregate with a factor, namely the number of days in a month, the storage volume of a service on a given day can be estimated more precicely than aggregating with monthly granularity. Given the daily aggregated volume $X \frac{1}{\text{day}}$, given in GB/Month, the storage volume $V$ in a given day can be approximated to be:

$$ V = X \frac{\text{GB}}{\text{day}} = X \frac{\text{GB}}{\text{day}} \times \frac{\text{month}}{\text{month}} = X \frac{\text{GB}}{\text{day}} \times \frac{{\text{N } \text{day}}}{\text{month}} = X \times N \frac{\text{GB}}{\text{Month}}, \text{N is the number of days in the month} $$

When it comes to billing in Azure, 730 hours is often used to approximate the number of hours in a month. By dividing the number by the amount of hours in a day we get $N = \frac{730 \text{hours}}{24 \text{hours/day}} = 30.4567 \text{days}$. The formula for estimating the storage volume $V$ for resources with storage quantities given in GB/Month and aggregated with daily granularity $X$ is related by

$$V = \frac{730}{24} X$$

The storage quantities can also be given in GB/Hour or GiB/Hour. As we will utilize the daily aggregated volume $X \frac{1}{\text{day}}$ as a base for storage approximation, we want to follow the same methodology as above. Starting from the daily volume aggregate, we must transform the result such that it holds the same unit of measure as the original quantity. We can thus deduce that the storage volume $V$ in a given day can be approximated to be:

$$V = X \frac{\text{GB}}{\text{day}} = X \frac{\text{GB}}{24\text{hours}} = \frac{1}{24} \times X \frac{\text{GB}}{\text{hour}}$$

This simply leaves us with the formula for estimating the storage volume $V$ for resources with storage quantities given in GB/Hour and aggregated with daily granularity $X$ is related by

$$V = \frac{1}{24} X$$

Storage Accounts

The storage account storage volume is estimated based on the Azure amortized cost export. The method of estimation is based on the Microsoft Azure Blob Storage pricing documentation. The following criteria are used to identify storage cost related to storage accounts:

Cost Export Property Relevant Values
MeterCategory Storage
ResourceType microsoft.storage/storageaccounts, microsoft.classicstorage/storageaccounts
UnitOfMeasure 1 GB/Month

The latter criteria will identify usage with the following MeterName values

MeterName UnitOfMeasure
Archive GRS Data Stored 1 GB/Month
Archive LRS Data Stored 1 GB/Month
Archive RA-GRS Data Stored 1 GB/Month
Cold LRS Data Stored 1 GB/Month
Cold RA-GRS Data Stored 1 GB/Month
Cold ZRS Data Stored 1 GB/Month
Cool GRS Data Stored 1 GB/Month
Cool LRS Data Stored 1 GB/Month
Cool RA-GRS Data Stored 1 GB/Month
Cool RA-GZRS Data Stored 1 GB/Month
Cool ZRS Data Stored 1 GB/Month
GRS Data Stored 1 GB/Month
GRS Metadata 1 GB/Month
GZRS Data Stored 1 GB/Month
Hot GRS Data Stored 1 GB/Month
Hot GRS Index 1 GB/Month
Hot GZRS Data Stored 1 GB/Month
Hot LRS Data Stored 1 GB/Month
Hot LRS Index 1 GB/Month
Hot RA-GRS Data Stored 1 GB/Month
Hot RA-GRS Index 1 GB/Month
Hot RA-GZRS Data Stored 1 GB/Month
Hot ZRS Data Stored 1 GB/Month
Hot ZRS Index 1 GB/Month
LRS Data Stored 1 GB/Month
LRS Metadata 1 GB/Month
LRS Snapshots 1 GB/Month
Premium LRS Data Stored 1 GB/Month
Premium LRS MetaData Storage 1 GB/Month
Premium LRS Provisioned 1 GB/Month
Premium LRS Snapshots 1 GB/Month
Premium ZRS Data Stored 1 GB/Month
Premium ZRS MetaData Storage 1 GB/Month
Premium ZRS Provisioned 1 GB/Month
Premium ZRS Snapshots 1 GB/Month
RA-GRS Data Stored 1 GB/Month
RA-GZRS Data Stored 1 GB/Month
ZRS Data Stored 1 GB/Month
ZRS Metadata 1 GB/Month

As the all storage quantities related to storage accounts are given in GB/Month, the estimated storage account storage volume $V_{\text{storage accounts}}$ in tibibytes (TiB) based on the daily aggregate $X_{\text{storage accounts}}$ is given by

$$V_{\text{storage accounts}} = \frac{730}{24} \times 0.931322575 \times \frac{1}{1024} \times X_{\text{storage accounts}}$$

Managed Disks

The managed disk storage volume is estimated based on the Azure amortized cost export. The method of estimation is based on the Microsoft Managed Disk pricing documentation. Managed disks are primarily storage that are pre-allocated and billed per disk as opposed storage accounts that are billed per GB used. Albeit, there are cost associated with managed disks that are billed per GB, but this is only in relation to redundancy.

The following criteria are used to identify storage cost related to pre-allocated managed disks:

Cost Export Property Relevant Values
MeterCategory Storage
ResourceType microsoft.storage/disks
MeterName Contains Disk
UnitOfMeasure 1/Month

The criteria used to identify storage cost related to managed disk redundancy capacities are:

Cost Export Property Relevant Values
MeterCategory Storage
ResourceType microsoft.storage/disks
UnitOfMeasure 1 GB/Month, GiB/Hour

The criteria above will identify usage with the following MeterName values

MeterName UnitOfMeasure
E1 LRS Disk 1/Month
E10 LRS Disk 1/Month
E10 ZRS Disk 1/Month
E15 LRS Disk 1/Month
E2 LRS Disk 1/Month
E20 LRS Disk 1/Month
E20 LRS Disk Mount 1/Month
E3 LRS Disk 1/Month
E30 LRS Disk 1/Month
E4 LRS Disk 1/Month
E4 ZRS Disk 1/Month
E40 LRS Disk 1/Month
E50 LRS Disk 1/Month
E6 LRS Disk 1/Month
E60 LRS Disk 1/Month
E70 LRS Disk 1/Month
LRS Snapshots 1 GB/Month
P1 LRS Disk 1/Month
P10 LRS Disk 1/Month
P15 LRS Disk 1/Month
P15 LRS Disk Mount 1/Month
P2 LRS Disk 1/Month
P20 LRS Disk 1/Month
P3 LRS Disk 1/Month
P30 LRS Disk 1/Month
P30 LRS Disk Mount 1/Month
P4 LRS Disk 1/Month
P40 LRS Disk 1/Month
P50 LRS Disk 1/Month
P50 LRS Disk Mount 1/Month
P6 LRS Disk 1/Month
P60 LRS Disk 1/Month
P60 ZRS Disk 1/Month
P70 LRS Disk 1/Month
P80 LRS Disk 1/Month
Premium LRS Provisioned Capacity 1 GiB/Hour
S10 LRS Disk 1/Month
S15 LRS Disk 1/Month
S20 LRS Disk 1/Month
S30 LRS Disk 1/Month
S4 LRS Disk 1/Month
S40 LRS Disk 1/Month
S50 LRS Disk 1/Month
S6 LRS Disk 1/Month
S60 LRS Disk 1/Month
S70 LRS Disk 1/Month
S80 LRS Disk 1/Month
Snapshots LRS Snapshots 1 GB/Month

As the managed disk are not billed per storage unit but per disk, we do not care about the quantity in terms of 1/Month, as it doesn't tell us anything about the allocated storage per disk. Determining the allocated storage per disk is based on the provided disk storage lookup tables that are found in the managed disk pricing documentation. The following disk types and corresponding disk sizes where extracted from the documentation:

DiskType DiskSize
S4 32 GiB
S6 64 GiB
S10 128 GiB
S15 256 GiB
S20 512 GiB
S30 1 TiB
S40 2 TiB
S50 4 TiB
S60 8 TiB
S70 16 TiB
S80 32 TiB
E1 4 GiB
E2 8 GiB
E3 16 GiB
E4 32 GiB
E6 64 GiB
E10 128 GiB
E15 256 GiB
E20 512 GiB
E30 1 TiB
E40 2 TiB
E50 4 TiB
E60 8 TiB
E70 16 TiB
E80 32 TiB
P1 4 GiB
P2 8 GiB
P3 16 GiB
P4 32 GiB
P6 64 GiB
P10 128 GiB
P15 256 GiB
P20 512 GiB
P30 1 TiB
P40 2 TiB
P50 4 TiB
P60 8 TiB
P70 16 TiB
P80 32 TiB

Usage that are identified as managed disk storage will have the disk type determined by the MeterName property. The meter names for this usage is given on the form (DiskType) (Redundancy) Disk, and thus the disk type is simply determined by extracting the first substring from the MeterName, then the disk type is determined by lookup in the table above.

The storage related to managed disk redundancy capacities are given in both GB/Month and GiB/Hour. The estimated storage volume $V_{\text{managed disks}}$ in tibibytes (TiB) based on the daily aggregate $X_{\text{managed disks}}$ given in GB/Month is approximated by

$$ V_{\text{managed disks}} = \frac{730}{24} \times 0.931322575 \times \frac{1}{1024} \times X_{\text{managed disks}} $$

The estimated storage volume $V_{\text{managed disks}}$ in tibibytes (TiB) based on the daily aggregate $X_{\text{managed disks}}$ given in GiB/Hour is approximated by

$$ V_{\text{managed disks}} = \frac{1}{24} \times \frac{1}{1024} \times X_{\text{managed disks}} $$

NetApp Files

The NetApp Files storage volume is estimated based on the Azure amortized cost export. The method of estimation is based on the Microsoft Azure NetApp Files cost model documentation. The following criteria are used to identify storage cost related to NetApp Files:

Cost Export Property Relevant Values
MeterCategory Azure NetApp Files
ResourceType microsoft.netapp/netappaccounts
MeterName Standard Capacity, Ultra Capacity, Premium Capacity, Backup Capacity

The latter criteria will identify usage with the following MeterName values

MeterName UnitOfMeasure
Standard Capacity 1 GiB/Hour
Ultra Capacity 1 GiB/Hour
Backup Capacity 1 GiB/Month
Premium Capacity 1 GiB/Hour

For storage quantities given in GiB/Month, the estimated NetApp Files storage volume $V_{\text{netapp files}}$ in tibibytes (TiB) based on the daily aggregate $X_{\text{netapp files}}$ is given by

$$V_{\text{netapp files}} = \frac{730}{24} \times \frac{1}{1024} \times X_{\text{netapp files}}$$

For storage quantities given in GiB/Hour, the estimated NetApp Files storage volume $V_{\text{netapp files}}$ in tibibytes (TiB) based on the daily aggregate $X_{\text{netapp files}}$ is given by

$$ V_{\text{netapp files}} = \frac{1}{24} \times \frac{1}{1024} \times X_{\text{netapp files}} $$

Backup

The backup storage volume is estimated based on the Azure amortized cost export. The method of estimation is based on the Microsoft Azure Backup pricing documentation. The following criteria are used to identify storage cost related to backup:

Cost Export Property Relevant Values
MeterCategory Backup
MeterName Contains Data Stored
UnitOfMeasure 1 GB/Month

The latter criteria will identify usage with the following MeterName values

MeterName UnitOfMeasure
GRS Data Stored 1 GB/Month
LRS Data Stored 1 GB/Month
RA-GRS Data Stored 1 GB/Month
Archive GRS Data Stored 1 GB/Month

All storage quantites related to backup are given in GB/Month, thus the estimated backup storage volume $V_{\text{backup}}$ in tibibytes (TiB) based on the daily aggregate $X_{\text{backup}}$ is given by

$$V_{\text{backup}} = \frac{730}{24} \times \frac{1}{1024} \times 0.931322575 \times X_{\text{backup}}$$

SQL Database

The SQL database storage volume is estimated based on the Azure amortized cost export. The method of estimation is based on the Microsoft Azure SQL Database pricing documentation. The following criteria are used to identify storage cost related to SQL Database:

Cost Export Property Relevant Values
MeterCategory SQL Database
MeterName Contains Data Stored

The latter criteria will identify usage with the following MeterName values

MeterName UnitOfMeasure
Backup LRS Data Stored 1 GB/Month
LRS Data Stored 1 GB/Month
Data Stored 1 GB/Month
Backup ZRS Data Stored 1 GB/Month
Backup - RA-GRS Data Stored 1 GB/Month
Backup RA-GRS Data Stored 1 GB/Month
Backup - ZRS Data Stored 1 GB/Month
RA-GRS Data Stored 1 GB/Month
Business Critical Data Stored 1 GB/Month
Hyperscale Data Stored 1 GB/Month
General Purpose Data Stored 1 GB/Month
Backup - LRS Data Stored 1 GB/Month

All storage quantites related to SQL database in GB/Month, thus the estimated SQL database storage volume $V_{\text{SQL database}}$ in tibibytes (TiB) based on the daily aggregate $X_{\text{SQL database}}$ is given by

$$V_{\text{SQL database}} = \frac{730}{24} \times \frac{1}{1024} \times 0.931322575 \times X_{\text{SQL database}}$$

SQL Managed Instance

The SQL managed instance storage volume is estimated based on the Azure amortized cost export. The method of estimation is based on the Microsoft Azure SQL Managed Instance pricing documentation. The following criteria are used to identify storage cost related to SQL managed instance:

Cost Export Property Relevant Values
MeterCategory SQL Managed Instance
MeterName Contains Data Stored

The latter criteria will identify usage with the following MeterName values

MeterName UnitOfMeasure
LTR Backup RA-GRS Data Stored 1 GB/Month
RA-GRS Data Stored 1 GB/Month
Business Critical Data Stored 1 GB/Month
General Purpose Data Stored 1 GB/Month
LTR Backup LRS Data Stored 1 GB/Month

All storage quantites related to SQL managed instance are given in GB/Month, thus the estimated SQL managed instance storage volume $V_{\text{SQL MI}}$ in tibibytes (TiB) based on the daily aggregate $X_{\text{SQL MI}}$ is given by

$$V_{\text{SQL MI}} = \frac{730}{24} \times \frac{1}{1024} \times 0.931322575 \times X_{\text{SQL MI}}$$

Cosmos DB

The Cosmos DB storage volume is estimated based on the Azure amortized cost export. The method of estimation is based on the Microsoft Azure Cosmos DB pricing documentation. The following criteria are used to identify storage cost related to Cosmos DB:

Cost Export Property Relevant Values
MeterCategory Azure Cosmos DB
MeterName Contains Data Stored

The latter criteria will identify usage with the following MeterName values

MeterName UnitOfMeasure
Standard Data Stored 1 GB/Month
Backup Data Stored 1 GB/Month
Data Stored 1 GB/Month
General Purpose Storage Data Stored 1 GB/Month

All storage quantites related to Cosmos DB are given in GB/Month, thus the estimated Cosmos DB storage volume $V_{\text{cosmos db}}$ in tibibytes (TiB) based on the daily aggregate $X_{\text{cosmos db}}$ is given by

$$V_{\text{cosmos db}} = \frac{730}{24} \times \frac{1}{1024} \times 0.931322575 \times X_{\text{cosmos db}}$$

MySQL Database

The MySQL database storage volume is estimated based on the Azure amortized cost export. The method of estimation is based on the Microsoft Azure MySQL database pricing documentation. The following criteria are used to identify storage cost related to MySQL database:

Cost Export Property Relevant Values
MeterCategory Azure Database for MySQL
MeterName Contains Data Stored

The latter criteria will identify usage with the following MeterName values

MeterName UnitOfMeasure
Storage Data Stored 1 GB/Month
Backup LRS Data Stored 1 GB/Month
Basic Data Stored 1 GB/Month
General Purpose Data Stored 1 GB/Month
Backup Storage LRS Data Stored 1 GB/Month
Backup GRS Data Stored 1 GB/Month

All storage quantites related to MySQL database are given in GB/Month, thus the estimated MySQL database storage volume $V_{\text{mysql}}$ in tibibytes (TiB) based on the daily aggregate $X_{\text{mysql}}$ is given by

$$V_{\text{mysql}} = \frac{730}{24} \times \frac{1}{1024} \times 0.931322575 \times X_{\text{mysql}}$$

PostgreSQL Database

The PostgreSQL database storage volume is estimated based on the Azure amortized cost export. The method of estimation is based on the Microsoft Azure PostgreSQL database pricing documentation. The following criteria are used to identify storage cost related to PostgreSQL database:

Cost Export Property Relevant Values
MeterCategory Azure Database for PostgreSQL
MeterName Contains Data Stored

The latter criteria will identify usage with the following MeterName values

MeterName UnitOfMeasure
Storage Data Stored 1 GB/Month
Backup LRS Data Stored 1 GB/Month
Basic Data Stored 1 GB/Month
General Purpose Data Stored 1 GB/Month
Backup Storage LRS Data Stored 1 GB/Month
General Purpose Data Stored 1 GiB/Month

For storage quantites given in GB/Month, the estimated PostgreSQL database storage volume $V_{\text{postgres}}$ in tibibytes (TiB) based on the daily aggregate $X_{\text{postgres}}$ is given by

$$V_{\text{postgres}} = \frac{730}{24} \times \frac{1}{1024} \times 0.931322575 \times X_{\text{postgres}}$$

For storage quantites given in GiB/Month, the estimated PostgreSQL database storage volume $V_{\text{postgres}}$ in tibibytes (TiB) based on the daily aggregate $X_{\text{postgres}}$ is given by

$$V_{\text{postgres}} = \frac{1}{24} \times \frac{1}{1024} \times X_{\text{postgres}}$$