文章目录
- 一、前言
- 1、SMART技术介绍
- 2、SMART功能作用
- 3、SMART运行原理
- 二、部署实践
- 1、SMART软件安装
- 2、SMART操作命令
- 2.1、状态查询
- 2.2、健康测试
- 3、SMART信息解读
- 三、异常预测
一、前言
Wikipedia: Self-Monitoring,_Analysis_and_Reporting_Technology
1、SMART技术介绍
S.M.A.R.T,即Self-Monitoring Analysis and Report Technology(自我检测、分析及报告技术),是一种自动的硬盘状态检测与预警系统规范。
通过在硬盘硬件内的检测指令对硬盘部件(如磁头、盘片、马达、电路等)运行情况进行监控,记录并于硬盘厂商设定预期安全值进行比对,若监控情况将要或已超过预设安全值的范围,则通过主机的监控硬件或软件自动向用户作出警告,并进行轻微的自动修复,以保障硬盘数据安全,目前大部分硬盘均配备该项技术。
2、SMART功能作用
该项技术可以让硬盘更稳定运行,主要表现在以下几个方面:
- 当硬盘的损坏程度还在软件的可修复的范围(通常由厂商决定),软件就会自动修复,防止数据的进一步损坏,同时报告异常值,异常程度为警告
- 当硬盘的损坏程度已经超出软件的可修复的范围(通常由厂商决定),软件则会尽最大能力防止再次写入数据的丢失(如避开已损坏扇区),同时会报告异常值,异常程度为危险
- BIOS自检时,主板会检测硬盘的S.M.A.R.T.信息,如果硬盘的异常程度为危险时,会提醒用户及时备份数据(如嗡鸣声或上报告警信息)
3、SMART运行原理
该技术所需数据被存放在硬盘物理盘面最前面的磁道中,由硬盘厂商将相关管理程序和数据写入该磁道中,包括加解密程序,自监控程序,自修复程序等,主机的监控软件可以通过“SMART RETURN STATUS”的命令读取S.M.A.R.T.信息,且这些信息不允许被用户直接修改。
二、部署实践
官网地址:smartmontools
1、SMART软件安装
下载页面:Download
Smartmontools(S.M.A.R.T. Monitoring Tools)是一组实用程序,包括smartctl和smartd两部分,用于控制和监控S.M.A.R.T信息,适用于大部分ATA、SCSI和NVMe硬盘
Smartmontools可以显示由S.M.A.R.T监测到的硬盘问题,通知即将可能会发生的故障,提示用户及时备份数据
-
Windows系统
官网下载已编译好的exe程序,直接执行安装即可 -
Linux系统
使用在线源直接安装即可
# CentOS
yum install smartmontools -y
# Ubuntu
apt-get install smartmontools -y
2、SMART操作命令
2.1、状态查询
smartctl -a <device-path>
:获取硬盘所有SMART信息smartctl -i <device-path>
:获取硬盘标识信息smartctl -x <device-path>
:获取硬盘所有信息smartctl -A <device-path>
:获取硬盘SMART厂家预设属性及数值smartctl -H <device-path>
:获取硬盘健康状态
注:PASSED
表示硬盘健康状态良好
2.2、健康测试
smartctl -t short <device-path>
:后台检测硬盘,消耗时间短smartctl -t long <device-path>
:后台检测硬盘,消耗时间长smartctl -C -t short <device-path>
:前台检测硬盘,消耗时间短smartctl -C -t long <device-path>
:前台检测硬盘,消耗时间长
3、SMART信息解读
Known ATA S.M.A.R.T. attributes
硬盘SMART检测参数详解[转]
[root@node152 ~]# smartctl -a /dev/sdp
SMART Attributes Data Structure revision number: 10
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE1 Raw_Read_Error_Rate 0x000f 077 064 044 Pre-fail Always - 510016003 Spin_Up_Time 0x0003 092 091 000 Pre-fail Always - 04 Start_Stop_Count 0x0032 100 100 020 Old_age Always - 4085 Reallocated_Sector_Ct 0x0033 100 100 010 Pre-fail Always - 07 Seek_Error_Rate 0x000f 093 060 045 Pre-fail Always - 19093628589 Power_On_Hours 0x0032 051 051 000 Old_age Always - 4322210 Spin_Retry_Count 0x0013 100 100 097 Pre-fail Always - 012 Power_Cycle_Count 0x0032 100 100 020 Old_age Always - 404
184 End-to-End_Error 0x0032 100 100 099 Old_age Always - 0
187 Reported_Uncorrect 0x0032 100 100 000 Old_age Always - 0
188 Command_Timeout 0x0032 100 098 000 Old_age Always - 13 13 13
189 High_Fly_Writes 0x003a 100 100 000 Old_age Always - 0
190 Airflow_Temperature_Cel 0x0022 061 047 040 Old_age Always - 39 (Min/Max 35/42)
191 G-Sense_Error_Rate 0x0032 066 066 000 Old_age Always - 68816
192 Power-Off_Retract_Count 0x0032 100 100 000 Old_age Always - 1429
193 Load_Cycle_Count 0x0032 083 083 000 Old_age Always - 35840
194 Temperature_Celsius 0x0022 039 053 000 Old_age Always - 39 (0 19 0 0 0)
195 Hardware_ECC_Recovered 0x001a 077 001 000 Old_age Always - 51001600
197 Current_Pending_Sector 0x0012 100 100 000 Old_age Always - 0
198 Offline_Uncorrectable 0x0010 100 100 000 Old_age Offline - 0
199 UDMA_CRC_Error_Count 0x003e 200 200 000 Old_age Always - 10
240 Head_Flying_Hours 0x0000 100 253 000 Old_age Offline - 39924h+21m+27.906s
241 Total_LBAs_Written 0x0000 100 253 000 Old_age Offline - 586625564824
242 Total_LBAs_Read 0x0000 100 253 000 Old_age Offline - 251070645683
-
1 Raw_Read_Error_Rate
该值为厂商指定的原始值,从硬盘读取数据时发生的硬件读取错误率相关的数据,原始值对于不同厂商有不同的结构,且通常没有十进制数的意义;对于某些驱动器,这个数字可能会在正常操作期间增加,而不一定意味着错误; -
3 Spin_Up_Time
该值表示为主轴平均旋转时间(从0转速到完全运转耗费时长,单位为毫秒) -
4 Start_Stop_Count
该值表示为主轴启动/停止的次数(启停计数),即硬盘主轴电机启动/停止次数累计,系统一些功能如硬盘休眠功能等会使得硬盘启动/停止次数大大增加 -
※ 5 Reallocated_Sector_Ct
参数值通常应为0
该值表示为重映射扇区的次数,原始值表示已经找到并重新映射的坏扇区的计数,因此,属性值越高,驱动器必须重新分配的扇区就越多。这个值主要用来衡量驱动器的预期寿命; 如果一个驱动器有任何重新分配,那么它在最近几个月内失败的可能性就会大大增加 -
7 Seek_Error_Rate
该值为厂商指定的原始值,表示为磁头寻道误差率。如果机械定位系统出现部分故障,就会产生寻找误差。这种故障可能是由于许多因素造成的,如伺服系统的损坏,或硬盘的热扩展。原始值对于不同的供应商具有不同的结构,并且通常没有十进制数的意义。对于某些驱动器,这个数字可能会在正常操作期间增加,而不一定意味着错误 -
9 Power_On_Hours
该值表示为开机状态下的小时数,默认情况下,通常硬盘总预期寿命为5年(7x24小时不间断运行,即运行总小时数可达43800 h) -
10 Spin_Retry_Count
该值表示为旋转尝试启动的重试次数,记录了主轴电机启动后在规定时间内未达到额定转速而再次启动的次数,该属性值的增加是硬盘机械子系统出现问题的标志 -
12 Power_Cycle_Count
该值表示为通电周期次数,即硬盘电源开关次数累计,通常硬盘通电/断电只会在主机开机/关机时才会发生,主机经历一次开关机次数才会加1 -
※ 187 Reported_Uncorrect
参数值通常应为0,当出现不为0数值时,则需要考虑备份硬盘数据
该值表示为无法使用硬件ECC恢复的错误次数 -
※ 188 Command_Timeout
参数值通常应为0
该值表示为因硬盘超时而终止的操作次数 -
189 High_Fly_Writes
该值表示为因磁头写入高度出现偏差的次数,硬盘厂商实现了一个磁头写入高度传感器,通过检测磁头何时飞出其工作范围,来为写操作提供额外的保护;如果磁头的写入高度出现偏差,则停止写入进程,并将信息
重新写入或换一个位置写入 -
190 Airflow_Temperature_Cel
该值表示为硬盘内部盘片表面的气流温度 -
191 G-Sense_Error_Rate
该值表示为硬盘受到外部冲击、振动导致出错的频度 -
192 Power-Off_Retract_Count
该值表示为硬盘意外断电的次数,通常主机正常关机时会给硬盘一个通知,当出现意外断电时,硬盘在未收到关机通知突然失电,此时磁头自动复位,迅速离开盘片 -
193 Load_Cycle_Count
该值表示为硬盘磁头加载/卸载次数 -
194 Temperature_Celsius
该值表示为硬盘当前温度,通常建议运行温度不要超过45°(最高温度不超过60°),避免温度过高引起机械变形,导致寻道及读写错误率上升,降低硬盘性能 -
195 Hardware_ECC_Recovered
不同厂商具有特定的数据架构,该数据量大小不能直接说明问题
该值表示为硬盘通过ECC技术校正错误的次数,ECC(即Error Correcting Code)技术可以容忍错误,将错误自动修正,使得读写操作持续进行,不因错误而中断 -
※ 197 Current_Pending_Sector
参考:How to Fix Current Pending Sector Count Warning
参数值通常应为0,当出现非0情况且参数值在不断增加时,需考虑及时备份数据,避免文件系统损坏,硬盘变为RAW格式
该值表示为硬盘当前尚未重映射的不稳定扇区数量,当不能从扇区写入或读取数据时,这些扇区会被标记为坏扇区,并重新映射分配写入到硬盘备用扇区
当坏扇区被重映射时,5 Reallocated_Sector_Ct
(重映射扇区次数)参数值也会增加,当硬盘没有空闲扇区可以重映射时,197 Current_Pending_Sector
(当前尚未重映射的不稳定扇区数量)参数值也会增加 -
※ 198 Offline_Uncorrectable
参考: What Does Uncorrectable Sector Count Mean & How to Fix It
参数值通常应为0,当出现非0情况且参数值在不断增加时,表明读写硬盘扇区时存在许多不可纠正的错误,该错误可能损坏或造成硬盘永久性故障,导致数据丢失
该值表示为读写扇区发生不可纠正错误的总数 -
199 UDMA_CRC_Error_Count
参考:How to Fix UDMA CRC Error Count? Here Are 5 Solutions!
当参数值不为0且在不断增加时,表明硬盘控制器->数据线->硬盘接口链路存在问题,数据线损坏或者接口接触不良都可能会导致出现此问题(数值不再继续增加表示问题已解决)
该值表示为硬盘Ultra DMA CRC错误次数,表明主机和硬盘之间数据传输存在问题,UDMA (Ultra DMA)是超直接存储器访问(Ultra Direct Memory Access)的缩写,它是一种硬盘驱动器技术,允许硬盘驱动器直接与内存通信,而不依赖于CPU;CRC代表循环内存校验(Cyclic Memory Check),这是一个校验和,可以检测数据是否损坏 -
240 Head_Flying_Hours
该参数值表示为硬盘定位磁头期间所花费的时间 -
241 Total_LBAs_Written
该参数值表示为硬盘LBA写入总数 -
242 Total_LBAs_Read
该参数值表示为硬盘LBA读取总数
三、异常预测
基于随机森林算法进行硬盘故障预测
Making Sense of SSD SMART Stats
backblaze是一家领先的云存储服务提供商,为企业、开发人员、IT专业人员和个人构建应用程序、托管内容、管理媒体、备份和存档数据提供了基础
自2013年以来,backblaze每季度会发布其数据中心硬盘的统计数据和相关分析(具体可参考Hard Drive Data and Stats)
backblaze根据其数据中心硬盘监控数据,分析HDD故障和SMART属性之间的关联性(具体可参考What SMART Stats Tell Us About Hard Drives),
发现SMART 5、187、188、197、198与HDD故障的相关率最高,SMART属性相关说明如下
SMART编号 | SMART名称 | 相关说明 |
---|---|---|
SMART 5 | Reallocated Sectors Count | 重映射扇区次数(当出现坏扇区时,会触发重新映射分配写入备用扇区) |
SMART 187 | Reported Uncorrectable Errors | 无法使用硬件ECC恢复的错误次数 |
SMART 188 | Command Timeout | 因硬盘超时而终止的操作次数 |
SMART 197 | Current Pending Sector Count | 当前尚未重映射的不稳定扇区数量 |
SMART 198 | Uncorrectable Sector Count | 读写扇区发生不可纠正错误的总数 |
正常情况下,这5个SMART属性值应为0,当出现全部非0情况,对应硬盘出现故障的概率会很大