ZFS删除具有相互依赖性和克隆的快照

下面是我的ZFS卷和快照列表,以及每个卷的源和克隆.

我想删除所有快照,但保留所有文件系统.我怎样才能做到这一点?

我尝试过zfs升级,然后尝试删除文件系统的许多不同组合的每个文件系统.这会在快照“活着”的地方转移;例如,zfs提升坦克/容器/六个快照F从坦克/容器/三个@ F移动到坦克/容器/六个@ F.文件系统中的实时数据没有被修改(这就是我想要的!),但我仍然无法删除快照(这不是我想要的).

一个典型的zfs破坏尝试告诉我它有依赖克隆,其中一些(快照)我想破坏,但其他的(文件系统)我不想破坏.

例如.

# 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

在上面的例子中,我不想破坏tank / containers / five或tank / containers / two,但如果我zfs推广五和二,我仍然无法销毁任何快照.有解决方案吗?

# 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
最佳答案
AFAIK您将不得不将这些数据集复制到新的独立数据集中.促销只是切换哪个数据集是“父”与“子”,如果你想保留两者,它实际上不会破坏任何依赖.

例如:

root@box~# zfs snapshot tank/containers/six@1 
root@box~# zfs send tank/containers/six@1 | pv | zfs receive tank/containers/newsix  
root@box~# zfs destroy -R tank/containers/six  
root@box~# zfs destroy tank/containers/three@F 
root@box~# zfs rename tank/containers/newsix tank/containers/six

慢慢来,确保你在做什么.特别是实际的删除.

这种复制是逐块的,所以如果有任何重要的数据,它将需要一段时间.光伏部分是严格可选的,但会在你等待的时候给你一个进度条.

也许可以考虑syncoid来自动化现在和将来的复制任务.

转载注明原文:ZFS删除具有相互依赖性和克隆的快照 - 代码日志