NetApp capacity pool larger than its volumes need
An Azure NetApp Files capacity pool provisioned well above the capacity its volumes have claimed, billing for tebibytes nothing can use.
Why it happens
Azure NetApp Files bills for the provisioned size of a capacity pool regardless of how much of it the volumes inside claim, so a pool sized for a workload that never arrived costs the same as a full one. Microsoft states the resize rule exactly: pools resize in 1 TiB decrements down to the capacity allocated to their volumes, with a minimum of 1 TiB. That makes the reclaimable amount arithmetic rather than an estimate. Metering is hourly, so a resize reduces the bill from that hour onward and can be reversed just as quickly. The Flexible service level provisions throughput independently of capacity, so its pools are reported without a priced saving.
Paste this into Resource Graph Explorer in the Azure portal.
resources
| where type =~ 'microsoft.netapp/netappaccounts/capacitypools'
// Scope below matches CloudFinOpsPro policy DEFAULTS: exclusions.protectTag, environment.tagKeys,
// environment.allowedTagValues, and allowUntagged false so an untagged resource counts as production.
// If your policy.yaml differs, edit the three lines below or this will disagree with your own agent.
| where tolower(tostring(coalesce(tags['cfop:protect'], ''))) !in ('true', 'yes', '1')
| extend cfopEnv = tolower(trim(' ', tostring(coalesce(tags['Environment'], tags['environment'], tags['env'], ''))))
| where cfopEnv in ('dev', 'development', 'test', 'qa', 'sandbox', 'nonprod', 'non-prod', 'staging')
| extend poolTiB = toreal(properties.size) / (1024 * 1024 * 1024 * 1024)
| project pool = name, resourceGroup, location,
serviceLevel = tostring(properties.serviceLevel),
provisionedTiB = round(poolTiB, 2)
| order by provisionedTiB descYou are billed for the provisioned pool size whatever the volumes use. To see the gap, list microsoft.netapp/netappaccounts/capacitypools/volumes and sum usageThreshold per pool; a pool can only shrink to that total, in whole tebibytes.
Applies to microsoft.netapp/netappaccounts/capacitypoolsWhat the agent does about it
An Azure NetApp Files capacity pool provisioned well above the capacity its volumes have claimed, billing for tebibytes nothing can use.
It will not fix this one
It finds it and tells you what to change. The change itself is yours to make, because it is not one the agent should make on your behalf.
Related checks
Expired or orphaned snapshot
A snapshot past its retention window whose source disk no longer exists.
Premium SSD paying to burst and never bursting
A Premium SSD with on-demand bursting switched on that has not burst once in the window, so the flat monthly enablement fee is buying a capability the workload never reaches for.
Hot-tier blob data that nothing has touched
Blob data held in the Hot access tier on an account that recorded no transactions at all over the window, where the Cool tier would bill less for the same bytes.