有沒有辦法判斷兩個同名的 ZFS 快照是否實際上相同?

有沒有辦法判斷兩個同名的 ZFS 快照是否實際上相同?

如何判斷兩個 ZFS 快照是否相同或只是名稱相同?

假設我有兩台名為host-a和 的計算機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@mysnapshot跟著ssh host-b zfs snapshot tank/mydataset@mysnapshot.

在第二種情況下,兩個快照的名稱相同,但資料集可能截然不同。

查看 的屬性tank/mydataset@mysnapshot並沒有列出任何明顯的方法來識別快照是否相同-即 GUID 或雜湊值。

除了嘗試拍攝另一個快照host-a tank/mydataset@mysnapshot2並嘗試發送到host-bvia之外zfs send -i @mysnapshot tank/mydataset@mysnapshot2 | ssh host-b zfs receive tank/mydataset,是否有一種方法可以確定快照不僅在名稱上相同,而且在區塊上也相同?

答案1

有一個房產具體來說對於這個用例。

zfs get guid pool/fs@snap將為您提供快照的 GUID(全域唯一 ID)。如果兩個快照之間的 GUID 不匹配,則不會從另一個快照複製一個快照,並且它們將無法作為進一步增量複製的基礎。

這也是如何暈厥識別常見快照以確定複製命令。

(免責聲明:我是 Syncoid 複製工具所屬的 Sanoid 專案的最初開發人員和首席維護者。)

相關內容