P
本番サーバーとスタンバイサーバーがありますS
。どちらもDebianバスターを実行し、オープンZFS/ZoL2.1.0。P
オペレーティングシステム、仮想マシン、およびその他のすべてのデータにZFSストレージを提供する内部ディスクのみがあります。S
内部ディスクは同じですが、ホットスワップ(ハードウェア側)が可能で定期的に交換されるバックアップディスクとして使用できる別のZPOOLを含む追加のバックアップディスクがあります。
にはP
というプールが1つだけありますrpool
。 (Pと同じ)プールと(バックアップディスク上)のS
2つのプールがあります。rpool
extpool
では、P
ZFSデータセットのスナップショットを撮ってS
コピーするスクリプトが定期的に実行されます。スクリプトは定期的に実行されてから(または/を介して)スナップショットをコピーします。のスクリプトはまだ同期されていません。つまり、 のスクリプトが から にスナップショットを転送している間、 のスクリプトが にスナップショットをコピーしようとすることができることを意味します。zfs send
zfs receive
S
rpool
extpool
zfs send
zfs receive
P
S
P
S
S
rpool
extpool
P
スナップショットを送信しようとするとスクリプトが失敗することがあります。上記のシナリオでこれが起こると思うので、データセットのスナップショットを送信し、同時に同じデータセットの最新のスナップショットを取得することは不可能です。一方、私が別の方法で間違っている場合もあるかもしれませんので、この部分は必ず確認したいと思います。つまり、次のことができるかどうかを知りたいのです。
存在するP
:
zfs snapshot rpool/dataset1@snapshot1
zfs send -R rpool/dataset1@snapshot1 | ssh S 'zfs receive -F rpool/dataset1'
# Wait some time
zfs snapshot rpool/dataset1@snapshot2
それから同時に
存在するS
:
zfs send -R rpool/dataset1@snapshot1 | zfs receive -F extpool/dataset1
さらにP
:
zfs send -R -I rpool/dataset1@snapshot1 rpool/dataset1@snapshot2 | ssh S 'zfs receive -F rpool/dataset1'
最後の注意:では、S
レプリケーションに関連するすべてのデータセットはロードされません。S
これらのデータセットの唯一の目的は、新しいスナップショットを受信してP
内部ディスクに保存し、内部ディスクのすべてのスナップショットを外部バックアップディスクにコピーすることです。
もちろん、唯一の例外は緊急事態です。P
エラーが発生すると、複製されたデータセットは手動でマウントされ、本番S
操作に切り替わります。しかし、私が明示的に質問したことは、この状況とまったく関係ありません。