私は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を送信しようとしましたが、これを行う唯一の方法は完全な送信(十分なスペースがない)として行うことであり、既存のスナップショットを消去する必要があるようです。スナップショットが一致しない場合にすべてのバックアップ履歴を削除するのはかなり不便に思えますが、このシナリオで解決策はありますか?
セットアップに共通のベースラインスナップショットがないため、インクリメンタルzfs send
を実行できなくなります。 backuppool
のデータセットを破棄する必要があります。
zfs destroy -r backuppool/x
最新のスナップショットをバックアッププールに再送信します
zfs send mainpool/x@6 | [transfer magic] | zfs recv backuppool/x
スナップショットが一致しない場合にすべてのバックアップ履歴を削除するのはかなり不便に思えますが、このシナリオで解決策はありますか?
「解決策」は、ソーススナップショットが正常に送信されたことが確認されていない限り(つまり、リモートのzfs list -tall
出力に表示されない限り)、ソーススナップショットを削除しないことです。 zfsnapがこれでサポートするかどうかはわかりませんが、サポートしない場合でも、zfsnapに何かを削除させる前に、この種のチェックを実行するシェルスクリプトを使用できます。