1
ryd994 2018-12-04 01:23:40 +08:00 via Android
从你说的流程来说,不能
这个问题 zfs 可解 |
2
Osk 2018-12-04 01:52:41 +08:00 via Android
我觉得不能,最起码它可能受操作系统缓存的影响。主要是读取的文件本身可能就坏的。
btrfs raid 1 应该能解决这个问题:从磁盘读文件,计算 crc/hash,如果不一致,从 raid 镜像中尝试读取并校验,直到得到完整数据,否则 io error。btrfs 也支持 scrub,读取所有已有数据,利用 raid1 镜像和 crc 自动检测并修正写入不正确的数据或损坏的数据,两块盘只要不是同时坏同样位置的扇区应该都能抢救下。btrfs raid5 目前还不能用,有 bug。 |
4
whileFalse 2018-12-04 08:43:54 +08:00
我记得扇区是有校验和的。理论上读出错数据是会重读的。
|
5
vempx OP @whileFalse 这个 URE 错误好像是校验和也无法发现的,似乎就是硬盘根本无法得知自己读错了。
|
6
gamexg 2018-12-04 09:51:16 +08:00
微软的 ReFS 也可解决这个问题。
但是单盘就好别用这个,Refs 再碰到不可修复错误时直接删除出错文件来解决这个错误。 |
7
vempx OP emmmmmm
群晖的系统是用 LVM 组的 RAID,然后再上面再跑 btrfs。 虽说原生 btrfs RAID5 有 bug,但是原生的 btrfs RAID1 应该是没问题的,不知道群晖里面怎么用原生 btrfs RAID1 |