システムの1つで多数の新しいディスクを取得し、既存のプールをそれらに転送したかったので、次のようにしました。
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%があったことがわかりました...
次に、欠落しているスナップショットを個別に作成しましたが、正常に機能しました。
それ以来、私は実験を繰り返し、同じ問題を再び見つけました...
これがどのようになり得るかについて何か考えはありますか?
これはomniosr151010で発生しています
OH MY!恥ずかしい...理由を見つけた...
私が複製しようとしているプール(古いプール)はそれ自体がバックアップストアであり、zfs receive -F
を介して定期的に更新を受け取ります
そのため、再帰スナップショットは最初は完了していましたが、新しいスナップショットが個々のファイルセットに統合されていたため、「クリーンアウト」されました。
スナップショットをold-pool
に送信していたバックアップスクリプトを停止すると、世界は再び期待どおりに機能していました。