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
天啊!好尴尬……我找到原因了……
我试图复制的池(旧池)本身就是一个备份存储,通过以下方式接收定期更新 zfs receive -F
因此,虽然我的递归快照最初是完整的,但随着新快照被集成到单个文件集中,它被“清除”了。
一旦我停止了将快照发送到 的备份脚本,old-pool
世界就会再次按预期工作。