有没有办法判断两个同名的 ZFS 快照是否真的相同?

有没有办法判断两个同名的 ZFS 快照是否真的相同?

如何判断两个 ZFS 快照是否相同或只是名称相同?

假设我有两台计算机,分别名为host-ahost-b。还假设host-a有一个名为 的 ZFS 数据集/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-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-b通过发送之外zfs send -i @mysnapshot tank/mydataset@mysnapshot2 | ssh host-b zfs receive tank/mydataset,还有其他方法可以确定快照不仅名称相同,而且块也相同吗?

答案1

有一个属性具体来说对于这个用例。

zfs get guid pool/fs@snap将为您提供快照的 GUID(全局唯一 ID)。如果两个快照之间的 GUID 不匹配,则不会从其中一个快照复制另一个快照,并且它们将无法作为进一步增量复制的基础。

这也是合子识别常见快照来确定复制命令。

(免责声明:我是 Sanoid 项目的最初开发者和首席维护者,Syncoid 复制工具属于该项目。)

相关内容