我有一台运行 ZFS 和 3ware 9690SA 控制器的 FreeBSD 8.x 机器。
3ware 控制器显示带有以下磁盘之一的 ECC-ERROR:
//host> /c0 show
VPort Status Unit Size Type Phy Encl-Slot Model
------------------------------------------------------------------------------
p0 OK u0 279.39 GB SAS 0 - SEAGATE ST3300657SS
p1 OK u0 279.39 GB SAS 1 - SEAGATE ST3300657SS
p2 OK u1 931.51 GB SAS 2 - SEAGATE ST31000640SS
p3 ECC-ERROR u2 931.51 GB SAS 3 - SEAGATE ST31000640SS
p4 OK u3 931.51 GB SAS 4 - SEAGATE ST31000640SS
/c0 show events
在其最近的历史记录中没有显示 ECC 错误。
ZFS 当前未检测到任何错误。zpool status
说No known data errors
我的问题:这ECC-ERROR
是我需要关注的事情吗?
根据3ware CLI 9.5.2 Manual,anECC-ERROR
表示 3ware 控制器在该驱动器上捕获了一个或多个扇区的读取错误。这有时会在 RAID 阵列从故障磁盘中恢复时发生。相信在3ware Controller验证每个磁盘时也可以检测到ECC-ERRORS。没有一个驱动器出现故障,因此没有重建驱动器,所以我假设 3ware 在运行它每周对磁盘进行自动验证扫描时发现了一个坏扇区。这是一个安全的假设吗?
根据我们的日志,ZFS 没有在该驱动器上检测到任何坏扇区。ZFS 可以解决读取错误——如果 ZFS 检测到驱动器上的坏扇区,它只会将该扇区标记为坏扇区,并且不再使用它。从 ZFS 的角度来看,一个坏扇区没什么大不了的,尽管它可能表明驱动器开始坏了。
我可以ECC-ERROR
使用 清除错误tw_cli /c0 rescan
,并根据 tw_cli 手册页“如果条件不再存在,重新扫描控制器将清除错误状态”。并且由于 ECC 错误仅在读取特定磁盘扇区时才会发生,因此该错误ECC-ERROR
消失了。由于 ZFS 可能已将该坏扇区移动到磁盘的另一个区域,并将该坏扇区标记为“坏”,因此将永远不会再读取该坏扇区。
根据 docs,在单个驱动器的情况下,这意味着您可能有损坏的数据,也可能没有。ZFS 保存对象的校验和,因此可以进行数据完整性检查。确保进行 RAID 和计划的完整性检查。