snapraid的错误排除

硬盘坏了,还好坏的是“校验盘”,数据没事,重新做一遍 snapraid即可。

snapraid --force-full sync


   0 file errors
   0 io errors
   1 data errors
DANGER! Unexpected data errors! The failing blocks are now marked as bad!
Use 'snapraid status' to list the bad blocks.
Use 'snapraid -e fix' to recover.

但没想到,最后竟然报错,一个block出错。但不知道是哪个文件,在做一次sync同步,同时保存一下日志。

snapraid -l snap_20200120110201.log -v sync

查询日志文件,发现出错的block应该在某个文件内,看了下是一个word文件。重新打开这个文件,发现正常,另存盘一下,覆盖掉原来的文件。如果嫌弃麻烦,直接在linux中touch一下该文件,重新sync一下,报错解除。

snapraid -v --pre-hash sync

加了预校验pre-hash(-h),增加校验(这样会增加同步时间,但更确保数据校验的正确性),通过检测。

原因可能如下:

1.文件已正确存储(未损坏)在磁盘上。
2.在第一次快照同步期间,文件读取不正确(损坏)。
3.在稍后的同步过程中,再次读取了该文件,并且snapraid发现该文件与原始同步的文件(损坏的版本)不匹配。
4.使用snapraid将文件还原到已损坏的同步版本。

一般只有遇到偶发的硬件问题时,才会发生这种情况。可能RAM或磁盘控制器最有可能出现问题。

可以在snapraid中使用 -h 选项来避免或早发现此类问题:

-h,-散列前
在“同步”中,运行所有新数据的初步哈希阶段,以在奇偶校验计算之前进行其他验证。通常,在“同步”状态下,不会进行任何预备哈希处理,并且在首次读取奇偶校验计算之前,将对新数据进行哈希处理。不幸的是,当系统处于高负载,所有磁盘旋转且CPU繁忙时,会发生此过程。这是机器的一种极端情况,如果它有潜在的硬件问题,则可能会遇到无声错误,这是由于尚未对数据进行哈希处理而无法检测到的。为了避免这种风险,可以启用“预哈希”模式,并使所有数据读取两次以确保其完整性。此选项还会验证在阵列内移动的文件,以确保移动操作成功进行,并且以阻止同步并允许运行修复操作。此选项只能与“ sync”一起使用。
但是缺点是同步需要花费两倍的时间。

源自:https://sourceforge.net/p/snapraid/discussion/1677233/thread/db3113e8/

发布了43 篇原创文章 · 获赞 4 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/stevenkoh/article/details/104050572