Make ZFS auto-destroy snapshots when the out of space?
Dan Nelson
dnelson at allantgroup.com
Sun May 30 02:42:45 UTC 2010
In the last episode (May 29), Kirk Strauser said:
> I found some nice scripts to regularly snapshot all the filesystems in my
> ZFS pool at
> http://www.neces.com/blog/technology/integrating-freebsd-zfs-and-periodic-snapshots-and-scrubs
> . One thing bothers me, though: I have to intentionally set how many
> months' worth of snapshots I want to keep. Too many and I run out of
> room. Too few and I lose some of the benefits of easy recovery of
> deleted data. My computer is better at bookkeeping than I am, so why not
> let it?
>
> I'd propose standardizing on an attribute like
> org.freebsd:allowautodestroy. Modify ZFS's disk full behavior to scan for
> snapshots with that attribute set and destroy the oldest one, and continue
> until there's enough free space to complete a write requests or until out
> of "expendable" snapshots to destroy (at which time the normal disk full
> handler would run). Also run a daily periodic script to ensure that the
> free space stays below a configurable threshold each day so that ZFS isn't
> constantly butting up against completely full drives.
If the kernel does the snapshot deleting itself, why not add a pool-level
property that sets the amount of free space at which the deletion starts?
That way you don't need the cleanup script. Alternatively, make the
org.freebsd:allowautodestroy property hold the trigger freespace amount.
That way you can have monthly/daily/hourly snapshots but set it so the
hourly ones disappear first, then the dailies (by setting the destroy
trigger slightly higher for the ones you want to expire first).
--
Dan Nelson
dnelson at allantgroup.com
More information about the freebsd-stable
mailing list