ZFS校验和错误,我何时更换驱动器?

我对ZFS相当陌生,我有一个简单的带8个驱动器的镜像存储池设置。 经过几个星期的运行,一个驱动器似乎产生了很多错误,所以我把它取代了。

再过几个星期,现在我发现在池周围出现了小的错误(请参阅下面的zpool status输出)。 我应该担心这个吗? 如何确定错误是否表明驱动器需要更换?

 # zpool status pool: storage state: ONLINE status: One or more devices has experienced an unrecoverable error. An attempt was made to correct the error. Applications are unaffected. action: Determine if the device needs to be replaced, and clear the errors using 'zpool clear' or replace the device with 'zpool replace'. see: http://zfsonlinux.org/msg/ZFS-8000-9P scan: scrub repaired 22.5K in 1h18m with 0 errors on Sun Jul 10 03:18:42 2016 config: NAME STATE READ WRITE CKSUM storage ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 enc-a ONLINE 0 0 2 enc-b ONLINE 0 0 0 mirror-1 ONLINE 0 0 0 enc-c ONLINE 0 0 0 enc-d ONLINE 0 0 2 mirror-2 ONLINE 0 0 0 enc-e ONLINE 0 0 2 enc-f ONLINE 0 0 1 mirror-3 ONLINE 0 0 0 enc-g ONLINE 0 0 0 enc-h ONLINE 0 0 3 errors: No known data errors 

ZFS有助于告诉我:“确定设备是否需要更换…”,但我不知道该怎么做。 我读了参考文章,这是有益的,但不完全确定。

我已经查看了受影响的驱动器的SMARTtesting结果,并没有发现我(所有的testing都没有错误地完成),但是我也可以发布SMART数据,如果这会有帮助的话。

更新:当准备重新启动到Memtest86 +,我注意到在控制台上的很多错误。 我通常在SSH中,所以我没有看到他们之前。 我不知道我应该检查哪个日志,但整个屏幕充满了看起来像这样的错误(不是我的确切的错误行,我刚刚从一个不同的论坛复制):

blk_update_request: I/0 error, dev sda, sector 220473440

从一些谷歌search,似乎这个错误可以指示一个坏的驱动器,但我很难相信,他们都是这样一次失败。 想从哪里走?

更新2:我遇到了这个ZOL问题 ,似乎可能与我的问题有关。 就像OP一样,我使用hdparm来减速驱动器,我看到类似的ZFS校验和错误和blk_update_request错误。 我的机器仍在运行Memtest,所以目前我无法检查我的内核或ZFS版本,但至less看起来像是一种可能性。 我也看到了这样一个令人沮丧的类似问题 。 有谁知道ZFS和旋转驱动器的问题?

更新3: LSI控制器上的不匹配的固件和驱动程序版本是否会导致这样的错误? 看起来我正在运行20.100.00.00的驱动程序版本和17.00.01.00的固件版本。 尝试刷新卡上更新的固件是否值得?

 # modinfo mpt2sas filename: /lib/modules/3.10.0-327.22.2.el7.x86_64/kernel/drivers/scsi/mpt2sas/mpt2sas.ko version: 20.100.00.00 license: GPL description: LSI MPT Fusion SAS 2.0 Device Driver author: Avago Technologies <[email protected]> rhelversion: 7.2 srcversion: FED1C003B865449804E59F5 # sas2flash -listall LSI Corporation SAS2 Flash Utility Version 20.00.00.00 (2014.09.18) Copyright (c) 2008-2014 LSI Corporation. All rights reserved Adapter Selected is a LSI SAS: SAS2308_2(D1) Num Ctlr FW Ver NVDATA x86-BIOS PCI Addr ---------------------------------------------------------------------------- 0 SAS2308_2(D1) 17.00.01.00 11.00.00.05 07.33.00.00 00:04:00:00 

更新4:dmesg输出中捕获更多的错误。 我不确定是什么触发了这些,但是在卸下arrays中的所有驱动器以准备更新LSI控制器的固件之后我注意到了它们。 我会稍微等一下,看看固件更新是否解决了这个问题,但这里是错误。 我不确定他们的意思。

 [87181.144130] sd 0:0:2:0: [sdc] FAILED Result: hostbyte=DID_OK driverbyte=DRIVER_OK [87181.144142] sd 0:0:2:0: [sdc] CDB: Write(10) 2a 00 35 04 1c d1 00 00 01 00 [87181.144148] blk_update_request: I/O error, dev sdc, sector 889461969 [87181.144255] sd 0:0:3:0: [sdd] FAILED Result: hostbyte=DID_OK driverbyte=DRIVER_OK [87181.144259] sd 0:0:3:0: [sdd] CDB: Write(10) 2a 00 35 04 1c d1 00 00 01 00 [87181.144263] blk_update_request: I/O error, dev sdd, sector 889461969 [87181.144371] sd 0:0:4:0: [sde] FAILED Result: hostbyte=DID_OK driverbyte=DRIVER_OK [87181.144375] sd 0:0:4:0: [sde] CDB: Write(10) 2a 00 37 03 87 30 00 00 08 00 [87181.144379] blk_update_request: I/O error, dev sde, sector 922978096 [87181.144493] sd 0:0:5:0: [sdf] FAILED Result: hostbyte=DID_OK driverbyte=DRIVER_OK [87181.144500] sd 0:0:5:0: [sdf] CDB: Write(10) 2a 00 37 03 87 30 00 00 08 00 [87181.144505] blk_update_request: I/O error, dev sdf, sector 922978096 [87191.960052] sd 0:0:6:0: [sdg] FAILED Result: hostbyte=DID_OK driverbyte=DRIVER_OK [87191.960063] sd 0:0:6:0: [sdg] CDB: Write(10) 2a 00 36 04 18 5c 00 00 01 00 [87191.960068] blk_update_request: I/O error, dev sdg, sector 906238044 [87191.960158] sd 0:0:7:0: [sdh] FAILED Result: hostbyte=DID_OK driverbyte=DRIVER_OK [87191.960162] sd 0:0:7:0: [sdh] CDB: Write(10) 2a 00 36 04 18 5c 00 00 01 00 [87191.960179] blk_update_request: I/O error, dev sdh, sector 906238044 [87195.864565] sd 0:0:0:0: [sda] FAILED Result: hostbyte=DID_OK driverbyte=DRIVER_OK [87195.864578] sd 0:0:0:0: [sda] CDB: Write(10) 2a 00 37 03 7c 68 00 00 20 00 [87195.864584] blk_update_request: I/O error, dev sda, sector 922975336 [87198.770065] sd 0:0:1:0: [sdb] FAILED Result: hostbyte=DID_OK driverbyte=DRIVER_OK [87198.770078] sd 0:0:1:0: [sdb] CDB: Write(10) 2a 00 37 03 7c 88 00 00 20 00 [87198.770084] blk_update_request: I/O error, dev sdb, sector 922975368 

更新5:我更新了LSI控制器的固件,但是在清除了ZFS错误和清理之后,我看到了相同的行为(在less数驱动器上发生了微小的校验和错误)。 下一步将更新驱动器上的固件。

更新6:在某些论坛上读到U-NAS NSC800机箱的其他人与提供的提升板有问题后,我更换了PCI提升板。 对校验和错误没有影响。 我一直推迟硬盘固件更新,因为这个过程是如此痛苦,但我想是时候吸了起来,并制作一个可启动的DOS闪存驱动器。

更新7:我更新了三个希捷硬盘上的固件。 其他驱动器要么没有可用的固件更新,要么我无法得到它(西部数据告诉我,我的驱动器没有固件更新)。 最初的磨合后没有出现任何错误,但是我至less会在一两个星期之前给出它,然后我才说这个问题已经解决了。 对我来说这似乎不太可能,三个驱动器中的固件可能会影响整个游戏池。

更新8:校验和错误返回,就像以前一样。 我可能会看到主板的固件更新,但在这一点上,我不知所措。 更换剩余的物理组件(控制器,背板,电缆)会很困难/昂贵,而且我不能100%确定这对我的设置(ZFS + Linux + LUKS +旋转空闲驱动器)没有问题。 欢迎任何其他想法。

更新9:仍然试图跟踪这一个。 我遇到了这个与我的情况有些相似的问题。 所以,我继续使用ashift=12重buildzpool,看看是否能解决问题(没有运气)。 然后,我咬紧牙关,买了一个新的控制器。 我刚安装了Supermicro AOC-SAS2LP-MV8 HBA卡。 我会给它一两个星期,看看是否解决了这个问题。

更新10:只是为了closures这一点。 自从新的HBA卡上线了大概两周后,我就冒着风险去做了,但之后我没有任何校验错误。 非常感谢所有帮助我分类的人。

在多个驱动器上出现这些错误似乎表明背板/控制器/电缆连接问题比磁盘或RAM问题更多。

我的一般经验法则是,如果错误持续上升,磁盘需要replace; 如果是静态的,可能会出现一些导致错误的暂态情况,并且系统不会再现造成问题的条件。

一些校验和错误并不一定表示任何坏的机械上的驱动器(位发生腐烂,ZFS只是恰好检测到它,而其他文件系统没有),但如果这些错误发生了一个多小时,那么这是一个与一年中发生的情况大不相同。