Linux 系统如何通过解读 SMART 信息(smartctl 命令输出)预测硬盘的损坏事件

目录

1. 说明 1

2. 内容 2

2.1 定义 2

2.2 问题: 2

2.3 解决方案 5

2.3.1 资料 5

2.3.2 结论 7

说明

本文档介绍磁盘 S.M.A.R.T信息,在linux 上如何根据 smartctl 的输出判断磁盘是否快要损坏(即使此时smartctl 给出磁盘状态依然是 PASSED),就像window上很多软件做的那样。即如何预先判断磁盘可能失败的情况,注意此文章只针对机械硬盘。

内容

定义

Wiki中的定义:(https://zh.wikipedia.org/wiki/S.M.A.R.T.)

S.M.A.R.T.,全称为“Self-Monitoring Analysis and Reporting
Technology”,即“自我监测、分析及报告技术”,是一种自动的硬盘状态检测与预警系统和规范。通过在硬盘硬件内的检测指令对硬盘的硬件如磁头、盘片、马达、电路的运行情况进行监控、记录并与厂商所设定的预设安全值进行比较,若监控情况将或已超出预设安全值的安全范围,就可以通过主机的监控硬件或软件自动向用户作出警告并进行轻微的自动修复,以提前保障硬盘数据的安全。除一些出厂时间极早的硬盘外,现在大部分硬盘均配备该项技术。

问题:

下面两张图分别是同一块磁盘在 windows HDtune 输出 和linux 上的 " samrtctl -x /dev/sdb" 的输出,通过对比两张图片可以发现,同一块盘,相同的S.M.A.R.T.属性值(197属性 raw value值为8),windows上HDtune 判断为警告状态,但是 Linux 上的 S.M.A.R.T 仍然为 PASSED 状态,显然 Linux 上 smartctl 工具对于磁盘的状态监控是不够敏感的。

实际上当磁盘出现一些“可以控制”错误的时候,S.M.A.R.T.并不会报告硬盘状态“FAILED”,即使是这些“可以控制”很有可能引起进一步的“不可以控制”错误,当S.M.A.R.T.报告硬盘状态“FAILED”即“不可以控制”的错误发生的时候,磁盘可能已经无法使用了。所以为了提前预计磁盘可能的失效,我们应该通过S.M.A.R.T.的输出来预计磁盘的状态,即使S.M.A.R.T.报告硬盘状态“PASSED”的值。

实际上,很多windows上的磁盘监控软件中的S.M.A.R.T.属性监控软件(例如上面的HDtune)就是这么做的,但是相关的软件却并没有Linux支持命令行输出的的版本来让程序使用,所以需要我们自行判断。

那么在 linux 上应该如何向 Windows 上的软件(如HDtune)那样根据具体的输出SAMRT数值进行可能失效的判断呢?

Linux 系统如何通过解读 SMART 信息(smartctl 命令输出)预测硬盘的损坏事件_第1张图片
Linux 系统如何通过解读 SMART 信息(smartctl 命令输出)预测硬盘的损坏事件_第2张图片

解决方案

资料

首先要了解 S.M.A.R.T.的各个属性值的意义,可以参照有详细的介绍:

https://www.cnblogs.com/york-hust/p/3380928.html

https://zh.wikipedia.org/wiki/S.M.A.R.T.

但是 S.M.A.R.T.有非常多的属性,并且各个属性的意义不尽相同,并且其判断方式也不进相同,那么应该选取那几个属性值进行监控并且判断呢?

这里可以参照著名的备份厂商 backblaze 的文章中的建议

https://www.backblaze.com/blog/hard-drive-smart-stats/

backblaze 建议主要监控以下五个属性的 RAW_VALUE 的值:

  • SMART 5 – Reallocated_Sector_Count.

  • SMART 187 – Reported_Uncorrectable_Errors.

  • SMART 188 – Command_Timeout.

  • SMART 197 – Current_Pending_Sector_Count.

  • SMART 198 – Offline_Uncorrectable.

如果发现该五项值中有大于0的情况,就说明该磁盘应该对它进行持续的关注了,因为根据其经验这5项S.M.A.R.T.指标的增长表明即将发生磁盘驱动器故障。

那么通过这5项属性,可以有多大把握预测到磁盘失效呢?
根据其文章:

https://www.backblaze.com/blog/what-smart-stats-indicate-hard-drive-failures/

Linux 系统如何通过解读 SMART 信息(smartctl 命令输出)预测硬盘的损坏事件_第3张图片

其运营的磁盘中有 4.2%的磁盘会出现上述5个 S.M.A.R.T. RAW_VALUE大于零的情况,并且其中有 76.7%的磁盘在之后真的出现了故障。当然还有23.3%的磁盘的故障无法通过这5个指标提前预测到。

实际上值得关注的参数还有一个即

  • SMART 10 Spin_Retry_Count

据称此值的增加可能导致磁盘在短时间内失效,但是时十分罕见的一种错误

可见下文中的评论区:

https://www.backblaze.com/blog/what-smart-stats-indicate-hard-drive-failures/

Linux 系统如何通过解读 SMART 信息(smartctl 命令输出)预测硬盘的损坏事件_第4张图片

结论

根据上文在Linux上,通过smartcl 命令输出中这五项指标(也可以再添加一个SMART 10 Spin_Retry_Count) :

  • SMART 5 – Reallocated_Sector_Count.

  • SMART 187 – Reported_Uncorrectable_Errors.

  • SMART 188 – Command_Timeout.

  • SMART 197 – Current_Pending_Sector_Count.

  • SMART 198 – Offline_Uncorrectable.

RAW_VALUE的值大于零为依据,即可以有7成的机率提前预测磁盘的失效。但是这些属性的RAW_VALUE值
出现了大于零的数值,并不代表这些盘一定会损坏,有可能磁盘已经自动修复了这些错误。所以这些值可以作为判断的依据,是否要更换磁盘还需要将管理员自行判断。

你可能感兴趣的:(Linux 系统如何通过解读 SMART 信息(smartctl 命令输出)预测硬盘的损坏事件)