标识同一文件的两个ZFS快照之间已更改的字节数


10

假设我有一个包含虚拟机磁盘映像的ZFS文件系统,例如

/tank/examplevm/examplevm-flat.vmdk

让我们进一步假设我为该ZFS文件系统制作了每日快照,例如

$ zfs snapshot tank@20120716
$ zfs snapshot tank@20120717

显然,在每个每日快照之间的时间段内,对我的examplevm-flat.vmdk进行了更改(在大多数情况下,映像的大小保持不变,但虚拟磁盘中的块被修改了)。

因此,ZFS diff命令现在将报告在两个快照之间修改的文件:

$ zfs diff tank/@20120716 tank@20120717
M       /tank/examplevm/examplevm-flat.vmdk

很高兴知道该文件已被修改,但我对在vmdk中已修改的字节/块的数量更加感兴趣。

因此,我对以下问题感兴趣:

  • ZFS是否具有任何功能来报告两个快照之间特定文件中已更改块的数量?
  • 还有其他工具可以对两个文件系统映像进行二进制比较,并报告已更改的块或字节数吗?我知道可以cmp –l file1 file2 | wc –l做到这一点,但是速度非常慢。

Answers:


7

ZFS没有功能可报告,但是,未记录的zdb工具当然可以用于获取特定数据集(文件系统或快照)中文件所使用的块,因此尽管编写一些脚本即可实现所需的功能,尽管处理zdb输出可能会花费很长时间。

是一个博客,显示了如何使用zdb提取文件的块。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.