我已经可以手动检查每个文件系统的 快照了。
答案应该是对于名称中有空格的文件系统。
从zfs(8)的手册页:
zfs holds [-H] [-r] snapshot…
… -r
指定使用给定标记的保持recursion地应用于所有后代文件系统的快照。
我想知道最近的快照是否被视为旧快照的后代。 没有:
Last login: Sat Dec 8 09:02:26 on ttys003 macbookpro08-centrim:~ gjp22$ zfs holds -r gjp22@2012-12-08-081957 NAME TAG TIMESTAMP macbookpro08-centrim:~ gjp22$ zfs holds -r gjp22@2012-10-28-212255 NAME TAG TIMESTAMP gjp22@2012-10-28-212255 problem with LocalStorage for WOT for Safari Mon Oct 29 6:44 2012 macbookpro08-centrim:~ gjp22$ zfs hold experiment gjp22@2012-12-08-081957 macbookpro08-centrim:~ gjp22$ zfs holds -r gjp22@2012-10-28-212255 NAME TAG TIMESTAMP gjp22@2012-10-28-212255 problem with LocalStorage for WOT for Safari Mon Oct 29 6:44 2012 macbookpro08-centrim:~ gjp22$ zfs holds -r gjp22@2012-12-08-081957 NAME TAG TIMESTAMP gjp22@2012-12-08-081957 experiment Sat Dec 8 9:04 2012 macbookpro08-centrim:~ gjp22$ zfs holds -r gjp22@2012-10-28-212255 NAME TAG TIMESTAMP gjp22@2012-10-28-212255 problem with LocalStorage for WOT for Safari Mon Oct 29 6:44 2012 macbookpro08-centrim:~ gjp22$
我不打算在一个命令或脚本中结合检查和销毁。 这个问题基本上是关于检查。
不确定在2012年如何回顾,但现在你可以检查userrefs
属性:
zfs get userrefs
要列出所有池中的所有暂挂:
zfs get -Ht snapshot userrefs | grep -v $'\t'0 | cut -d $'\t' -f 1 | tr '\n' '\0' | xargs -0 zfs holds
zfs list -H -r -d 1 -t snapshot -o name nameoffilesystem | xargs zfs holds
– 也就是说,没有-r
recursion到pipe道的右侧。
在irc://irc.freenode.net/#zfs
对于名称中没有空格的文件系统:
macbookpro08-centrim:~ gjp22$ zfs list -H -r -d 1 -t snapshot -o name gjp22 | xargs zfs holds load: 4.82 cmd: zfs 43038 running 0.59u 3.28s NAME TAG TIMESTAMP gjp22@2012-10-28-212255 problem with LocalStorage for WOT for Safari Mon Oct 29 6:44 2012 gjp22@2012-12-08-081957 experiment Sat Dec 8 9:04 2012
有一个Control – T看看事情是如何运行的。
为了完整gjp22
,我应该说有一个gjp22
的孩子。 但是我想这个例子(不注意后人)certificate了命令的有效性。
对于名为Pocket Time Machine
的文件系统(其名称中的空格),下列命令都不会成功:
zfs list -H -r -d 1 -t snapshot -o name "tall/backups/zhandy/Pocket Time Machine" | xargs zfs holds zfs list -H -r -d 1 -t snapshot -o name tall/backups/zhandy/Pocket\ Time\ Machine | xargs zfs holds
输出:
'tall/backups/zhandy/Pocket' is not a snapshot 'Time' is not a snapshot cannot open 'tall/backups/zhandy/Pocket': dataset does not exist cannot open 'Time': dataset does not exist cannot open 'Machine@2012-09-18-210251': dataset does not exist cannot open 'tall/backups/zhandy/Pocket': dataset does not exist cannot open 'Time': dataset does not exist cannot open 'Machine@2012-09-23-0330': dataset does not exist
… 等等。
这隐含地是一个答案中的问题,对不起……有一个具有良好的命令行知识(不是我)的人可能能够聪明地回答这个答案,而不会转移到一个单独的问题。 我会在聊天中寻求build议。
zfs list -H -r -d 1 -t snapshot -o name nameoffilesystematroot | xargs -n1 zfs holds -H -r
在irc://irc.freenode.net/#zfs
但是我不确定语法是否需要更多的工作。
对于我来说,只有一个简单的文件系统层次结构(只有一个孩子)和相对较less的快照(目前有十七个孩子),这个命令似乎还没有得出结论。 例:
macbookpro08-centrim:~ gjp22$ zfs list -H -r -d 1 -t snapshot -o name gjp22 | xargs zfs holds -r load: 4.94 cmd: zfs 39152 running 17.80u 112.52s load: 3.73 cmd: zfs 39152 running 55.01u 349.29s load: 3.15 cmd: zfs 39152 running 167.48u 1061.47s load: 4.59 cmd: zfs 39152 running 267.57u 1697.49s load: 5.19 cmd: zfs 39152 running 372.19u 2355.99s load: 5.29 cmd: zfs 39152 running 432.89u 2736.79s
从另一个答案借用,只关注子文件系统:
macbookpro08-centrim:~ gjp22$ zfs list -H -r -d 1 -t snapshot -o name gjp22/intrigue | xargs zfs holds NAME TAG TIMESTAMP macbookpro08-centrim:~ gjp22$
– 而且产出几乎是立竿见影。
ZFS这里是ZEVO社区版1.1.1。