ZFS-SNAPSHOT-MGMT(8) BSD System Manager's Manual ZFS-SNAPSHOT-MGMT(8)NAMEzfs-snapshot-mgmt — automate creation of new and removal of stale ZFS
snapshots
SYNOPSISzfs-snapshot-mgmtDESCRIPTION
The utility creates ZFS snapshots and removes snapshots it has created
that are stale. Rules for creating and removing are defined in the con‐
figuration file.
zfs-snapshot-mgmt is designed to be run by the cron(8) utility.
CONFIGURATIONzfs-snapshot-mgmt reads settings from the
/usr/local/etc/zfs-snapshot-mgmt.conf file.
General Structure
The file is in the YAML format: it contains keys and values separated by
a colon (:). Each value may span multiple lines and be a list or a map
with key-value pairs. The indentation is always a multiple of two spaces.
There are two top-level options:
snapshot_prefix
prefix for snapshots created and recognised by this tool. All cre‐
ated snapshots will have names consisting of this prefix and cur‐
rent date and time. Only snapshots beginning with this prefix will
be considered for removal.
filesystems
the main part of configuration - specifies rules for creating and
removing snapshots at each filesystem. The value for this key con‐
tains keys for each filesystem (as seen by ZFS, e.g. tank/home)
with snapshot creation and preservation settings.
There is an example configuration in the EXAMPLES section.
Creation Rules
For each filesystem there is one snapshot creation_rule defined. It
specifies when snapshots for the particular filesystem should be created.
It has two parameters. All values are specified in minutes.
at_multiple
defines how often should a snapshot be created. E.g. a value of 60
means that a snapshot is to be created every hour.
offset
defines an offset from midnight that is to be applied to the param‐
eter. E.g. specifying a value of 30 means that the first snapshot
will be taken 30 minutes after midnight.
Preservation Rules
These rules specify which of the created snapshots should be preserved.
All that do not match the any of the rules and whose names begin with
snapshot_prefix are destroyed.
Each of the rules has three parameters:
for_minutes
specifies how long after snapshot creation is the rule applicable.
at_multiple
analogous to the same parameter for creation_rule - snapshots whose
creation time (in minutes since midnight) is a multiple of this
value are retained.
offset
analogous to the same parameter for creation_rule - applies to
at_multiple.
EXAMPLES
Crontab Configuration
To invoke the program every five minutes you may add the following line
to the /etc/crontab configuration file:
*/5 * * * * root /usr/local/bin/zfs-snapshot-mgmt
Bear in mind that this effectively limits the resolution to 5 minutes.
zfs-snapshot-mgmt.conf
Here is an example configuration.
snapshot_prefix: auto-
filesystems:
tank/usr/home:
creation_rule:
at_multiple: 5
offset: 0
preservation_rules:
- { for_minutes: 90, at_multiple: 0, offset: 0 }
- { for_minutes: 720, at_multiple: 30, offset: 0 }
- { for_minutes: 10080, at_multiple: 180, offset: 120 }
tank/usr:
recursive: true
creation_rule:
at_multiple: 1440
offset: 1200
preservation_rules:
- { for_minutes: 5760, at_multiple: 1440, offset: 1200 }
which specifies the following settings:
· names of created snapshots start with auto- and only such snapshots
are considered for removal.
· there are two filesystems: tank/usr/home and tank/usr.
· snapshots for tank/usr/home are created every five minutes, starting
at midnight.
· all snapshots for tank/usr/home are kept for 90 minutes after cre‐
ation.
· only snapshots created af full and half hour are retained for 12
hours (720 minutes) after creation for tank/usr/home.
· snapshots created at multiple of three hours starting with 2 a.m. are
retained for a week (10080 minutes) after creation for tank/usr/home.
This means: 2 a.m., 5 a.m., 8 a.m. and so on.
· snapshots on tank/usr are created once a day at 20 p.m. and retained
for 4 days.
· snapshots are taken recursively on tank/usr filesystem and all
filesystems mounted under it.
FILES
/usr/local/etc/zfs-snapshot-mgmt.conf The configuration file
SEE ALSOcron(8), zfs(1M)AUTHORS
Marcin Simonides ⟨marcin@studio4plus.com⟩
BUGS
There is no way to use alternative path for the configuration file.
BSD June 6, 2008 BSD