zfs 上的不完整递归快照

zfs 上的不完整递归快照

我在我们的一个系统上获得了一堆新磁盘,并想将现有池转移到它们上,因此我所做的是:

zfs snapshot -r old-pool@replicaton
zfs send -R old-pool@replication | mbuffer -m 1G  | zfs receive -F -d  new-pool

但是在操作进行到一半时,我收到了一条警告zfs send,抱怨快照old-pool/some/fileset@replication不存在......

当我去调查时,我发现确实zfs snapshot -r忘记了在 上创建快照old-pool/some/fileset。所以我运行了

zfs list -r -o name old-pool | \
xargs -n1 perl -e 'system "zfs","list",$ARGV[0]."\@replication"'

发现大约有 10% 的文件集缺少这个快照……

然后我继续单独创建丢失的快照,并且运行良好。

此后我又重复了实验,又发现了同样的问题......

知道这是怎么回事吗?

这发生在 omnios r151010 上

答案1

天哪!好尴尬啊……我找到原因了……

我尝试复制的池(旧池)本身就是一个备份存储,通过以下方式接收定期更新zfs receive -F

因此,虽然我的递归快照最初是完整的,但由于新快照被集成到各个文件集中,它被“清理干净”了。

一旦我停止发送快照到的备份脚本old-pool,世界就会再次按预期运转。

相关内容