我在我们的一个系统上得到了一堆新的磁盘,并想将一个现有的池转移到它们上面,所以我做的是这样的:
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
上创build一个快照。 所以我跑了
zfs list -r -o name old-pool | \ xargs -n1 perl -e 'system "zfs","list",$ARGV[0]."\@replication"'
发现有大约10%的文件集没有这个快照。
然后我开始单独创build缺less的快照,并且工作正常。
我已经重复了这个实验,又发现了同样的问题。
任何想法如何可以?
这发生在omnios r151010上
天啊! 多么尴尬……我find了原因…
我尝试复制的池(旧池)本身是一个备份存储,通过zfs receive -F
接收定期更新
所以当我的recursion快照最初完成时,当新的快照被集成到单个文件集中时,它被“清除”了。
一旦我停止了将快照发送到old-pool
的备份脚本,世界再次按预期工作。