
2 つの ZFS スナップショットが同一であるか、単に名前が同じであるかをどのように判断すればよいでしょうか?
host-a
とという名前の 2 台のコンピュータがあるとしますhost-b
。また、 には というhost-a
名前の ZFS データセットがあるとします/tank/mydataset
。
ホスト a では、次のことができました。zfs snapshot tank/mydataset@mysnapshot' and then I could 'zfs send tank/mydataset@mysnapshot | ssh host-b zfs receive tank/mydataset
これは、 と@mysnapshot
の両方で が同一になることを意味します。host-a
host-b
一方、 では、の後に が続くhost-a
可能性があります。zfs snapshot tank/mydataset@mysnapshot
ssh host-b zfs snapshot tank/mydataset@mysnapshot
この 2 番目のケースでは、2 つのスナップショットの名前は同じですが、データセットは大きく異なる可能性があります。
のプロパティを調べても、tank/mydataset@mysnapshot
スナップショットが同一であるかどうかを識別するための明確な方法 (GUID またはハッシュなど) は示されません。
別のスナップショットを取得して にhost-a
tank/mydataset@mysnapshot2
送信しようとする以外に、スナップショットが名前だけでなくブロックも同一であることを確認する方法はありますか?host-b
zfs send -i @mysnapshot tank/mydataset@mysnapshot2 | ssh host-b zfs receive tank/mydataset
答え1
物件がある具体的にはこのユースケースの場合。
zfs get guid pool/fs@snap
スナップショットの GUID (グローバル一意 ID) が提供されます。2 つのスナップショット間で GUID が一致しない場合は、一方が他方から複製されず、それ以降の増分レプリケーションの基盤として機能しません。
これはまたシンコイド共通のスナップショットを識別して、レプリケーション コマンドを決定します。
(免責事項: 私は、Syncoid レプリケーション ツールが属する Sanoid プロジェクトの最初の開発者であり、チーフ メンテナーです。)