概述
可能有时候会发现smartctl
和storcli
的故障报告有冲突,比如smart
告诉你磁盘坏了,但是storcli
却告诉你磁盘是正常的。
这是因为他们的敏感度不同,实际上smartctl
的敏感度很高,他用来预测磁盘是否即将产生故障,而storcli
敏感度相对较低,可能磁盘产生故障,或者临近故障时才会告警。
场景
准确的结论
smartctl
:报告预测性故障(Predictive Failure)smartctl
直接读取硬盘的 SMART 数据,重点在于实时监控和预测潜在问题。它基于硬盘固件的自检和阈值判断,报告可能即将发生的故障。- 例如:
- Seagate 盘:
[asc=5d, ascq=30]
(数据通道即将失败)。 - Toshiba 盘:
[asc=5d, ascq=43]
(伺服即将失败,寻道错误率过高)。
- Seagate 盘:
- 这些都是 预测性警告,表明硬盘检测到异常(如错误率升高、机械问题),但不一定意味着当前已经完全失效或无法使用。
- 特点:敏感度高,倾向于提前预警,即使问题尚未影响实际读写。
storcli
:报告当前状态,故障确认较滞后storcli
是通过 MegaRAID 控制器查询硬盘状态,主要反映当前的运行状态和控制器感知的错误。它更关注实际故障是否已经发生并影响到阵列的运行。- 例如:
- 两块盘的
Media Error Count
和Other Error Count
均为 0,说明当前没有未纠正的介质错误或非介质错误,磁盘仍在阵列中正常工作。 - 但
Predictive Failure Count
(Seagate 8 次,Toshiba 75 次)和S.M.A.R.T alert flagged by drive = Yes
表明控制器也接收到了硬盘的 SMART 警告。
- 两块盘的
- 特点:相对保守,只有当问题严重到导致未纠正错误或阵列受影响时,才会将磁盘标记为“故障”(如“Failed”或“Offline”)。
关键区别
smartctl
是预测性的:它告诉你“这个盘可能很快会出问题”,基于 SMART 数据提前报警。storcli
是反应性的:它更倾向于在问题实际发生(例如未纠正错误、数据丢失)并影响阵列后,才明确报告“故障”状态。- 中间地带:
storcli
的Predictive Failure Count
是一个桥梁,记录了预测性警告的次数,但不会立即改变磁盘状态,除非问题进一步恶化。
举例说明
- Seagate 盘:
smartctl
:数据通道即将失败(预测性警告)。storcli
:Predictive Failure Count = 8,SMART alert = Yes,但无当前错误,状态仍正常。- 解读:
smartctl
提前警告潜在问题,storcli
确认有预测性事件,但未达故障阈值。
- Toshiba 盘:
smartctl
:伺服即将失败,寻道错误率高(预测性警告)。storcli
:Predictive Failure Count = 75,SMART alert = Yes,但无当前错误,状态仍正常。- 解读:类似情况,但 Toshiba 盘的预测性事件更多(75 次),风险更高。
如果这两块盘未来出现未纠正错误(如介质错误增加),storcli
可能会将它们标记为“Failed”,而 smartctl
的预测将成为现实。
最终结论
smartctl
:像“天气预报”,预测可能下雨(故障),让你提前准备。storcli
:像“雨伞”,等到真的下雨(故障影响阵列)才打开,但会记录“天气预报”的次数(Predictive Failure Count)。
只是 storcli
并非完全等到“出问题以后”才反应,而是在问题严重到一定程度时才明确报告“故障”。目前两块盘都处于“预测性风险”阶段,尚未达到 storcli
标记为坏盘的程度。
建议
信任谁?
- 短期内以
smartctl
的预测为准,提前采取预防措施(如备份、测试)。 - 长期观察
storcli
,如果错误计数增加或阵列状态变化,再采取行动(如替换)。
- 短期内以
行动计划
- 对两块盘运行长时自检(
smartctl -t long
),确认问题严重性。 - 备份数据,监控
Predictive Failure Count
和 SMART 属性。 - 如果风险不可接受,建议直接替换磁盘(高次数预测故障更严重)。
- 对两块盘运行长时自检(