ZFS scrub 发现校验和错误,但 badblocks 和 smartctl 没有发现

ZFS scrub 发现校验和错误,但 badblocks 和 smartctl 没有发现

我已将两个驱动器配置为镜像的 ZFS 池。操作系统是 Ubuntu 16.04,我一直在使用供应商打包的 zfs 0.6.5。驱动器是 3T WD Green 和 3T WD Red(可能性能不是最佳,但这不是考虑因素),它们的字节数和扇区大小相等。我不使用分区,但zpool create像往常一样在每个驱动器上创建了两个分区。默认情况下,操作系统每月对池执行一次清理,我已经手动运行了几次清理。

清理过程曾多次在 WD Red 驱动器上发现校验和错误,但并非每次运行都是如此。据我所知,这些错误已自动修复,并未引起问题。CKSUM 列中显示的数字指示 3、5 和 9,现在,在最近升级到即将推出的 Ubuntu 18.04 和 ZFS 0.7.5 后,也显示为 31(如果我没记错的话,还有额外的信息“错误太多”)。

惊慌失措,我从池中分离了驱动器,并导出了池。没有导入驱动器,我badblocks -b 4096 -s -v -w在其上运行,但它报告了(0/0/0)错误。smartctl -a /dev/sda如果我理解正确的话,也没有显示任何异常(| grep -i error):

  1 Raw_Read_Error_Rate     0x002f   200   200   051    Pre-fail  Always       -       0
  7 Seek_Error_Rate         0x002e   200   200   000    Old_age   Always       -       0
199 UDMA_CRC_Error_Count    0x0032   200   200   000    Old_age   Always       -       0
200 Multi_Zone_Error_Rate   0x0008   100   253   000    Old_age   Offline      -       0

我重新将磁盘连接到池中,现在正在重新镀银。但我仍然感到困惑:是什么原因导致了反复出现的清理错误?我以后应该怎么做才能更好地找出问题所在,或者完全避免它?我并不特别热衷于购买替换驱动器,尤其是因为 WD Red 仅在 2016 年生产。

(我不确定这是否相关,但在某些时候,操作员错误或软件错误导致没有问题的 WD Green 驱动器分区表损坏。除了分离它、清除分区表并重新连接它之外,我找不到任何其他操作将其返回到池中。在重新镀银过程中,一些块无法从 WD Red 驱动器读取,我从备份中恢复了受影响的一个文件。清理检测到此事件之前和之后的校验和错误。)

答案1

没有简单的方法可以判断校验和失败的原因,因为它们独立于文件系统发生(除非它们是由文件系统本身的错误引起的,但我认为这里不是这种情况)。 和smartctl成功badblocks让我有希望,问题不是磁盘故障。

此页旨在帮助您了解错误:http://illumos.org/msg/ZFS-8000-9P. 引用自:

For example, the following cases will all produce errors that do not 
indicate potential device failure:

- A network attached device lost connectivity but has now recovered
- A device suffered from a bit flip, an expected event over long
  periods of time
- An administrator accidentally wrote over a portion of the disk
  using another program

我认为此时检查驱动器的连接并运行重新镀银是正确的途径。

相关内容