Below is my list of ZFS volumes and snapshots, as well as the origin and clone for each.
I want to delete all the snapshots, but keep all the filesystems. How can I do this?
I have tried zfs promote
followed by attempting to delete each filesystem for many different combinations of the filesystems. This shifts around where the snapshots "live"; for instance, zfs promote tank/containers/six
moves snapshot F
from tank/containers/three@F
to tank/containers/six@F
. The live data in the filesystem isn't modified (which is what I want!), but I still can't delete the snapshot (which is not what I want).
A typical zfs destroy
attempt tells me it has dependent clones, some of which (the snapshots) I do want to destroy, but others of which (the filesystems) I do not want to destroy.
For example.
# zfs destroy tank/containers/six@A
cannot destroy 'tank/containers/six@A': snapshot has dependent clones
use '-R' to destroy the following datasets:
tank/containers/five
tank/containers/two@B
tank/containers/two
In the above example, I don't want to destroy tank/containers/five
or tank/containers/two
, but if I zfs promote
five and two, I still can't destroy any snapshots. Is there a solution?
# zfs list -t all -o name,origin,clones
NAME ORIGIN CLONES
tank - -
tank/containers - -
tank/containers/five tank/containers/two@B -
tank/containers/four tank/containers/six@C -
tank/containers/one - -
tank/containers/one@E - tank/containers/three
tank/containers/two tank/containers/six@A -
tank/containers/two@B - tank/containers/five
tank/containers/six tank/containers/three@F -
tank/containers/six@A - tank/containers/two
tank/containers/six@C - tank/containers/four
tank/containers/three tank/containers/one@E -
tank/containers/three@F - tank/containers/six