是否可以读取/访问zfs数据集的校验和?我想访问它来验证它在靴子之间没有改变。阅读integrity:在zfs中,像Merkle那样的校验方案的最高校验和是否可以从用户空间访问?
发布于 2017-04-28 16:43:15
有一个名为zdb的工具(主要针对开发人员)可以做到这一点。它很难使用,而且它的格式并不总是向后兼容:-)
但是,如果您只想确保文件系统没有更改,则可以为此使用快照。首先,在以后要与zfs snapshot <pool>/<fs>@<before-reboot-snap>进行比较的时候创建一个快照。然后,有两种不同的方法可以将文件系统与快照进行比较:
zfs diff <pool>/<fs>@<before-reboot-snap> <pool>/<fs>。这将向您显示快照与当前文件系统之间的“差异”列表:ls/坦克/hello file1 file2 file3 file4 file5 # zfs快照坦克/hello@snap# zfs diff坦克/hello@snap坦克/hello#触摸/坦克/hello/ file 6# zfs diff坦克/hello@snap坦克/hello M / tank/hello / +坦克/hello/file6# rm /file5/hello/file6# zfs #diffs坦克/hello@ tank/hello M /tank/hello /说明即使在我删除了新文件之后,它所在的目录仍被标记为已修改。zfs send -i @<before-reboot-snap> <pool>/<fs>@<after-reboot-snap>创建快照之间发生的所有更改的流,并使用另一个名为zstreamdump的工具对其进行分析:
zfs发送@ -i @snap坦克/hello@快照2\x\x{e76f}开始记录hdrtype =1-i= 2f5bacbac creation_time = 59036f98类型=2标志= 0x4 toguid = 2f080aca53bff68e fromguid = 66a1da82cd5f1571 toname =-i/hello@ DRR_END 2结束校验和=creation_time摘要: DRR_BEGIN记录总数=1总DRR_END记录=1总DRR_OBJECT记录= 12总DRR_FREEOBJECTS记录=5总DRR_WRITE记录=1总DRR_WRITE_BYREF记录=0总DRR_WRITE_EMBEDDED记录=0总DRR_FREE记录=0总DRR_FREE记录=0总记录=0总记录= 37总写入大小= 512 (0x200)总流长度= 13232 (0x33b0)
上面的示例显示了一些差异--任何类似于WRITE、FREE、OBJECT或FREEOBJECTS的东西都表示与原始快照不同。https://stackoverflow.com/questions/43644481
复制相似问题