Zfs

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

  • January 17, 2020

如何判斷兩個 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-aI could: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,還有一種方法可以確定快照不僅在名稱上相同,而且在塊上相同?

有一個專門針對此案例的屬性。

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

這也是syncoid如何辨識常見快照以確定複製命令的方式。

(免責聲明:我是 Syncoid 複製工具所屬的 Sanoid 項目的初始開發者和首席維護者。)

引用自:https://serverfault.com/questions/998956