同じ名前の 2 つの ZFS スナップショットが実際に同一であるかどうかを確認する方法はありますか?

同じ名前の 2 つの ZFS スナップショットが実際に同一であるかどうかを確認する方法はありますか?

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-ahost-b

一方、 では、の後に が続くhost-a可能性があります。zfs snapshot tank/mydataset@mysnapshotssh host-b zfs snapshot tank/mydataset@mysnapshot

この 2 番目のケースでは、2 つのスナップショットの名前は同じですが、データセットは大きく異なる可能性があります。

のプロパティを調べても、tank/mydataset@mysnapshotスナップショットが同一であるかどうかを識別するための明確な方法 (GUID またはハッシュなど) は示されません。

別のスナップショットを取得して にhost-a tank/mydataset@mysnapshot2送信しようとする以外に、スナップショットが名前だけでなくブロックも同一であることを確認する方法はありますか?host-bzfs 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 プロジェクトの最初の開発者であり、チーフ メンテナーです。)

関連情報