
如何判斷兩個 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-a
host-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-b
via之外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 專案的最初開發人員和首席維護者。)