我在硬盘上运行 Snapraid。但是,我想测试它的数据完整性功能,看看它们是否真的有效。
但我真的不明白如何“破坏”我的数据。我只能手动更改文件内容。但是,Snapraid 会正常同步此更改。Snapraid 修复会自动将文件恢复到更改之前的状态。
但是我如何测试实际的数据损坏,以及如何知道 Snapraid 是否真的修复了它?
答案1
也许这个有用。首先同步你的数据:
snapraid sync
现在检查文件的大小和时间戳
stat foo.txt
现在创建时间戳的备份:
touch -r foo.txt foo.timestamps
下一步是foo.txt
通过文件编辑器(如vi
/)进行更改nano
,而不改变文件大小(替换一个字符)。
之后恢复时间戳:
touch -r foo.timestamps foo.txt
删除时间戳备份文件:
rm foo.timestamps
检查并比较结果
stat foo.txt
检查新文件
snapraid diff
由于我们没有改变 foo.txt 的文件大小和时间戳,因此它不应该返回任何内容。
最后开始全面清理:
snapraid scrub full
现在 snapraid 创建所有文件的校验和并将它们与元数据进行比较,并且 foo.txt 应该被列为可修复文件。
答案2
看起来 snapraid 备份了 raid 阵列的奇偶校验信息。如果您使用支持热插拔的硬件 raid 控制器,并且使用除 raid 0 以外的任何设备,请拔下驱动器然后重新插入。重建将在虚拟磁盘上开始。重建开始后,在虚拟磁盘上运行 chkdsk 或 fsck。这将导致奇偶校验位和文件系统变得混乱,从而损坏您的阵列。Snap 驱动器文档说它无法处理大量奇偶校验损坏,因此可能不是最好的方法。