PowerVault ME4: What is Overcommitment and how does it work?
Summary: This article details the basic tenets of overcommitment on the PowerVault ME4 series and how to calculate the same.
Resolution
Table of Contents
- What is Overcommitment and how does it work?
- Where to see Overcommitment information or issues in the logs?
- What is the Metadata Index size?
- What is the 16GiB address table?
- What is the maximum overcommitment limit?
- What is the difference between Shared Data, Unique Data, and Snap Data?
- Should the Unique Data (show snapshots type all) and Allocated Size (show snapshot-space) values match?
- How to calculate how much space is committed, and where it is committed to?
Question: What is Overcommitment and how does it work?
Answer:
Overcommitted means that the total committed size of all virtual volumes, including snapshots, exceeds the physical space in the virtual pool.
This feature is specific to Virtual Storage. NOT applicable for Linear.
This feature allows overcommitting physical storage resources enabling the operating system to operate as though it has more storage space than is physically allocated.
Every Volume, including snapshots, created in the Array consumes Metadata Indexes from the Virtual Pool storage space.
In general, the FW supports a maximum of 1 PiB of Metadata per Virtual Pool.
For example, consider a storage array with 100 TB of usable pool space on Pool A.
With "Overcommitment" Disabled, its ONLY possible create Volumes (including Snapshots) to a max of 100 TB, the configuration cannot go beyond 100 TB of Metadata Index.
With "Overcommitment" Enabled, the FW allows the creation of Volumes (including Snapshots) beyond the 100 TB Physical Limit, as the FW supports a max of 1 PiB of Metadata Index.
Thus, the system can create Volumes (including Snapshots) to a max of 1 PiB per Pool. This is described in further detail in the question, "What is the metadata index size?"
Question: Where to see Overcommitment information/issues in the logs?
Answer:
When overcommitment information is seen in the GUI, event IDs show in the event logs. Below are some example event codes.
Event ID 473 - The indicated volume is using more than its threshold percentage of its virtual pool. This is an indication that the storage usage crossed the user-specified threshold for this volume.
Event ID 573 - Warning Allocated snapshot space for a virtual pool cannot be reduced because no snapshots are deletable.
Event ID 571 - Error Allocated snapshot space exceeded the configured percentage limit of the virtual pool.
Note: More event codes and their explanations can be found in the Owner’s Guide.
Question: What is the Metadata Index size? What is the 16GiB address table?
Answer:
The maximum supported number of metadata index entries is 65312. When calculating physically addressable space, multiply the Metadata Index entries by the address table.
This equates to approx. 1 PiB, which is 1,048,576 GiB.
Question: What is the maximum overcommitment limit?
Answer:
In general, the FW supports a maximum of 1 PiB of Metadata per Virtual Pool.
With the "Overcommitment" feature Disabled, the Pool ONLY allows using Metadata to a max of the storage space available.
With the "Overcommitment" feature Enabled, the Pool allows using Metadata to a max of 1 PiB per Pool which is the FW limit.
Question: What is the difference between Shared Data, Unique Data, and Snap Data?
Answer:
Snap Data: The total amount of write data associated with the snapshot.
In other words: the Volume Allocation Information for the parent Volume of the Snapshot when the snapshot was originally taken. That is the committed size of the volume when the snapshot was taken.
Unique Data: The amount of write data that is unique to the snapshot.
In other words: this is the data that is changed or modified from the original volume
Shared Data: The amount of write data that is shared between this snapshot and other snapshots.
In other words: This is the data that is not changed or modified from the original volume when the snapshot is taken.
Also, "Shared Data + Unique Data" is approximately equal to the "Snap Data."
Question: Should the Unique Data (show snapshots type all) and Allocated Size (show snapshot-space) values match?
Answer:
As per the design, Unique Data (modified data) should match the Allocated Size value. The unique data is the snapshot’s physical data size, this unique data uses the snapshot space.
For Configurations with ONLY snapshots configured, the Sum of the Unique Data of all snapshots equals the Total Snapshot allocated size that is reported.
For Configurations with Replication configured, the Sum of the Unique Data of all Snapshots associated with standard snapshots plus the Unique Data of the snapshots associated with Replication tasks.
However, in general, the show snapshot output does not report the "Snap Data" or "Shared Data" or "Unique Data". This is why "show snapshots type all" command is used.
Example:
For configurations with Replication setup, the FW maintains three snapshots for each Replication Task (S1, S2, and S3).
The value for the snapshot "S3" is what is replicated after the initial replication.
On the subsequent Replication schedule, when S3 becomes S2 the "show snapshots" data reports all the associated data information in the Table.
While replication is occurring, the values of each "S3" are not reported in the logs. Also, there are no CLI commands to report this information. This means that when replication is occurring, a discrepancy between Unique Data and Allocated Size, may be viewed.
This is the expected behavior.
Pool Name URL Creation Date/Time Status Status-Reason Parent Volume Base Vol Base Vol Snaps TreeSnaps Snap-Pool Snap Data Unique Data Shared Data Retention Priority
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
A ESXI.S1 2020-02-03 19:48:09 Available N/A ESXI ESXI 0 8 N/A 7580.4GB 0B 7580.4GB never-delete
A ESXI.S2 2020-02-03 19:48:09 Available N/A ESXI ESXI 0 8 N/A 7580.4GB 7767.8MB 7572.6GB never-delete
A ESXI.S3 2020-02-03 19:48:10 Available N/A ESXI ESXI 0 8 N/A 0B 0B 0B never-delete
A ESXIs01_S0003 2020-03-02 05:01:10 Available N/A ESXI ESXI 0 8 N/A 6988.9GB 344.6GB 6644.2GB never-delete
A ESXIs01_S0004 2020-03-03 05:01:08 Available N/A ESXI ESXI 0 8 N/A 7042.6GB 22.2GB 7020.3GB never-delete
A ESXIs01_S0005 2020-03-04 05:01:08 Available N/A ESXI ESXI 0 8 N/A 7045.4GB 49.8GB 6995.5GB never-delete
A ESXIs01_S0006 2020-03-05 05:01:15 Available N/A ESXI ESXI 0 8 N/A 7580.0GB 19.3GB 7560.6GB never-delete
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Question: How to calculate how much space is committed, and where it is committed to?
Answer:
Committed space is the size of all virtual volumes + snapshot metadata size.
The GUI does not show where all the space is committed per volumes or snapshots. This must be calculated from logs and/or CLI commands.
The output from "show pools" and "show volumes" is needed.
Example:
Screenshot from GUI information showing overcommitment on Pool A but none on Pool B

Screenshot of more detail on Pool A

Example output from "show pools".
Name Serial Number Class Blocksize Total Size Avail Snap Size OverCommit Disk Groups Volumes Low Thresh Mid Thresh High Thresh Sec Fmt Health Reason Action
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
A 00c0ff50ae66000081562a5e01000000 Virtual 512 35.2TB 29.5TB 1437.9GB Enabled 2 105 50.00 % 75.00 % 99.39 % 512e OK
B 00c0ff50ae0600009f562a5e01000000 Virtual 512 35.2TB 23.9TB 1305.3GB Enabled 2 108 50.00 % 75.00 % 99.39 % 512e OK
Example output from "show volumes" – truncated or modified to show where data comes from for following tables and calculations
Pool Name Total Size Alloc Size Class Type Large Virtual Extents Health Reason Action
-------------------------------------------------------------------------------------------------------------------------
B D-ADPSVR2 XXX.XGB XXX.XGB Virtual base Disabled OK
B D-ADPSVR2s01_S0011 XXX.XGB XXX.XGB Virtual snapshot Disabled OK
Steps to calculate Overcommitment
Use the following values from the commands, setting up in a table or excel is suggested.
show pools = Total Size, Avail, Snap Size
show volumes = Total Size, Alloc Size
To break down the data into usable form to show where data is committed. Below is a table of what fields to look at and where to pull the data from.
| Name |
CLI command |
Column/Field |
Modifier 1 |
Modifier 2 |
Calculation |
| Total Size |
show pools |
Total Size |
|
Convert to a common denominator (MB/GB/TB) |
N/A |
| Avail / Free |
show pools |
Avail |
|
Convert to a common denominator (MB/GB/TB) |
N/A |
| Snapshot Used |
show pools |
Snap Size |
|
Convert to a common denominator (MB/GB/TB) |
N/A |
| Volume Total Size |
show volumes |
Total Size |
"base" items in Type Column |
Convert to a common denominator (MB/GB/TB) |
Add all tems together |
| Volume Allocated Size |
show volumes |
Alloc Size |
"base" items in Type Column |
Convert to a common denominator (MB/GB/TB) |
Add all tems together |
| Total Snapshot Size |
show volumes |
Total Size |
"snapshot" items in Type Column |
Convert to a common denominator (MB/GB/TB) |
Add all tems together |
| Snapshot Allocated |
show volumes |
Alloc Size |
"snapshot" items in Type Column |
Convert to a common denominator (MB/GB/TB) |
Add all tems together |
Note: Allocated values can be used to see how much space is in use on the system.
Example from the customer system
| Title |
Pool A (in GB) |
Pool B (in GB) |
| Total Size |
35200 |
35200 |
| Avail / Free |
29500 |
23900 |
| Snapshot Used |
1437.9 |
1305.3 |
| Volume Total Size |
12246.2 |
12578.4 |
| Volume Allocated Size |
4231.0952 |
9910.8845 |
| Total Snapshot Size |
29979.3 |
16762.9 |
| Snapshot Allocated |
16922.1 |
10974.2117 |
Now calculate the committed and/or overcommitted information per pool.
Committed: Volume Total Size + Total Snapshot Size
| Pool |
Volume Total Size |
Total Snapshot Size |
Committed |
| A |
12246.2 |
29979.3 |
42225.5 |
| B |
12578.4 |
16762.9 |
29341.3 |
Overcommitted: Committed - Total Size
| Pool |
Committed |
Total Size |
Overcommitted |
| A |
42225.5 |
35200 |
7025.5 |
| B |
29341.3 |
35200 |
-5858.7 |
Note: On the subject of overcommitted values. Positive values mean the pool is overcommitted. Negative values mean that the pool is not overcommitted.
From the example:
A is overcommitted by 7025.5 GB
B is not overcommitted as the number is negative.