zfs 上的不完整递归快照

Tob*_*ker 7 zfs illumos omnios

我在我们的一个系统上安装了一堆新磁盘,并想将现有池转移给它们,所以我所做的是:

zfs snapshot -r old-pool@replicaton
zfs send -R old-pool@replication | mbuffer -m 1G  | zfs receive -F -d  new-pool
Run Code Online (Sandbox Code Playgroud)

但是在操作进行到一半时,我收到了来自 的警告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"'
Run Code Online (Sandbox Code Playgroud)

并发现大约有 10% 的文件集缺少此快照...

然后我继续单独创建丢失的快照,并且工作正常。

此后我重复了实验并再次发现了同样的问题......

知道这怎么可能吗?

这是发生在omios r151010

Tob*_*ker 7

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

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

因此,虽然我的递归快照最初是完整的,但随着新快照被集成到单个文件集中,它被“清除”了。

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