ZFS 是否有类似于 Git 的提交 ID 的“整体校验和”?

ZFS 是否有类似于 Git 的提交 ID 的“整体校验和”?

Git 通过对各个组件进行散列来生成提交 ID,这样我们基本上就获得了整个项目历史记录的标识符。

据我了解,ZFS 会对所有内容(数据 / 元数据 / 文件系统结构)进行哈希处理,这大概会生成一个“顶层“文件系统根目录下的哈希值。

我想知道是否有办法从 ZFS 文件系统或快照中获取这样的哈希或标识符。

这可以用于快速、可靠且有信心地确认“数据集 x 中的所有数据与数据集 y 中的所有数据匹配“。

我并不完全了解和的内部结构zfs sendzfs recv但我推测它们处理这样的概念,确保发送和接收文件系统都有一个共同的起点。


编辑:我有使用以下方式自动进行的异地备份合子...如果我要查看 n 个池中每个相应文件系统上的匹配快照,我希望看到相同标识符。

查看数据集快照之间是否存在任何变化也可能很有用,但我怀疑快照属性(名称、日期等...)可能会影响此标识符,因此查看“下一级“ 对于这个。

答案1

据我了解,ZFS 中对其他块的所有引用都包含其他块应具有的校验和,而这些块又包含带有校验和的指针(最终指向数据块及其校验和)。这一切的根源在于,您拥有超级块的校验和,然后它隐式地涵盖了池中的所有数据。

但是该校验和包括实际的块指针和与物理文件系统布局相关的内容,因此您实际上不能使用它来验证数据 - 如果您例如 zfs 发送/接收文件系统,您最终会得到一个完全不同的校验和。

答案2

您可能想调查一下zfs diff这个案例。

您能详细说明一下用例吗?这些是同一数据池中的文件系统吗?

相关内容