关于硬盘的 URE(Non-recoverable read errors per bits read)错误以及 FastCopy 的验证功能

2018-12-04 00:08:37 +08:00
 vempx
前两天 NAS 炸了,于是各种看资料,发现硬盘有个 URE 错误率的指标,了解这个指标以后从此再也不用 RAID5 了……
那么关于 URE 有个问题想请教一下大家,就是如果和 RAID5 没关系,只是在普通的复制数据,应该也是有可能碰到 URE 错误的吧。看描述好像这种错误硬盘自己不知道,那假如在复制的时候真的遇见了,是不是可以理解为写入目标盘的某个 bit 是错的?如果存在这种情况的话,那 FastCopy 的验证功能是否能够避免?
FastCopy 帮助文档里是这么描述验证工作流的:
Action detail: Read(Src) -> MD5(Src) -> Write(Dst) -> Read(Dst) -> MD5(Dst) -> Compare MD5(Src/Dst) (All actions are processed in parallel as much as possible)
它读源文件和算 Hash 好像是同时进行的,那么是不是可以理解为,如果硬盘读错了,他也就跟着拿错误的源数据做 Hash,然后把错误的源数据写入目标盘,再读一遍目标盘有错误的数据计算 Hash 做对比?如果是这样的话,是不是它并不能避免 URE 错误带来的影响?
3566 次点击
所在节点    NAS
8 条回复
ryd994
2018-12-04 01:23:40 +08:00
从你说的流程来说,不能
这个问题 zfs 可解
Osk
2018-12-04 01:52:41 +08:00
我觉得不能,最起码它可能受操作系统缓存的影响。主要是读取的文件本身可能就坏的。

btrfs raid 1 应该能解决这个问题:从磁盘读文件,计算 crc/hash,如果不一致,从 raid 镜像中尝试读取并校验,直到得到完整数据,否则 io error。btrfs 也支持 scrub,读取所有已有数据,利用 raid1 镜像和 crc 自动检测并修正写入不正确的数据或损坏的数据,两块盘只要不是同时坏同样位置的扇区应该都能抢救下。btrfs raid5 目前还不能用,有 bug。
vempx
2018-12-04 08:28:17 +08:00
@Osk 那意思是说,极端情况下,NTFS 也好 EXT4 也好这个毛病都无解了?
whileFalse
2018-12-04 08:43:54 +08:00
我记得扇区是有校验和的。理论上读出错数据是会重读的。
vempx
2018-12-04 09:46:24 +08:00
@whileFalse 这个 URE 错误好像是校验和也无法发现的,似乎就是硬盘根本无法得知自己读错了。
gamexg
2018-12-04 09:51:16 +08:00
微软的 ReFS 也可解决这个问题。
但是单盘就好别用这个,Refs 再碰到不可修复错误时直接删除出错文件来解决这个错误。
vempx
2018-12-04 10:04:44 +08:00
emmmmmm
群晖的系统是用 LVM 组的 RAID,然后再上面再跑 btrfs。
虽说原生 btrfs RAID5 有 bug,但是原生的 btrfs RAID1 应该是没问题的,不知道群晖里面怎么用原生 btrfs RAID1
Osk
2018-12-05 11:23:08 +08:00
@vempx 是啊,好像这两种 fs 都是没有校验码的,读出来的文件坏了就是坏了,关键是还不知道它坏了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/514024

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX