2023年12月7日发(作者:)

磁盘检测之读懂S.M.A.R.T

S.M.A.R.T.(自监测、分析、报告技术):这是现在硬盘普遍采用的数据安全技术,在硬盘工作的时候监测系统对电机、电路、磁盘、磁头的状态进行分析,当有异常发生的时候就会发出警告,有的还会自动降速并备份数据。

早在上个世纪九十年代,人们就意识到数据的宝贵性胜于硬盘自身价值,渴望有种技术能对硬盘故障进行预测并实现相对安全的数据保护,因此S.M.A.R.T技术应运而生。对于不少用户,特别是商业用户而言,一次普通的硬盘故障便足以造成灾难性后果,所以时至今日,S.M.A.R.T技术仍为我们所用。

S.M.A.R.T信息保留在硬盘的系统保留区(service area)也叫固件区内,这个区域一般位于硬盘0物理柱面的最前面几十个物理磁道,由厂商写入相关内部管理程序。系统保留区除了S.M.A.R.T信息表外还包括低级格式化程序、加密解密程序、自监控程序、自动修复程序等。监测软件通过一个名为“SMART

RETURN STATUS”的命令(命令代码为:B0h)对S.M.A.R.T信息进行读取,且不允许最终用户对信息进行修改。

在硬盘以及操作系统都支持S.M.A.R.T.技术并且该技术默认开启的的情况下,在不良状态出现时S.M.A.R.T.技术能够在屏幕上显示英文警告信息:“WARNING:IMMEDIATLY BACKUP YOUR DATA

AND REPLACE YOUR HARD DISK DRIVE,A FAILURE MAY BE IMMINENT.” (警告:立刻备份你的数据同时更换硬盘驱动器,可能有错误出现。)

SMART数据分析:

ID

英文名

read error

rate

Throughput

Performance

Spin-Up Time

Start/Stop

Count

中文译名 最优

底层数据读取错误率

说明

存储器从一个硬盘表面读取数据时发生的错误率。原始值由于不同厂商的不同计算方法而有所不同,其十进制值往往无意义的。一般来说有数值意味着磁头已出现问题了。

读写通量性能

通常是硬盘读写性能的测量值,如果其值有变动,有可能硬盘出现了问题。

盘片由静止启动加速到稳定正常运行速度的平均所需时间。

一个盘片启动关闭周期的统计值,只有硬盘从完全断电中启动或从睡眠模式恢复,盘片主轴电机被启动时才会记一次数。

记录由于损坏而被映射到无损的后备区的扇区计数。当硬盘出现损坏扇区时,可以通过将其物理空间指向到特定的无损0x05

Reallocated

Sector Count

区域进行重映射修复,从而出现坏扇区的硬盘仍可使用。但重定位扇区计数 当高过一定数值后,后备区消耗殆尽而无法再重映射修复时,这些坏扇区就会显现出来且无法自行修复。除外由于要要求磁头读取这些坏扇区时专门再移动到后备区读写数据,对硬盘读写性能也有影响。

0x06

Read Channel

Margin

信道读取余量 读取数据时信道可用的余量,该属性没制定任何功用。

(该属性是特定制造商才有的)磁头寻找磁道由于机械问题0x07

Seek Error

Rate

寻道错误率

而出错几率,有多种原因可能引致出错,如:磁头伺服构件,盘体过热,或损坏。于不同厂商的不同计算方法而有所不同,其十进制值往往无意义的。

0x01

0x02

0x03 盘片启动时间

电机起停次计数 0x04 0x08

Seek Time

Performance

Power-On

Hours

Spin Retry

Count

Recalibration

Retries

Power Cycle

Count

Soft Read

Error Rate

SATA

Downshift

Error Count

寻道性能

每次寻道时间的平均值,该值短期内迅速减少,有可能硬盘出现了问题。

硬盘加电时间

硬盘自出厂以来加电启动的统计时间,单位为小时(或根据制造商设定为分钟或秒),一般用户以该值判定硬盘是否被使用过。

0x09

电机起转重试

主轴电机在一次加速至正常速度失败后尝试重新继续加速到正常运行速度的统计数,该值改变时意味着硬盘的机械部件已经出现问题了。

0x0a

磁头校准重试 0x0b

磁头在一次运行失败时尝试校准至正常状态的统计数,该值改变时意味着硬盘的机械部件已经出现问题了。

0x0c

0x0d

设备开关计数

该属性表示硬盘电源充分开/关循环计数。

软件读取错误率 操作系统读取数据时的出错率。

0xb7 SATA降级运行计数

Western Digital 和 Samsung 特有属性,记录由于兼容问题导致降低SATA传输级别运行的计数。

HP专有S.M.A.R.T.(SMART IV)技术的一个特有属性,记录硬盘从盘片读取数据到高速缓存后再传输到主机时数据校验出错的次数。

0xb8

End-to-End

error

Head Stability

Induced

终端校验出错

0xb9 磁头稳定性 Western Digital特有属性

0xba

Op-Vibration

Detection

Reported

Western Digital特有属性

报告不可纠正错误 硬件ECC无法恢复的错误计数。 0xbb

Uncorrectable

Errors

Command

Timeout

通信超时

由于无法连接至硬盘而终止操作的统计数,一般为0,如果远超过0,则可能电源问题,数据线接口氧化或更严重的问题。

0xbc

0xbd

High Fly

Writes

磁头写入高度

硬盘进行写入时对磁头高度进行监控以提供额外的保障。当磁头处于不正常高度进行写入时,写入操作会被终止,原有数据重写入或者将该扇区重映射到安全区域。该属性是统计值。

0xbe

Airflow

Temperature

G-sense Error

Rate

Power-off

Retract Count

气流温度

电源关闭磁头收回计数

Western Digital特有属性,计量硬盘内气流温度,和检测项0xc2相似。

计量可能对硬盘做成损害的冲击次数。 0xbf 加速度错误率

0xc0 计量磁头在没有加电时不移进硬盘的值。 0xc1

0xc2

Load Cycle

Count

Temperature

Hardware

磁头升降计数

温度

计量磁头在加电时移进/移出硬盘周期的值。

计量硬盘的温度

0xc3

ECC

Recovered

Reallocation

Event Count

Current

Pending

Sector Count

硬件ECC恢复 (特定原始值)

0xc4 重定位事件计数

记录已重映射扇区和可能重映射扇区的事件计数。

0xc5 等候重定的扇区计数 记录了不稳定的扇区的数量。

0xc6

Uncorrectable

Sector Count

UltraDMA

无法校正的扇区计数

记录硬盘通讯时发生的CRC错误。

记录肯定出错的扇区数量。

0xc7

CRC Error

Count

Multi-Zone

Error Rate

Write Error

Rate

Soft Read

Error Rate

Data Address

Mark errors

Run Out

Cancel

Soft ECC

Correction

Thermal

Asperity Rate

Flying Height

Spin High

Current

Spin Buzz

Offline Seek

Performance

Vibration

During Write

UltraDMA通讯CRC错误

0xc8

0xc8

0xc9

多区域错误率

写入一个区域时发现的错误的计数。

写入错误率 Fujitsu的特别属性,写入一个区域时发现的错误的计数。

记录脱轨错误。 逻辑读取错误率

0xca 数据地址标记错误

热嘈率

记录数据地址标记错误(或制造商特定的计数)

0xcb

0xcc

用完取消 ECC错误计数

记录由软件ECC更正的错误计数。 逻辑ECC纠正

0xcd 记录高温导致的出错记数。

记录磁头的飞行高度。飞得太低会增加磁头撞毁的机会,飞得太高增加读写错误的机会。

记录主轴电机运转时浪涌电流的次数。

记录由于电力不足而启动主轴电机的蜂鸣声次数。

在其内部测试硬盘的寻址能力表现。

(没定性,出现在Maxtor 6B200M0 200GB 和Maxtor

2R015H1 15GB 的硬盘中)

记录写入操作的震动数。

0xce

0xcf

0xd0

0xd1

0xd2

0xd3

飞行高度

主轴电机浪涌电流计数

离线寻址效能

写操作震动

0xd4

0xdc

0xdd

0xde

0xdf

0xe0

0xe1

0xe2

Shock During

Write

Disk Shift

G-Sense

Error Rate

Loaded Hours

Load/Unload

Retry Count

Load Friction

Load/Unload

Cycle Count

Load 'In'-time

Torque

写操作冲击

盘体偏移

加速计出错率

数据加载时间

加载/卸载重试次数

负载摩擦

加载/卸载循环计数

磁头

记录写入操作时的冲击数。

记录盘体由于冲击或温度导致偏离主轴的相对距离。

从外部诱发的冲击和振动产生的错误计数。

数据读取时所花费的时间。(磁头移动时间)

磁头改变位置时所需时间。

读写时由于机械摩擦做成的阻力。

总负载周期计数。

磁头加载所需总时间(不包括在停泊区的花费)。

0xe3

Amplification

Count

扭矩放大计数 尝试来补偿盘片的速度变化的计数。

0xe4

Power-Off

Retract Cycle

GMR Head

Amplitude

Temperature

Endurance

Remaining

Available

Reserved

Space

Power-On

Hours

Media

Wearout

Indicator

Head Flying

Hours

Transfer Error

Rate

Total LBAs

Written

Total LBAs

Read

Read Error

Retry Rate

Free Fall

Protection

断电缩回周期

切断电源后电磁枢自动缩回的时间计数。

0xe6

0xe7

0xe8

GMR磁头振幅

硬盘温度

耐久性剩余

磁头振幅计数(磁头反复正反向运动距离)。

记录硬盘温度。

磁盘可使用周期与设计可使用周期的百分比。

0xe8 可用保留空间

Intel固态硬盘报告的可提供的预留空间占作为一支全新的固态硬盘预留空间的百分比。

0xe9 加电时间 处于开机状态的小时数。

Intel固态硬盘报告的NAND刷写寿命,全新时值为100,最0xe9 介质耗损指标 低值为1,其跌幅随NAND的擦除周期增加而在0到最大额定周期范围减少。

0xf0

0xf0

0xf1

0xf2

0xfa

0xfe

磁头飞行时间 磁头处于定位中的时间。

传输错误率 在数据传输时连接被重置的次数计数。(Fujitsu特有属性)

LBA写入总数

LBA读取总数

读取错误重试率

自由跌落保护

LBA写入总数计数。

LBA读取总数计数,部分S.M.A.R.T.检测程序会把原始值显示为负数,这是因为该原始值为48位,而不是32位的。

从磁盘读取时的错误计数。

对“自由落体事件”检测计数。 说明

表示数值越高越好

表示数值越低越好

重要项:红色底 当超出安全范围会对性能严重影响

例如用任意软件查看硬盘的SMART结果如下:

S.M.A.R.T检测参数分为7列,分别是ID检测代码、属性描述、属性值、最大错误值、阈值、实际值和属性状态。

ID检测代码(ID)

ID检测代码不是唯一的,厂商可以根据需要,使用不同的ID代码或根据检测参数的多少增减ID代码的数量。上表已经详细介绍了ID检测代码及其说明。

属性描述(Name)

属性描述即检测项目名称。可由厂商自定义增减,由于ATA标准不断更新,有时候同一品牌的不同型号产品也会有所不同。但必须确保S.M.A.R.T规定的几个主要检测项目(虽然不同厂商对检测项目都有特定的命名规则,但这些监测项目的实质其实是一样的)。 阈值(Tresh)

是由硬盘厂商指定的可靠的属性值,通过特定公式计算而得。如果有一个属性值低于相应的阈值,就意味着硬盘将变得不可靠,保存在硬盘里的数据也很容易丢失。可靠属性值的组成和大小对不同硬盘来说是有差异的。这里需要注意的是,ATA标准中只规定了一些S.M.A.R.T参数,它没有规定具体的数值,“Threshold”的数值是厂商根据自己产品特性而确定的。因此,用厂商自己提供的检测软件往往会跟Windows下的检测软件(例如AIDA32)的检测结果有较大出入。这里,推荐以厂商软件的检测结果为标准,因为Windows环境下,系统要求硬盘的启动程序比DOS下多得多,这可能导致硬盘S.M.A.R.T值比DOS环境下检测的波动更大。

属性值(VAL)

属性值是指硬盘出厂时预设的最大正常值,一般范围为1~253。通常,最大的属性值等于100(适用于IBM、昆腾、富士通)或253(适用于三星)。当然,也有例外的时候,比如由西部数据公司生产的部分型号硬盘,就用了两个不同的属性值,最初生产时属性值设为200,但后来生产的硬盘属性值又改为100。

最大出错值(Wrst)

最大出错值是硬盘运行中曾出现过的最大的非正常值。它是对硬盘累计运行的计算值,根据运行周期,该数值会不断地刷新,并且会非常接近阈值。S.M.A.R.T分析和判定硬盘的状态是否正常,就是根据这个数值和阈值的比较结果而定。新硬盘开始时有最大的属性值,但随着日常使用或出现错误,该值会不断减小。因此,较大的属性值意味着硬盘质量较好而且可靠性较高,而较小的属性值则意味着故障发生的可能性增大。

实际值(Raw)

是硬盘各检测项目运行中的实际数值,很多项目是累计值。例如:上图中的Power Cycle Count(启停次数),累计的实际值是3201,即该硬盘从开始到现在累计加电启停3201次。

属性状态(Health)

这是S.M.A.R.T针对前面的各项属性值进行比较分析后,提供的硬盘各属性目前的状态,也是我们直观判断硬盘“健康”状态的重要信息。根据S.M.A.R.T的规定,这种状态一般有正常、警告和报告故障或错误等3种状态。S.M.A.R.T判定出这3个状态与S.M.A.R.T的 Pre-failure/advisory BIT(预知错误/发现位)参数的赋值密切相关。

当Pre-failure/advisory BIT=0,并且可靠属性值远大于阈值的情况下,为正常提示“OK”标志。当Pre-failure/advisory BITt=0,并且可靠属性值大于阈值但接近阈值临界值时,为警告提示“!”标志;当Pre-failure/advisory BITt=1,并且可靠属性值小于阈值时,为报告故障或错误提示“!!!”标志。

在图中,我们发现出现“OK”标志的正常状态下有“值正常”(Value is Normal)和“总是略过”(Always

Passing)两个状态说明。它们的区别是:“值正常”表明此项S.M.A.R.T值是正常的,硬盘没有故障;“永远略过”则表明此项只是某参数的记录,没有合格与不合格的标准,如“Power-on time”,这个参数只是记录了硬盘已经加电工作的时间,这个参数应当永远合格,它不用来衡量硬盘的性能,因此显示为“OK:Value

is Normal”。

下面我们以ID为“04”的Number of spin-up times(加电次数)检测参数为例,完整地来理解这7列参数的意义:从图中我们看到此参数规定的属性正常值(VAL)为“100”,这个正常值是通过计算公式:“100-硬盘正常使用寿命期间的加电次数/1024”而给出的。而最大出错值是硬盘运行的累计计算值。例如如果是新硬盘,则加电次数为0,因此为100-0/1024=100,最大出错值=属性正常值。随着加电次数的增加,该最大出错值不断变化。厂商规定的阈值为20,即当硬盘的开关电次数达到81920次时(100-81920/1024=20),最大出错值=阈值,系统就会提示用户备份数据。因此,加电次数在81920次范围之内,并且最大出错值始终大于阈值20的状态下,均为正常。图中的加电次数(Raw实际值)为3381次,因此最大出错值近似为100,状态显示为“OK:Value is Normal(值正常)”。需要特别注意的是:每一个参数所给出的值都是经过一些特定的计算公式而给出的。作为用户,只要观察“Wrst”和“Tresh”值的关系,并注意状态提示属性状态信息即可大致了解硬盘的健康状况。

本文部分内容来自网络搜索。特殊问题的解答

1.组建RAID之后,S.M.A.R.T是否仍然生效?

用户组建RAID之后,S.M.A.R.T功能仍然有效,但是这需要RAID卡控制芯片支持S.M.A.R.T功能。实际上,RAID卡的S.M.A.R.T报警功能与硬盘在常规状态下的报错信息并无太大差别。报警时,相应模块所对应的硬盘指示灯(通常为红色)会长亮以起到警示作用。

2.为什么监测不到USB接口外置硬盘的S.M.A.R.T状态?

对于一个USB接口外置硬盘而言,系统将它判定为一个USB设备,监测不到S.M.A.R.T信息是因为USB标准中没有此项规定。此时虽然硬盘自身仍然在记录S.M.A.R.T状态,但由于它是USB外设,系统就不会监测它的S.M.A.R.T状态。

3.S.M.A.R.T功能对系统性能是否有影响?

硬盘记录S.M.A.R.T信息有两种方式,第一种是“在线(On-line)”收集,所谓在线收集就是硬盘在工作时,根据硬盘的实际工作状态收集到的信息,硬盘实时或在指定时间段内更新自身的S.M.A.R.T数据。举例来说,如果一个ATA硬盘在写入数据到一个扇区时,遇到一个不可修正的错误,硬盘会及时把这个信息更新到SMART数据中;对于SCSI硬盘,如果它设定的S.M.A.R.T更新周期是4分钟,则它会把在4分钟内收集到的相关S.M.A.R.T信息更新到S.M.A.R.T数据区,然后再开始下一个周期的跟踪。在线收集状态对系统性能没有影响。

第二种是“离线(off-line)”收集,离线收集是硬盘收到主机发来的一些特定指令时而进行自检测试,此时硬盘会处于“idel”状态或错误修正状态,在这类情况下,硬盘自身将作大量动作以测试健康状态,导致硬盘对主机发出的正常要求产生延迟。所以离线收集状态会造成系统性能的下降。

4.S.M.A.R.T技术对相关信息的记录是否有周期性?

对于SCSI硬盘而言,记录S.M.A.R.T信息有周期性,一般情况下周期处于4分钟~120分钟之间。这个值在硬盘出厂时就已设定,并且只能通过专业软件进行修改;而对于ATA硬盘,S.M.A.R.T信息的记录则没有周期性。