Skip to main content

NetApp_Insight_2020.png 

NetApp Knowledgebase

What is an over-committed aggregate?

Views:
201
Visibility:
Public
Votes:
0
Category:
data-ontap-7
Specialty:
core
Last Updated:

Applies to

Data ONTAP 7 and earlier

Answer

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?

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":
filer> df -Ah
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:
filer> df -Ah
Aggregate total used avail capacity
aggr1 705GB 71GB 634GB 10%
aggr1/.snapshot 37GB 133MB 37GB 0%
After enabling volume guarantee on "test":
filer> df -Ah
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 "aggr show_space"
This command will illustrate the accurate amount of space actually being used, regardless of guarantees.
aggr show_space with volume guarantee on for "test":
filer> aggr show_space aggr1 -h
Aggregate 'aggr1'
Total space    WAFL reserve   Snap reserve   Usable space   BSR NVLOG
825GB          82GB           37GB           705GB          1180MB
Space allocated to volumes in the aggregate
Volume       Allocated    Used    Guarantee
syncdest     50GB         214MB   volume
test         100GB*       816KB   volume
Aggregate    Allocated   Used     Avail
Total space  150GB       215MB    554GB
Snap reserve 37GB        133MB    37GB
WAFL reserve 82GB        1207MB   81GB
*Note how the allocation of the volume "test" greatly differs from the "used".
aggr show_space with volume guarantee disabled for "test":
filer> aggr show_space aggr1 -h
Aggregate 'aggr1'
Total space    WAFL reserve    Snap reserve   Usable space   BSR NVLOG
825GB          82GB            37GB           705GB          1180MB
Space allocated to volumes in the aggregate
Volume       Allocated    Used    Guarantee
syncdest     50GB         214MB   volume
test         868KB*       868KB   none
Aggregate    Allocated    Used    Avail
Total space  50GB         215MB   654GB
Snap reserve 37GB         133MB   37GB
WAFL reserve 82GB         1207MB  81GB
*Notice how "test" is showing only 868KB used - this is because the "20GB" inside of the volume is actually a LUN with space reservations turned on - but no data inside of it. Additionally, note how the space allocated matches the space used. This is how the filer sees the space in a volume with no guarantee versus one with guarantee enabled.