我对 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 很有帮助地告诉我“确定设备是否需要更换...”,但我不确定该怎么做。我确实读了参考文章,它很有帮助,但并不完全具有决定性。
我查看了受影响驱动器的 SMART 测试结果,并没有发现什么特别之处(所有测试均无错误完成),但如果有帮助的话,我也可以发布 SMART 数据。
更新:在准备重新启动 Memtest86+ 时,我注意到控制台上有很多错误。我通常使用 SSH 进入,所以之前没有看到它们。我不确定我应该检查哪个日志,但整个屏幕都充满了如下所示的错误(不是我的确切错误行,我只是从另一个论坛复制了这个):
blk_update_request: I/0 error, dev sda, sector 220473440
从谷歌搜索来看,这个错误似乎表明驱动器有问题,但我很难相信它们会同时出现这样的故障。您觉得下一步该怎么办?
更新 2:我遇到了这个ZOL问题这似乎与我的问题有关。像 OP 一样,我正在使用 hdparm 来降低驱动器转速,并且我看到了类似的 ZFS 校验和错误和blk_update_request
错误。我的机器仍在运行 Memtest,因此目前我无法检查我的内核或 ZFS 版本,但这至少看起来是一种可能性。我还看到了这个类似问题这有点令人沮丧。有人知道 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
。我不确定是什么触发了这些错误,但我在卸载阵列中的所有驱动器以准备更新 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 错误并清理后,我看到了相同的行为(几个驱动器上存在轻微的校验和错误)。下一步将是更新驱动器本身的固件。
更新 6:在一些论坛上看到其他使用 U-NAS NSC800 机箱的人在使用随附的转接卡时遇到了问题后,我更换了 PCI 转接卡。这对校验和错误没有影响。我一直推迟 HDD 固件更新,因为这个过程太麻烦了,但我想是时候忍耐一下并制作一个可启动的 DOS 闪存驱动器了。
更新 7:我更新了三块 Seagate 硬盘的固件。其他硬盘要么没有可用的固件更新,要么我无法获取(西部数据告诉我我的硬盘没有固件更新)。初始清理后没有出现任何错误,但我至少要等上一两周才能说这解决了问题。在我看来,三块硬盘中的固件不太可能像这样影响整个池。
更新 8:校验和错误又回来了,就像以前一样。我可能会研究主板的固件更新,但目前我不知所措。更换剩余的物理组件(控制器、背板、电缆)会很困难/昂贵,而且我不能 100% 确定这不是我的设置(ZFS + Linux + LUKS + 降低空闲驱动器转速)的问题。欢迎提出任何其他想法。
更新 9:仍在尝试追踪此内容。我偶然发现了这个问题这与我的情况有些相似。因此,我继续重建 zpool,ashift=12
看看是否能解决问题(没有成功)。然后,我咬紧牙关,买了一个新的控制器。我刚刚安装了一个超微 AOC-SAS2LP-MV8HBA 卡。我会等待一两周的时间,看看是否能解决问题。
更新 10:最后再说一下。自从新 HBA 卡安装到位以来已经过去了大约 2 周的时间,尽管可能会带来厄运,但自那以后我再也没有遇到过校验和错误。非常感谢所有帮助我解决这个问题的人。
答案1
多个驱动器上出现这些错误似乎表明存在背板/控制器/电缆问题,而不是磁盘或 RAM 问题。
答案2
我的经验法则是,如果错误持续意外增加,则需要更换磁盘;如果是静态的,则可能存在导致错误的某些瞬态情况,并且系统不会重现导致问题的条件。
一些校验和错误并不一定表明驱动器在机械上存在任何问题(位腐烂会发生,ZFS 恰好检测到它而其他文件系统则不会),但如果这些错误发生在一小时内,那么情况与它们发生在一年内的情况就大不相同了。