# gluster volume info
Volume Name: test_vol
Type: Distribute
Volume ID: 74e21265-7060-48c5-9f32-faadaf986d85
Status: Started
Number of Bricks: 1
Transport-type: tcp
Bricks:
Brick1: VM1:/brick/brick-dirs1/brick
Options Reconfigured:
transport.address-family: inet
performance.readdir-ahead: on
nfs.disable: onVolume Name: test_vol1
Type: Distribute
Volume ID: b6698e0f-748f-4667-8956-ec66dd91bd84
Status: Started
Number of Bricks: 1
Transport-type: tcp
Bricks:
Brick1: VM2:/brick/brick-dirs/brick
Options Reconfigured:
transport.address-family: inet
performance.readdir-ahead: on
nfs.disable: on
# gluster snapshot create snap1 test_vol no-timestamp
snapshot create: success: Snap snap1 created successfully
# gluster snapshot create snap2 test_vol no-timestamp
snapshot create: success: Snap snap2 created successfully
# gluster snapshot create snap3 test_vol no-timestamp
snapshot create: success: Snap snap3 created successfully
# gluster snapshot create snap4 test_vol1 no-timestamp
snapshot create: success: Snap snap4 created successfully
# gluster snapshot create snap5 test_vol1 no-timestamp
snapshot create: success: Snap snap5 created successfully
# gluster snapshot create snap6 test_vol1 no-timestamp
snapshot create: success: Snap snap6 created successfully
# gluster snapshot list
snap1
snap2
snap3
snap4
snap5
snap6
#
Now we have 3 snapshots for each volume. To delete a snapshot we have to use the delete command along with the snap name.
# gluster snapshot delete snap1
Deleting snap will erase all the information about the snap. Do you still want to continue? (y/n) y
snapshot delete: snap1: snap removed successfully
# gluster snapshot list
snap2
snap3
snap4
snap5
snap6
#
We can also choose to delete all snapshots that belong to a particular volume. Before doing that let’s see what snapshots are present for volume “test_vol”. Apart from snapshot list, there is also snapshot info command that provides more elaborate details of snapshots. Like snapshot list, snapshot info can also take volume name as an option to show information of snapshots belonging to only that volume.
# gluster snapshot list test_vol
snap2
snap3
# gluster snapshot info volume test_vol
Volume Name : test_vol
Snaps Taken : 2
Snaps Available : 254
Snapshot : snap2
Snap UUID : d17fbfac-1cb1-4276-9b96-0b73b90fb545
Created : 2016-07-15 09:32:07
Status : StoppedSnapshot : snap3
Snap UUID : 0f319761-eca2-491e-b678-75b56790f3a0
Created : 2016-07-15 09:32:12
Status : Stopped
#
As we can see from both list and info command, test_vol has 2 snapshots snap2, and snap3. Instead of individually deleting these snapshots one by one, we can choose to delete all snapshots that belong to a particular volume, in this case test_vol.
# gluster snapshot delete volume test_vol
Volume (test_vol) contains 2 snapshot(s).
Do you still want to continue and delete them? (y/n) y
snapshot delete: snap2: snap removed successfully
snapshot delete: snap3: snap removed successfully
#
# gluster snapshot list
snap4
snap5
snap6
# gluster snapshot list test_vol
No snapshots present
# gluster snapshot info volume test_vol
Volume Name : test_vol
Snaps Taken : 0
Snaps Available : 256
#
With the above volume option we successfully deleted both the snapshots of test_vol with a single command. Now only 3 snapshots remain, and both belong to volume “test_vol1”. Before proceeding further let’s create one more snapshot for volume “test_vol”.
# gluster snapshot create snap7 test_vol no-timestamp
snapshot create: success: Snap snap7 created successfully
# gluster snapshot list
snap4
snap5
snap6
snap7
#
With this, we have four snapshots belonging, three of which belong to test_vol1, and one belongs to test_vol. Now with the ‘delete all’ command we will be able to delete all snapshots present irrespective of which volumes they belong to.
# gluster snapshot delete all
System contains 4 snapshot(s).
Do you still want to continue and delete them? (y/n) y
snapshot delete: snap4: snap removed successfully
snapshot delete: snap5: snap removed successfully
snapshot delete: snap6: snap removed successfully
snapshot delete: snap7: snap removed successfully
# gluster snapshot list
No snapshots present
#
So that is how you delete GlusterFS snapshots. There are some configurable options for Gluster snapshots, which can be viewed and modified using the snapshot config option.
# gluster snapshot config
Snapshot System Configuration:
snap-max-hard-limit : 256
snap-max-soft-limit : 90%
auto-delete : disable
activate-on-create : disableSnapshot Volume Configuration:
Volume : test_vol
snap-max-hard-limit : 256
Effective snap-max-hard-limit : 256
Effective snap-max-soft-limit : 230 (90%)Volume : test_vol1
snap-max-hard-limit : 256
Effective snap-max-hard-limit : 256
Effective snap-max-soft-limit : 230 (90%)
#
Just running the config option, as shown above displays the current configuration in the system. What we are looking at are the default configuration values. There are four different configurable parameters. Let’s go through them one by one.
# gluster snapshot config test_vol snap-max-hard-limit 2
Changing snapshot-max-hard-limit will limit the creation of new snapshots if they exceed the new limit.
Do you want to continue? (y/n) y
snapshot config: snap-max-hard-limit for test_vol set successfully
# gluster snapshot configSnapshot System Configuration:
snap-max-hard-limit : 256
snap-max-soft-limit : 90%
auto-delete : disable
activate-on-create : disableSnapshot Volume Configuration:
Volume : test_vol
snap-max-hard-limit : 2
Effective snap-max-hard-limit : 2
Effective snap-max-soft-limit : 1 (90%)Volume : test_vol1
snap-max-hard-limit : 256
Effective snap-max-hard-limit : 256
Effective snap-max-soft-limit : 230 (90%)
#
#
# gluster snapshot info volume test_vol
Volume Name : test_vol
Snaps Taken : 0
Snaps Available : 2
#
As can be seen with the config option, I have modified the snap-max-hard-limit for the volume test_vol to 2. This means after taking 2 snapshots it will not allow me to take any more snapshots, till I either delete one of them, or increase this value. See how the snapshot info for the volume test_vol shows ‘Snaps Available’ as 2.
# gluster snapshot create snap1 test_vol no-timestamp
snapshot create: success: Snap snap1 created successfully
# gluster snapshot create snap2 test_vol no-timestamp
snapshot create: success: Snap snap2 created successfully
Warning: Soft-limit of volume (test_vol) is reached. Snapshot creation is not possible once hard-limit is reached.
#
#
# gluster snapshot info volume test_vol
Volume Name : test_vol
Snaps Taken : 2
Snaps Available : 0
Snapshot : snap1
Snap UUID : 2ee5f237-d4d2-47a6-8a0c-53a887b33b26
Created : 2016-07-15 10:12:55
Status : StoppedSnapshot : snap2
Snap UUID : 2c74925e-4c75-4824-b39e-7e1e22f3b758
Created : 2016-07-15 10:13:02
Status : Stopped#
# gluster snapshot create snap3 test_vol no-timestamp
snapshot create: failed: The number of existing snaps has reached the effective maximum limit of 2, for the volume (test_vol). Please delete few snapshots before taking further snapshots.
Snapshot command failed
#
What we have done above is we created 2 snapshots for the volume test_vol and we reached it’s snap-max-hard-limit. Notice two things here, first is when we created the second snapshot it gave us a warning that the soft-limit is reached for this volume (we will come to the soft-limit in a while), and second is that the ‘Snaps Available’ in snapshot info has now become 0. As explained, when we try to take the third snapshot it fails to do so, while explaining that we have reached the maximum limit, and asking us to delete a few snapshots.
# gluster snapshot delete snap1
Deleting snap will erase all the information about the snap. Do you still want to continue? (y/n) y
snapshot delete: snap1: snap removed successfully
# gluster snapshot create snap3 test_vol no-timestamp
snapshot create: success: Snap snap3 created successfully
Warning: Soft-limit of volume (test_vol) is reached. Snapshot creation is not possible once hard-limit is reached.
#
# gluster snapshot config test_vol snap-max-hard-limit 3
Changing snapshot-max-hard-limit will limit the creation of new snapshots if they exceed the new limit.
Do you want to continue? (y/n) y
snapshot config: snap-max-hard-limit for test_vol set successfully
# gluster snapshot info volume test_vol
Volume Name : test_vol
Snaps Taken : 2
Snaps Available : 1
Snapshot : snap2
Snap UUID : 2c74925e-4c75-4824-b39e-7e1e22f3b758
Created : 2016-07-15 10:13:02
Status : StoppedSnapshot : snap3
Snap UUID : bfd080f3-848e-490a-83ed-066858bd96fc
Created : 2016-07-15 10:19:17
Status : Stopped# gluster snapshot create snap4 test_vol no-timestamp
snapshot create: success: Snap snap4 created successfully
Warning: Soft-limit of volume (test_vol) is reached. Snapshot creation is not possible once hard-limit is reached.
#
As seen above, once we delete a snapshot the system allows us to create another one. It also allows us to do so when we increase the snap-max-hard-limit. I am curious to see what happens when we have hit the snap-max-hard-limit, and I go ahead and further decrease the limit. Does the system delete snapshots to bring the number of snapshots to the set limit.
# gluster snapshot config test_vol snap-max-hard-limit 1
Changing snapshot-max-hard-limit will limit the creation of new snapshots if they exceed the new limit.
Do you want to continue? (y/n) y
snapshot config: snap-max-hard-limit for test_vol set successfully
# gluster snapshot configSnapshot System Configuration:
snap-max-hard-limit : 256
snap-max-soft-limit : 90%
auto-delete : disable
activate-on-create : disableSnapshot Volume Configuration:
Volume : test_vol
snap-max-hard-limit : 1
Effective snap-max-hard-limit : 1
Effective snap-max-soft-limit : 0 (90%)Volume : test_vol1
snap-max-hard-limit : 256
Effective snap-max-hard-limit : 256
Effective snap-max-soft-limit : 230 (90%)
# gluster snapshot info volume test_vol
Volume Name : test_vol
Snaps Taken : 3
Snaps Available : 0
Snapshot : snap2
Snap UUID : 2c74925e-4c75-4824-b39e-7e1e22f3b758
Created : 2016-07-15 10:13:02
Status : StoppedSnapshot : snap3
Snap UUID : bfd080f3-848e-490a-83ed-066858bd96fc
Created : 2016-07-15 10:19:17
Status : StoppedSnapshot : snap4
Snap UUID : bd9a5297-0eb5-47d1-b250-9b57f4e57427
Created : 2016-07-15 10:20:08
Status : Stopped#
# gluster snapshot create snap5 test_vol no-timestamp
snapshot create: failed: The number of existing snaps has reached the effective maximum limit of 1, for the volume (test_vol). Please delete few snapshots before taking further snapshots.
Snapshot command failed
#
So the answer to that question is a big NO. We don’t explicitly delete snapshots when you decrease the snap-max-hard-limit to a number below the current number of snapshots. The reason for not doing so, is it will become very easy to lose important snapshots. However, what we do is, we do not allow you to create snapshots, till you… (yeah you guessed it right), either delete a snapshot or increase the snap-max-hard-limit.
snap-max-hard-limit is both a system config and a volume config. What it means is we can set this value for indiviudal volumes, and we can also set a system value.
# gluster snapshot config snap-max-hard-limit 10
Changing snapshot-max-hard-limit will limit the creation of new snapshots if they exceed the new limit.
Do you want to continue? (y/n) y
snapshot config: snap-max-hard-limit for System set successfully
# gluster snapshot configSnapshot System Configuration:
snap-max-hard-limit : 10
snap-max-soft-limit : 90%
auto-delete : disable
activate-on-create : disableSnapshot Volume Configuration:
Volume : test_vol
snap-max-hard-limit : 1
Effective snap-max-hard-limit : 1
Effective snap-max-soft-limit : 0 (90%)Volume : test_vol1
snap-max-hard-limit : 256
Effective snap-max-hard-limit : 10
Effective snap-max-soft-limit : 9 (90%)
#
Notice, how not mentioning a volume name for a snapshot config, sets that particular config for the whole system, instead of a particular volume. The same is clearly visible in the ‘Snapshot System Configuration’ section of the snapshot config output. Look at this system option as an umbrella limit for the entire cluster. You are allowed to still configure individual volume’s snap-max-hard-limit. If the individual volume’s limit is lesser than the system’s limit, then it will be honored, else the system limit will be honored.
For example, we can see that the system snap-max-hard-limit is set to 10. Now, in case of the volume test_vol, the snap-max-hard-limit for the volume is set to 1, which is lower than the system’s limit and is hence honored, making the effective snap-max-hard-limit as 1. This effective snap-max-hard-limit is the limit that is taken into consideration during snapshot create, and is displayed as ‘Snaps Available’ in snapshot info. Similarly, for volume test_vol1, the snap-max-hard-limit is 256, which is higher than the system’s limit, and is hence not honored, making the effective snap-max-hard-limit of that volume as 10, which is the system’s snap-max-hard-limit. Pretty intuitive huh!!!
# gluster snapshot config test_vol snap-max-soft-limit 50
Soft limit cannot be set to individual volumes.
Usage: snapshot config [volname] ([snap-max-hard-limit <count>] [snap-max-soft-limit <percent>]) | ([auto-delete <enable|disable>])| ([activate-on-create <enable|disable>])
#
So what do we have here… Yes, the snap-max-soft-limit is a system option only and cannot be set to individual volumes. When the snap-max-soft-limit option is set for the system, it applies on the effective snap-max-hard-limit of individual volumes, to get the effective snap-max-soft-limit of those respective volumes.
# gluster snapshot config snap-max-soft-limit 50
If Auto-delete is enabled, snap-max-soft-limit will trigger deletion of oldest snapshot, on the creation of new snapshot, when the snap-max-soft-limit is reached.
Do you want to change the snap-max-soft-limit? (y/n) y
snapshot config: snap-max-soft-limit for System set successfully
# gluster snapshot configSnapshot System Configuration:
snap-max-hard-limit : 10
snap-max-soft-limit : 50%
auto-delete : disable
activate-on-create : disableSnapshot Volume Configuration:
Volume : test_vol
snap-max-hard-limit : 1
Effective snap-max-hard-limit : 1
Effective snap-max-soft-limit : 0 (50%)Volume : test_vol1
snap-max-hard-limit : 256
Effective snap-max-hard-limit : 10
Effective snap-max-soft-limit : 5 (50%)
#
As we can see above, on setting the option for the system, it applies to the individual volume’s (see test_vol1) snap-max-soft-limit, to procure that particular volume’s snap-max-soft-limit.
I am sure the keen-eyed observer in you has noticed, the Auto-delete warning in the output above, and it’s just as well because it is our third configurable parameter.
NOTE: Extreme Caution Should Be Exercised When Enabling This Option, As It Automatically Deletes The Oldest Snapshot Of A Volume, When The Number Of Snapshots For That Volume Exceeds The Effective snap-max-soft-limit Of That Volume.
# gluster snapshot config auto-delete enable
snapshot config: auto-delete successfully set
# gluster snapshot configSnapshot System Configuration:
snap-max-hard-limit : 10
snap-max-soft-limit : 50%
auto-delete : enable
activate-on-create : disableSnapshot Volume Configuration:
Volume : test_vol
snap-max-hard-limit : 1
Effective snap-max-hard-limit : 1
Effective snap-max-soft-limit : 0 (50%)Volume : test_vol1
snap-max-hard-limit : 256
Effective snap-max-hard-limit : 10
Effective snap-max-soft-limit : 5 (50%)
#
# gluster snapshot list
snap2
snap3
snap4
# gluster snapshot delete all
System contains 3 snapshot(s).
Do you still want to continue and delete them? (y/n) y
snapshot delete: snap2: snap removed successfully
snapshot delete: snap3: snap removed successfully
snapshot delete: snap4: snap removed successfully
# gluster snapshot create snap1 test_vol1 no-timestamp
snapshot create: success: Snap snap1 created successfully
# gluster snapshot create snap2 test_vol1 no-timestamp
snapshot create: success: Snap snap2 created successfully
# gluster snapshot create snap3 test_vol1 no-timestamp
snapshot create: success: Snap snap3 created successfully
# gluster snapshot create snap4 test_vol1 no-timestamp
snapshot create: success: Snap snap4 created successfully
# gluster snapshot create snap5 test_vol1 no-timestamp
snapshot create: success: Snap snap5 created successfully
In the above example, we first set the auto-delete option in snapshot config, followed by deleting all the snapshots currently in the system. Then we create 5 snapshots for test_vol1, whose effective snap-max-soft-limit is 5. On creating one more snapshot, we will exceed the limit, and the oldest snapshot will be deleted.
# gluster snapshot create snap6 test_vol1 no-timestamp
snapshot create: success: Snap snap6 created successfully
#
# gluster snapshot list volume test_vol1
snap2
snap3
snap4
snap5
snap6
#
As soon as we create snap6, the total number of snapshots become 6, thus exceeding the effective snap-max-soft-limit for test_vol1. The oldest snapshot for test_vol1(which is snap1) is then deleted in the background, bringing the total number of snapshots to 5.
# gluster snapshot status snap6
Snap Name : snap6
Snap UUID : 7fc0a0e7-950d-4c1b-913d-caea6037e633Brick Path : VM2:/var/run/gluster/snaps/db383315d5a448d6973f71ae3e45573e/brick1/brick
Volume Group : snap_lvgrp
Brick Running : No
Brick PID : N/A
Data Percentage : 1.80
LV Size : 616.00m#
# gluster snapshot config activate-on-create enable
snapshot config: activate-on-create successfully set
# gluster snapshot configSnapshot System Configuration:
snap-max-hard-limit : 10
snap-max-soft-limit : 50%
auto-delete : enable
activate-on-create : enableSnapshot Volume Configuration:
Volume : test_vol
snap-max-hard-limit : 1
Effective snap-max-hard-limit : 1
Effective snap-max-soft-limit : 0 (50%)Volume : test_vol1
snap-max-hard-limit : 256
Effective snap-max-hard-limit : 10
Effective snap-max-soft-limit : 5 (50%)
# gluster snapshot create snap7 test_vol1 no-timestamp
snapshot create: success: Snap snap7 created successfully
# gluster snapshot status snap7Snap Name : snap7
Snap UUID : b1864a86-1fa4-4d42-b20a-3d95c2f9e277Brick Path : VM2:/var/run/gluster/snaps/38b1d9a2f3d24b0eb224f142ae5d33ca/brick1/brick
Volume Group : snap_lvgrp
Brick Running : Yes
Brick PID : 6731
Data Percentage : 1.80
LV Size : 616.00m#
As can be seen when this option was disabled, snap6 wasn’t activated by default. After enabling this option, snap7 on creation was in activated state. In the next post we will be discussing snapshot restore and snapshot clone.
2020 has not been a year we would have been able to predict. With a worldwide pandemic and lives thrown out of gear, as we head into 2021, we are thankful that our community and project continued to receive new developers, users and make small gains. For that and a...
It has been a while since we provided an update to the Gluster community. Across the world various nations, states and localities have put together sets of guidelines around shelter-in-place and quarantine. We request our community members to stay safe, to care for their loved ones, to continue to be...
The initial rounds of conversation around the planning of content for release 8 has helped the project identify one key thing – the need to stagger out features and enhancements over multiple releases. Thus, while release 8 is unlikely to be feature heavy as previous releases, it will be the...