Skip to main content
NetApp Knowledge Base

What is an over-committed aggregate?

Views:
8,357
Visibility:
Public
Votes:
10
Category:
ontap-9
Specialty:
CORE
Last Updated:

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? 
  1. Sum the Maximum Autosize configured for each RW volume in the aggregate

Note: If -autosize-mode is off, use the Total volume size. 

  1. For every DP volume in the aggregate, use the Total volume size. 
  2. The sum should come to very close to the over-committed size if larger than aggregate size. 

 

NetApp provides no representations or warranties regarding the accuracy or reliability or serviceability of any information or recommendations provided in this publication or with respect to any results that may be obtained by the use of the information or observance of any recommendations provided herein. The information in this document is distributed AS IS and the use of this information or the implementation of any recommendations or techniques herein is a customer's responsibility and depends on the customer's ability to evaluate and integrate them into the customer's operational environment. This document and the information contained herein may be used solely in connection with the NetApp products discussed in this document.