web-dev-qa-db-ja.com

zfsでの不完全な再帰スナップショット

システムの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 -rold-pool/some/filesetにスナップショットを作成するのを怠っていたことがわかりました。だから私は走った

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

そして、このスナップショットを欠いているファイルセットの約10%があったことがわかりました...

次に、欠落しているスナップショットを個別に作成しましたが、正常に機能しました。

それ以来、私は実験を繰り返し、同じ問題を再び見つけました...

これがどのようになり得るかについて何か考えはありますか?

これはomniosr151010で発生しています

7
Tobi Oetiker

OH MY!恥ずかしい...理由を見つけた...

私が複製しようとしているプール(古いプール)はそれ自体がバックアップストアであり、zfs receive -Fを介して定期的に更新を受け取ります

そのため、再帰スナップショットは最初は完了していましたが、新しいスナップショットが個々のファイルセットに統合されていたため、「クリーンアウト」されました。

スナップショットをold-poolに送信していたバックアップスクリプトを停止すると、世界は再び期待どおりに機能していました。

7
Tobi Oetiker