web-dev-qa-db-ja.com

ZFS送信およびZFS受信データセット--RI増分レプリケーション同期なし

以前のスナップショットがある場合でも、最新のスナップショットのみをバックアップzfsシステムに送信する方法はありますか?エラーが発生し続けます。

「新しいファイルシステムストリームを受信できません:宛先にスナップショットがあります(たとえば、mirrorpool/ETC/Stuff)上書きするためにそれらを破棄する必要があります」

そして、私はすでに-Fでzfs send receiveを使用していました。

基本的に、スペースが不足していることがわかったため、受信側システムは一連のスナップショットを受信して​​いません。そのため、受信側のzfsファイルシステムで非常に古いスナップショットの束を削除し、最新のスナップショットを残しましたが、zfs送信を実行するzfsシステムには、zfsレシーバーに存在しない最新のスナップショットが多数あります(バックアップサーバ)。しかし、欠落しているすべてのスナップショットを、共通のスナップショットに複製したくありません。最新のスナップショットカップルスナップショットをzfsレシーバーに送信するだけです。

現在、zfsレシーバーには最初に作成されたいくつかのスナップショットがあり、残りは削除され、2018年10月頃の最新のものだけが残りました。そのため、2018年10月以降の毎日のスナップショットをZfs Senderから送信しないようにしたいと思います。システムをzfsレシーバーに送信し、最後のいくつかのスナップショットのみを送信します。

または、ある種の「rsync」タイプのzfs sendがありますか? zfs receiveで、スナップショットを送信せずに2つのデータセットを同期させておくことができますか?

2
htfree

あなたの問題を解析するのが少し難しいですが、次のように機能すると思います。

BoxA:pool/dataset@1,2,3,4,5,6,7,8,9,10

BoxB:pool/dataset@1,2,3

BoxBでスナップショット10を取得したいが、すべての中間スナップショット(4、5、6、7、8、9)を取得したくない。

これが事実であると仮定すると、それは十分に簡単です:

root@BoxA:~# zfs send -Ri pool/dataset@3 pool/dataset@10 | ssh root@BoxB zfs receive pool/dataset

これが完了した後(--小文字-iではなく大文字-I!を使用したことに注意してください)、次の状況になります。

BoxA:pool/dataset@1,2,3,4,5,6,7,8,9,10

BoxB:pool/dataset@1,2,3,10

-Rzfs sendを指定しているので、pool/dataset/child0pool/dataset/child1など。 (-Rzfs sendと一緒に使用する場合、すべての子データセットでまったく同じスナップショットを使用できないと、奇妙になることに注意してください。)

1
Jim Salter