一段时间以来,在高负载下,我经常遇到 RAID5 故障。我总是能够在重新启动后强制重组阵列,并且掉线磁盘和非掉线磁盘之间的事件计数始终小于 20。
经过一番调查后,我认为问题不在于磁盘本身(它们通常同时一起掉落),而在于控制器。
这是发生这种情况时 dmesg 日志的摘录(在这种情况下,它是在强制检查阵列时发生的):http://paste.ubuntu.com/6067736/
在出现这样的故障后,驱动器 /dev/sde 和 /dev/sdf 似乎都无法访问,因为 smartctl -a /dev/sde 放弃了这一点:
smartctl 5.41 2011-06-09 r3365 [x86_64-linux-3.2.0-37-generic] (local build)
Copyright (C) 2002-11 by Bruce Allen, http://smartmontools.sourceforge.net
Vendor: /5:0:0:0
Product:
User Capacity: 600,332,565,813,390,450 bytes [600 PB]
Logical block size: 774843950 bytes
>> Terminate command early due to bad response to IEC mode page
A mandatory SMART command failed: exiting. To continue, add one or more '-T permissive' options.
虽然 600PB 的磁盘很不错,但它只有 1.5TB。
我有 3 个 RAID 磁盘连接到主板上的 ATA 端口,还有 2 个磁盘连接到外部 (PCIex) ATA 控制器。从日志中的故障来看,我有理由相信是控制器有问题。
我该怎么做才能修复这个问题?更换 ATA 电缆?更改一些设置?我对 Linux 还很陌生。
来自smartctl的数据:
Model Family: Western Digital Caviar Green (Adv. Format)
Device Model: WDC WD15EARS-00MVWB0
Serial Number: WD-WMAZA2091111
LU WWN Device Id: 5 0014ee 6ab49271f
Firmware Version: 51.0AB51
SDF 给出了以下统计数据:
SMART Attributes Data Structure revision number: 16
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE
1 Raw_Read_Error_Rate 0x002f 171 169 051 Pre-fail Always - 34595
3 Spin_Up_Time 0x0027 253 253 021 Pre-fail Always - 1016
4 Start_Stop_Count 0x0032 100 100 000 Old_age Always - 78
5 Reallocated_Sector_Ct 0x0033 162 162 140 Pre-fail Always - 735
7 Seek_Error_Rate 0x002e 200 199 000 Old_age Always - 0
9 Power_On_Hours 0x0032 070 070 000 Old_age Always - 22178
10 Spin_Retry_Count 0x0032 100 253 000 Old_age Always - 0
11 Calibration_Retry_Count 0x0032 100 253 000 Old_age Always - 0
12 Power_Cycle_Count 0x0032 100 100 000 Old_age Always - 76
192 Power-Off_Retract_Count 0x0032 200 200 000 Old_age Always - 43
193 Load_Cycle_Count 0x0032 199 199 000 Old_age Always - 3415
194 Temperature_Celsius 0x0022 118 110 000 Old_age Always - 32
196 Reallocated_Event_Count 0x0032 001 001 000 Old_age Always - 691
197 Current_Pending_Sector 0x0032 200 200 000 Old_age Always - 6
198 Offline_Uncorrectable 0x0030 200 200 000 Old_age Offline - 2
199 UDMA_CRC_Error_Count 0x0032 200 200 000 Old_age Always - 0
200 Multi_Zone_Error_Rate 0x0008 199 189 000 Old_age Offline - 319
虽然 sde 没有显示任何重新分配或读取错误:
SMART Attributes Data Structure revision number: 16
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE
1 Raw_Read_Error_Rate 0x002f 200 200 051 Pre-fail Always - 0
3 Spin_Up_Time 0x0027 253 253 021 Pre-fail Always - 925
4 Start_Stop_Count 0x0032 100 100 000 Old_age Always - 73
5 Reallocated_Sector_Ct 0x0033 200 200 140 Pre-fail Always - 0
7 Seek_Error_Rate 0x002e 200 200 000 Old_age Always - 0
9 Power_On_Hours 0x0032 070 070 000 Old_age Always - 22178
10 Spin_Retry_Count 0x0032 100 253 000 Old_age Always - 0
11 Calibration_Retry_Count 0x0032 100 253 000 Old_age Always - 0
12 Power_Cycle_Count 0x0032 100 100 000 Old_age Always - 71
192 Power-Off_Retract_Count 0x0032 200 200 000 Old_age Always - 38
193 Load_Cycle_Count 0x0032 199 199 000 Old_age Always - 3378
194 Temperature_Celsius 0x0022 114 106 000 Old_age Always - 36
196 Reallocated_Event_Count 0x0032 200 200 000 Old_age Always - 0
197 Current_Pending_Sector 0x0032 200 200 000 Old_age Always - 0
198 Offline_Uncorrectable 0x0030 200 200 000 Old_age Offline - 0
199 UDMA_CRC_Error_Count 0x0032 200 200 000 Old_age Always - 0
200 Multi_Zone_Error_Rate 0x0008 200 200 000 Old_age Offline - 0
盘确实是绿的,买的时候没想过会有问题。
我觉得奇怪的是,在负载下,两个磁盘通常都会从阵列中掉出来。故障磁盘会以某种方式“级联”到同一 ATA 控制器上的另一个磁盘吗?
无论如何我想我必须购买至少一个新驱动器。
编辑:有趣的是,我说通常两个驱动器同时死机;今天早上检查后,我才意识到只有 sdf 从阵列中掉线了,而且已经很长时间了,因为偶数计数差异约为 4000。在这种情况下,我认为尝试将其添加回阵列是没有意义的,我需要快速找到一个备用的。
答案1
ATA 错误相当常见,在 Linux 中更容易发现错误进行调试。
导致 ATA 错误的原因主要有两个:
- 磁盘有故障/绿色
- 从磁盘到处理器/内存(SATA 电缆或它们所连接的连接器)的通信问题
根据我的经验,这在磁盘问题中更为常见。
- 如果您有绿色驱动器,那么对于某些驱动器的节能特性来说,这将是一个问题。某些型号的驱动器将旋转速度降低,当 RAID 尝试访问磁盘时,如果驱动器没有及时响应,它将标记为 ATA 错误。(这可能是误报,您无能为力。)
- 如果磁盘有问题,您可能需要使用驱动器制造商的工具在另一台计算机上测试该磁盘。这将确保问题不是出在连接上,并且需要对驱动器进行更深入的测试。
如果您有一根需要更换的电缆,它可能会帮助排除该问题。
有趣的是,我在 WDC 上看到了这个问题。(我认为驱动器上可能有一个固件解决了这个问题……我认为他们不再公开这样做了。)
驱动模型是啥?