web-dev-qa-db-ja.com

ZFSスナップショットはインクリメンタルを送信します

私はCentOSとZFSonLinuxで zfsnap を、Webサイトで説明されているのと同じようにスクリプト化された方法でうまく使用していますが、問題が発生しています。残念ながら、バックアップは数日前に実行されなかったため、今では奇妙な状況で立ち往生しています。メインZFSサーバーからのバックアップZFSサーバーに一連の増分バックアップがあり、メインサーバーにいくつかの新しいスナップショットがあります。残念ながら、バックアップが失われ、メインサーバー上の古いスナップショットが自動的に破棄されるため、インクリメンタル送信を実行するための2つのシステム間の共通のスナップショットはなくなりました。つまり、バックアップには次のものがあります。

backuppool/x@snap2 
backuppool/x@snap3
backuppool/x@snap4

メインのzfsサーバーには次のものがあります。

mainpool/x@snap6 
mainpool/x@snap7
mainpool/x@snap8

それらを再び同期させる方法はありますか、それともバックアップですべてを破棄して完全に実行する必要がありますか(2つの完全バックアップのための十分なスペースがありません)?メインサーバーからリモートバックアップサーバー上のsnap4の名前を参照する送信を指定しようとしましたが、メインサーバーにsnap 4がないため、増分を計算できません。また、バックアップからメインサーバーにsnap4を送信しようとしましたが、これを行う唯一の方法は完全な送信(十分なスペースがない)として行うことであり、既存のスナップショットを消去する必要があるようです。スナップショットが一致しない場合にすべてのバックアップ履歴を削除するのはかなり不便に思えますが、このシナリオで解決策はありますか?

4
ak907

セットアップに共通のベースラインスナップショットがないため、インクリメンタルzfs sendを実行できなくなります。 backuppoolのデータセットを破棄する必要があります。

zfs destroy -r backuppool/x

最新のスナップショットをバックアッププールに再送信します

zfs send mainpool/x@6 | [transfer magic] | zfs recv backuppool/x

スナップショットが一致しない場合にすべてのバックアップ履歴を削除するのはかなり不便に思えますが、このシナリオで解決策はありますか?

「解決策」は、ソーススナップショットが正常に送信されたことが確認されていない限り(つまり、リモートのzfs list -tall出力に表示されない限り)、ソーススナップショットを削除しないことです。 zfsnapがこれでサポートするかどうかはわかりませんが、サポートしない場合でも、zfsnapに何かを削除させる前に、この種のチェックを実行するシェルスクリプトを使用できます。

5
the-wabbit