您可以使用 删除 ZFS 文件系统(或其他数据集)zfs destroy <dataset>
。如果数据集有子级(包括快照),则删除会失败。 zfs destroy -r <dataset>
将删除文件系统及其子级,但也会销毁文件系统的任何非快照子级。有没有简洁的方式来表示“删除此文件系统及其快照,但前提是它没有非快照子级”?
基本上,我有许多嵌套文件系统,并且广泛使用快照,用于复制和廉价备份。我希望有一种方法可以轻松删除子文件系统及其快照(例如zfs destroy tank/container/leaf
),同时提供一定程度的保护,以防止意外破坏整个文件系统集合(例如zfs destroy tank/container<enter>leaf
)
如果有必要的话,我会在带有 Scientific Linux 7 的 Linux 上使用 ZFS。
解决方案:
根据 longneck 的评论,我可以用两行来做到这一点:
zfs destroy tank/example/leaf@%
zfs destroy tank/example/leaf
我已经测试过它并且它完全符合我的要求。
答案1
我还没有测试过,但我在其他帖子中看到你可以像这样删除所有快照:
zfs destroy -rv dataset_or_vol_name@%
然后您可以按照命令destroy
删除数据库。
答案2
这不是一行代码,但你可以使用
zfs list -t all -r -H <dataset>
并让脚本执行它,仔细验证事物并销毁相应的文件系统。