What is an over-committed aggregate?
Applies to
- ONTAP 9
- Data ONTAP 8
- Data ONTAP operating in 7-Mode
- Aggregate
Additional Information
- What is an over-committed aggregate?
- Why do I see space available on my volume, but my filer tells me I don't have any space left on my device?
- Why do I need volume guarantees enabled?
- How do I find out how much space I am actually using in my aggregate?
Answer
What is an over-committed aggregate?
An over-committed aggregate is one in which the total space allocated to volumes exceeds that of what is allowable by the containing aggregate. This situation will arise when volume guarantees are turned off. When this happens, the amount of space taken by the volume will only reflect the amount of data inside of that volume. So if someone creates a volume as 100GB and only has 20GB inside of the volume, df -A will only show that volume as using 20GB if volume guarantees are not enabled. If guarantees are turned on, that volume will show as using 100GB.
Example:
Before creating volume "test":
df -A -h
Aggregate total used avail capacity
aggr1 705GB 51GB 654GB 7%
aggr1/.snapshot 37GB 133MB 37GB 0%
After creating 100GB volume "test" with no guarantee and 20GB of data:
df -A -h
Aggregate total used avail capacity
aggr1 705GB 71GB 634GB 10%
aggr1/.snapshot 37GB 133MB 37GB 0%
After enabling volume guarantee on "test":
df -A -h
Aggregate total used avail capacity
aggr1 705GB 151GB 554GB 21%
aggr1/.snapshot 37GB 133MB 37GB 0%
Why do I see space available on my volume, but my filer tells me I don't have any space left on my device?
An aggregate becomes over-committed by creating a situation where the volume allocation exceeds the aggregate allocation. If one creates an aggregate of 500GB, then they are limited to 500GB of free space (after WAFL overhead). If volume guarantees are on, then you could create five 100GB volumes and the aggregate would show 100% space used in df -A. However, if volume guarantees are disabled, you could create as many 100GB volumes as you wanted, and the aggregate would only see the data inside of the volumes as taken. When this happens, the volumes will fill over time as they are used, and once they reach a total of 500GB used, the aggregate will show as full and no more writes can take place on that aggregate, even if the individual volumes have not been filled.
Why do I need volume guarantees enabled?
Volume guarantees need to be enabled in a majority of cases to avoid a situation where one can no longer write to aggregate due to lack of space. If volume guarantees are on, the space usage can be monitored on a per-volume basis, and there is an accurate representation of what you want to allocate versus what you are using. You are avoiding a situation of not knowing when you are running out of space by guaranteeing you have space available.
How do I find out how much space I am actually using in my aggregate?
Df and df -A, when used together, can help illustrate how much space is actually on an aggregate versus how much the volumes are using. However, these commands can be misinterpreted and, occasionally, inaccurate. The best way to show how much space is being used vs. being allocated is to compare the output of df -h
and the storage aggregate show-space
-commands. This will illustrate the accurate amount of space actually being used, regardless of guarantees.
With volume guarantee enabled for "test"
df -h test
Filesystem total used avail capacity
/vol/test/ 95GB 264KB 94GB 0%
/vol/test/.snapshot 5120MB 0B 5120MB 0%
storage aggregate show-space -aggregate-name aggr1
Aggregate : aggr1
Feature Used Used%
-------------------------------- ---------- ------
Volume Footprints 102.1GB 3% << reserved for data+ metadata + snapreserve
Aggregate Metadata 468KB 0%
Snapshot Reserve 0B 0%
Total Used 102.1GB 3%
Total Physical Used 275.0MB 0%
*Note how the footprint of the volume "test" greatly differs from the "used".
With volume guarantee disabled for "test":
df -h test
Filesystem total used avail capacity
/vol/test/ 95GB 304KB 94GB 0%
/vol/test/.snapshot 5120MB 216KB 5119MB 0%
storage aggregate show-space -aggregate-name aggr1
Aggregate : aggr1
Feature Used Used%
-------------------------------- ---------- ------
Volume Footprints 1.93GB 0% << data used + metadata + snapreserve
Aggregate Metadata 556KB 0%
Snapshot Reserve 0B 0%
Total Used 1.93GB 0%
Total Physical Used 278.2MB 0%
How to verify if an aggregate is overcommitted?
- Sum the Maximum Autosize configured for each RW volume in the aggregate
Note: If -autosize-mode is off, use the Total volume size.
- For every DP volume in the aggregate, use the Total volume size.
- The sum should come to very close to the over-committed size if larger than aggregate size.