有沒有辦法判斷兩個同名的 ZFS 快照是否實際上相同?
如何判斷兩個 ZFS 快照是相同的還是簡單地命名相同?
假設我有兩台名為
host-a
和的電腦host-b
。還假設host-a
有一個名為/tank/mydataset
.在 host-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
另一方面, on
host-a
I could: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
,還有一種方法可以確定快照不僅在名稱上相同,而且在塊上相同?
有一個專門針對此案例的屬性。
zfs get guid pool/fs@snap
將為您提供快照的 GUID(全域唯一 ID)。如果兩個快照之間的 GUID 不匹配,則不會從另一個複制其中一個,並且它們將無法作為進一步增量複製的基礎。這也是syncoid如何辨識常見快照以確定複製命令的方式。
(免責聲明:我是 Syncoid 複製工具所屬的 Sanoid 項目的初始開發者和首席維護者。)