下面是我的 ZFS 卷和快照列表,以及每个的源和克隆。
我想删除所有快照,但保留所有文件系统。我怎样才能做到这一点?
我尝试zfs promote过尝试删除文件系统的许多不同组合的每个文件系统。这会在快照“存在”的地方发生变化;例如,zfs promote tank/containers/six将快照F从移动tank/containers/three@F到tank/containers/six@F。文件系统中的实时数据没有被修改(这是我想要的!),但我仍然无法删除快照(这不是我想要的)。
一个典型的zfs destroy尝试告诉我它有依赖的克隆,这(快照)一些我不希望破坏,但别人其中(文件系统)我并不想破坏。
例如。
# 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
Run Code Online (Sandbox Code Playgroud)
在上面的例子中,我不想销毁tank/containers/fiveor tank/containers/two,但是如果我zfs promote5 和 2 ,我仍然无法销毁任何快照。有解决办法吗?
# 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
Run Code Online (Sandbox Code Playgroud)
Jim*_*ter 10
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
Run Code Online (Sandbox Code Playgroud)
慢慢来,确定你在做什么。尤其是实际删除。
此复制是逐块复制的,因此如果其中有任何重要数据,则需要一段时间。该pv部分是严格可选的,但会在您等待时为您提供一个进度条。
现在和将来也可以考虑使用syncoid来自动化复制任务。(强制性:我是这个工具的原作者,它是 GPLv3 许可的,可以免费使用。)
| 归档时间: |
|
| 查看次数: |
7261 次 |
| 最近记录: |