![如何修复 ZFS 副本上的损坏文件?](https://linux22.com/image/757624/%E5%A6%82%E4%BD%95%E4%BF%AE%E5%A4%8D%20ZFS%20%E5%89%AF%E6%9C%AC%E4%B8%8A%E7%9A%84%E6%8D%9F%E5%9D%8F%E6%96%87%E4%BB%B6%EF%BC%9F.png)
我有两台机器:一台有 24TB 的主 ZFS 文件存储,另一台是该文件存储的克隆作为备份。时不时地,我会在主机器上创建一个新的快照,并对zfs send
备份机器执行差异化操作。主机器是 raidz3,但辅助机器只是条带化的。
最近,备份副本在例行清理过程中发现了一个损坏的文件。该文件在主文件存储中没有损坏,因此如果是两个正常工作的文件系统,我只需将好的文件复制到备份即可。但是对于zfs send
tozfs recv
工作流,我不确定如何处理它。纠正此损坏的最佳方法是什么,以便我保持进行差异处理的能力zfs send
?我想我可以修改主机上的文件并希望它作为下一次备份的一部分被推送,但我甚至不能 100% 确定对该文件进行哪种更改会触发它被刷新。
答案1
您需要重写整个文件才能更改所有块。假设您不使用重复数据删除,则类似下面的操作应该有效:
cat brokenfile > brokenfile2
mv brokenfile2 brokenfile
zfs snapshot ...
zfs send
这应该会在备份服务器中为您提供一个完整的工作文件。