如何清理(删除)所有旧系统 ZFS 快照?

如何清理(删除)所有旧系统 ZFS 快照?

每次我安装或更新软件时,都会在 zfs rpool 中创建一个快照,有时在 bpool 中也会创建。在我确认我仍能启动并且一切正常后,我想返回并释放数百个小快照占用的空间。我的理解是,我可以使用以下命令执行此操作:

sudo zsysctl service gc --all -vv

但是,运行此命令并输出大量详细输出后,当我看到剩余的快照时,zfs list -t snapshot似乎没有删除任何内容!我回过头来查看了上面的垃圾收集命令的输出 ( sudo zsysctl...),我看到大量消息,其中显示以下内容之一:

保留快照 rpool/USERDATA/michael_xxxxxx@autozsys_xxxxxx 与系统快照关联

将 rpool/USERDATA/root_xxxxxx@autozsys_xxxxxx 保留为最近 20 个快照中的内容

有什么原因导致我不应该删除旧快照以释放空间?如果是,我该怎么做?我可以使用 单独销毁快照zfs destroy rpool/USERDATA/michael_xxxxxx@autozsys_xxxxxx,但快照太多,不切实际。

答案1

在下列情况下,无法销毁 ZFS 快照:

要删除所有未选择年龄的快照,请运行此循环:

for snap in $(zfs list -rt snap -Ho name <POOL>); do zfs destroy ${snap} && echo "${snap}: DESTROYED";done

您可以通过设置来调整目标数据集<POOL>,即:rpool/ROOT/ubuntu_644ww7/var/log

相关内容