我正在寻找一种简单的解决方案来防止存储在各种驱动器上的数据发生随机位翻转(所谓的位腐烂)。它们不是磁盘数组,只是单个磁盘,我每周备份一次。所以我不是在寻找冗余, 但对于文件完整性-- 即我想知道我很长时间没有访问的文件是否被随机损坏,并希望尽可能修复它们。
请注意,我想要一个通用的解决方案,我特别不是寻找像 ZFS 或 btrfs 这样的文件系统(我已经知道了),部分原因是它们的校验和开销太大,而且它们太复杂/不稳定(btrfs 情况)。
它不一定是一个自动的事物。也就是说,如果我必须运行命令来为新写入的文件生成校验和(也许还可以恢复),那很好,但它应该易于使用,而不是手动存储校验和并验证然后将坏文件复制回来等(我已经在这样做了,这就是为什么我要求一些更简单、更少手动的东西)。
乍一看,SnapRAID
似乎做了我想做的事,除了它是为磁盘阵列制作的,这是我的问题。我思考它可以仅使用 1 个数据磁盘和 1 个奇偶校验磁盘,在这种情况下,奇偶校验磁盘可能是一个镜子(备份)数据盘,但我不确定。
除此之外,它满足我的需要:对文件进行校验和、验证这一点的能力,甚至从备份中修复它们(奇偶校验)。患病的仍然每周在外部介质上运行一次备份,但这种本地备份需要减少手动操作,因为管理起来很麻烦。
是否还有其他类似的工具SnapRAID
仅适用于 1 个数据磁盘或文件系统,它们通过自动校验和/备份进行保护,或者我应该使用SnapRAID
?仅用 1 个磁盘就可以正常工作吗?
因为它使用了一个奇偶校验盘对于备份,我必须在使用它之前完全擦除我的本地备份磁盘SnapRAID
,所以我犹豫是否要在没有确认的情况下自己“测试”它。这样做的一个缺点是奇偶校验磁盘将无法像普通磁盘一样访问,即使在这种情况下它不是真的奇偶校验磁盘,但只是一个镜像。
因此,如果有另一个类似的易于使用的工具来处理备份和文件的完整性我想知道 1 个磁盘而不是磁盘阵列。谢谢。
答案1
答案2
答案3
我想知道我很长时间没有访问的文件是否被随机损坏,...
这正是创作背后的动机之一数据印记,Jordial的免费软件,用于数据统计、指纹和验证。 Datimprint 是用 Java 编写的,因此它可以在 Linux、Mac 和 Windows 上运行。它使用最新的文件 API 和编码标准,并且是多线程的,用于快速文件系统遍历和校验和处理。
Datimprint 创建目录树的“数据印记”并将其存储在数据文件。
datimprint generate /var/data --output /var/imprints/data-2022-11-12.datim
例如,您可以稍后根据印记文件检查数据树,以验证备份或检查数据降级。
datimprint check /var/backup/data --imprint /var/imprints/data-2022-11-12.datim
源代码可通过其公开获取GitHub项目。
……如果可能的话,希望能修复它们。
基于某些备份修复文件是未来增强的可能性。作为 Datimprint 的作者,我欢迎您通过提交请求新功能或报告错误问题。您可以在以下位置提供其他反馈讨论关于该计划。
答案4
1 个磁盘而不是磁盘阵列的文件完整性
我知道你说的不是 ZFS,但这里有一个需要考虑的 hack。我为本地备份驱动器执行了此操作。
- 将驱动器分为 11 个相等的分区
- 将每个分区用作单独的“设备”。使用ZFS将其格式化为Raid5(我实际上使用BTRFS,但我知道风险)
它作为单个设备安装。 10 个分区空间用于数据,1 个分区空间用于奇偶校验。每当您进行任何文件更改时,这都会立即为您提供所有数据的 10% 奇偶校验。管理工作几乎为零——只需确保每月进行一次清理