Snapshot Quotas – Beware!
“When creating a volume in Nimble Storage, the process is wizard driven, guiding you easily through the process. Whilst most settings are fairly explanatory, there is one section which might cause uncertainty with some.”
The section in red contains a number of volume settings and we usually recommend that these are kept to their defaults. Nevertheless it is important that you understand what they do as it could have implications on your services if these are changed beyond their default values.
Volume Reserve is an easy one; it enables thin provisioning.
The default setting is 0% which means the volume will be thin provisioned, so if we create a 1TB volume, it will not consume any free space from the pool until we start writing data to the volume, hence the available capacity in the pool remains unchanged.
So free space still reads 3.04TB on our array.
If we set the reserve to 100%, we are asking the system to reserve 100% of the space up front, ring-fencing the capacity from the pool so it cannot be assigned to another volume.
In this case, the amount of free space on the array now reads 2.04TB.
Volume Quota sets a hard limit on how much of the volume we can use.
If we set it to 80% of the volume size, we are telling the system that it cannot consume more than 0.8TB on that volume. I’m not aware of any scenarios where we would need to set a quota so we typically leave this at 100% i.e. use all of the assigned capacity.
Snapshot Reserve works a little bit like Volume Reserve, in that we can reserve an amount of space to be used by snapshots. Here we will specify 50% thus 0.5TB is to be reserved.
Notice it has consumed a further 0.5TB of space from the pool and the amount of unused reserve has increased.
Finally, we come to the most important setting – The Snapshot Quota.
By default this is set to unlimited and what this means is that when we take snapshots, any changed blocks will preserved and consume free space in the pool and we are not setting any limits on how much space it can consume.
By default this is set to unlimited and what this means is that when we take snapshots, any changed blocks will preserved and consume free space in the pool and we are not setting any limits on how much space it can consume.
If we set a snapshot quota of 50% and therefore 1GB, and we start changing or deleting data in the volume and consume more than 1GB, what will happen?
- The most recent snapshot will fail
- All the snapshots will fail
- The oldest snapshots will be deleted to free up space
- The volume will go offline
The Answer is number 4 – THE VOLUME WILL GO OFFLINE!
If we try to bring the volume online manually, it automatically goes off line again.
Why?
The reason for this is the snapshots are point in time backups, a method for preserving data and providing the ability to restore it if the need arises.
If blocks continue to change on the live volume, and there is nowhere to put these blocks because effectively there is no room because we have exceed the quota, then the system will NOT allow you to change any more data. It does this by taking the volume offline, to preserve the validity of your backups.
This is supported by the following excerpt from page 57 in the Nimble Storage Installation and Configuration Guide Nimble OS Version 2.1.0:
“Maximum allowed space for snapshots. If this value is exceeded, the volume is taken offline. Check the box for an unlimited snapshot quota.”
So, please take care if setting a Snapshot Quota. My advice would be to leave the default setting of unlimited, but if you must set a snapshot quota ensure you set a warning level so you are alerted well in advance of it running out of space.