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

功能

该技术能使硬盘更稳定的运行。作用如下:

  • 当硬盘的损坏程度还能在软件可修复的范围内(通常由厂商决定),软件就会自动修理,防止数据的进一步损坏。同时报告异常值,异常程度为警告
  • 当硬盘的损坏程度已经超出软件的修复承载范围(通常由厂商决定),软件则会尽最大能力防止再次写入数据的丢失(如避开已损坏扇区),同时会报告异常值,异常程度为危险
  • BIOS自检时,主板会检测硬盘的S.M.A.R.T.信息,如果硬盘的异常程度为危险时,会提醒用户及时备份数据(如嗡鸣声或显示文字)。
  • Windows 7或以上的Windows系统,如果检测到硬碟的S.M.A.R.T.错误,也会弹出警告视窗,提示用户备份资料。

历史

最早期的硬盘监控技术起源于1992年IBM在为AS/400计算机的IBM9337硬盘阵列中的IBM 0662 SCSI2代硬盘驱动器之中,后来该技术被命名为Predictive Failure Analysis(故障预警分析技术),它是通过在固件中测量几个重要的硬盘安全参数和评估他们的情况。从物理硬盘发送到监控软件的结果中被限定两种结果:“硬盘安全”和“硬盘不久后会发生故障”。

不久,由个人电脑制造商Compaq和硬盘制造商SeagateQuantumConner英语Conner提出了名为IntelliSafe的类似技术。通过该技术,硬盘会测量自身的的健康指标并将参量值传送给操作系统和用户的监控软件中,每个硬盘生产商有权决定哪些指标需要被监控和它们的安全阈值。

Compaq于1995年早期将该项技术方案提交到Small Form Factor委员会进行标准化,该方案得到IBMSeagateQuantumConner英语Conner PeripheralsWestern Digital所支持。由于IntelliSafe技术的灵活性,委员会接受了该方案,并正式更名S.M.A.R.T.技术,将其标准化并推广至ATA-3行业标准中。

运作原理

该技术所需数据被存放在硬盘物理盘面最前面的磁道中,由硬盘制作商将相关管理程序和数据该磁道中,包括加解密程序,自监控程序,自修复程序等,主机的监控软件可以通过“SMART RETURN STATUS”的命令读取S.M.A.R.T.信息,且这些信息不允许被用户直接修改。

检测属性

下面将列出一些S.M.A.R.T.的原始检测属性和含义。普遍为检测值越高性能越好。即使所有制造商都必须遵守共同的规则,但由于有些检测值在不同硬盘制造商中用不全相同的定义和计量方法而对于不同制作商来说检测值不全是越高越好,所以下面属性的指标只作一般参考。除外,各制造商也会根据自己需要添加一些自己专有的检测属性。

说明
 
表示数值越高越好
 
表示数值越低越好
重要项:粉色底 当超出安全范围会对性能严重影响,甚至导致数据丢失。
ID ID十六进制值 英文名 中文译名 最优 说明
1 0x01 Read Error Rate 底层数据读取错误率
 
存储器从一个硬盘表面读取数据时发生的错误率。原始值由于不同厂商的不同计算方法而有所不同,其十进制值往往无意义的。
2 0x02 Throughput Performance 读写通量性能
 
通常是硬盘读写性能的测量值,如果其值有变动,有可能硬盘出现了问题。
3 0x03 Spin-Up Time 盘片启动时间
 
盘片由静止启动加速到稳定正常运行速度的平均所需时间。
4 0x04 Start/Stop Count 电机起停次计数
 
一个盘片启动关闭周期的统计值,只有硬盘从完全断电中启动或从睡眠模式恢复,盘片主轴电机被启动时才会记一次数。
5 0x05 Reallocated Sector Count 重定位磁区计数
 
记录由于损坏而被映射到无损的后备区的磁区计数。当硬盘出现损坏磁区时,可以通过将其物理空间指向到特定的无损区域进行重映射修复,从而出现坏磁区的硬盘仍可使用。但当高过一定数值后,后磁区消耗殆尽而无法再重映射修复时,这些坏磁区就会显现出来且无法自行修复。除外由于要要求磁头读取这些坏磁区时专门再移动到后备区读写数据,对硬盘读写性能也有影响。
6 0x06 Read Channel Margin 信道读取余量 读取数据时信道可用的余量,该属性没制定任何功用。
7 0x07 Seek Error Rate 寻道错误率 (该属性是特定制造商才有的)磁头寻找磁道由于机械问题而出错几率,有多种原因可能引致出错,如:磁头伺服构件,盘体过热,或损坏。于不同厂商的不同计算方法而有所不同,其十进制值往往无意义的。
8 0x08 Seek Time Performance 寻道性能
 
每次寻道时间的平均值,该值短期内迅速减少,有可能硬盘出现了问题。
9 0x09 Power-On Hours 硬盘加电时间
 
硬盘自出厂以来加电启动的统计时间,单位为小时(或根据制造商设定为分钟或秒),一般用户以该值判定硬盘是否被使用过。
10 0x0a Spin Retry Count 电机起转重试
 
S.M.A.R.T参数电机起转重试,表明了主轴电机的启动尝试次数。这个属性存储了关于主轴电机尝试加速到完全可操作速度的次数(在这种情况下,意味着主轴电机的第一次启动尝试没有成功)。主轴电机频繁的尝试启动,意味着硬盘驱动器的寿命可能将近实际限值。
11 0x0b Recalibration Retries 磁头校准重试
 
磁头在一次运行失败时尝试校准至正常状态的统计数,该值改变时意味着硬盘的机械部件已经出现问题了。
12 0x0c Power Cycle Count 设备开关计数 该属性表示硬盘电源充分开/关循环计数。
13 0x0d Soft Read Error Rate 软件读取错误率
 
操作系统读取数据时的出错率。
183 0xb7 SATA Downshift Error Count SATA降级运行计数 Western Digital 和 Samsung 特有属性,记录由于兼容问题导致降低SATA传输级别运行的计数。
184 0xb8 End-to-End error 终端校验出错
 
HP专有S.M.A.R.T.(SMART IV)技术的一个特有属性,记录硬盘从盘片读取数据到高速缓存后再传输到主机时数据校验出错的次数。
185 0xb9 Head Stability 磁头稳定性 Western Digital特有属性
186 0xba Induced Op-Vibration Detection Western Digital特有属性
187 0xbb Reported Uncorrectable Errors 报告不可纠正错误
 
硬件ECC无法恢复的错误计数。
188 0xbc Command Timeout 通信超时
 
由于无法连接至硬盘而终止操作的统计数,一般为0,如果远超过0,则可能电源问题,数据线接口氧化或更严重的问题。
189 0xbd High Fly Writes 磁头写入高度
 
硬盘进行写入时对磁头高度进行监控以提供额外的保障。当磁头处于不正常高度进行写入时,写入操作会被终止,原有数据重写入或者将该扇区重映射到安全区域。该属性是统计值。
190 0xbe Airflow Temperature 气流温度
 
Western Digital特有属性,计量硬盘内气流温度,和检测项0xc2相似。
191 0xbf G-sense Error Rate 加速度错误率
 
计量可能对硬盘做成损害的冲击次数。
192 0xc0 Power-off Retract Count 电源关闭磁头收回计数
 
计量磁头在没有加电时不移进硬盘的值。
193 0xc1 Load Cycle Count 磁头释放收回循环
 
计量磁头在加电时移至停泊区和移至盘片循环的值。
194 0xc2 Temperature 温度
 
如果有合适的传感器的话,这里会显示硬盘温度。请注意该温度并非直接的摄氏度或华氏度。通常来说,将原始值的最低两位字节转化成十进制,即为精确的温度值(单位:摄氏度)。例如:原始值为0x003600090023,将0x23转换为十进制为35,则硬盘温度为35度。[1]
195 0xc3 Hardware ECC Recovered 硬件ECC恢复 (特定原始值)
196 0xc4 Reallocation Event Count 重定位事件计数
 
记录已重映射扇区和可能重映射扇区的事件计数。
197 0xc5 Current Pending Sector Count 等候重定的扇区计数
 
记录了不稳定的扇区的数量。
198 0xc6 Uncorrectable Sector Count 无法校正的扇区计数
 
记录肯定出错的扇区数量。
199 0xc7 UltraDMA CRC Error Count UltraDMA通讯CRC错误
 
记录硬盘通讯时发生的CRC错误。
200 0xc8 Multi-Zone Error Rate 多区域错误率
 
写入一个区域时发现的错误的计数。
200 0xc8 Write Error Rate 写入错误率
 
Fujitsu的特别属性,写入一个区域时发现的错误的计数。
201 0xc9 Soft Read Error Rate 逻辑读取错误率
 
记录脱轨错误。
202 0xca Data Address Mark errors 数据地址标记错误
 
记录数据地址标记错误(或制造商特定的计数)
203 0xcb Run Out Cancel 用完取消
 
ECC错误计数
204 0xcc Soft ECC Correction 逻辑ECC纠正
 
记录由软件ECC更正的错误计数。
205 0xcd Thermal Asperity Rate 热嘈率
 
记录高温导致的出错记数。
206 0xce Flying Height 飞行高度 记录磁头的飞行高度。飞得太低会增加磁头撞毁的机会,飞得太高增加读写错误的机会。
207 0xcf Spin High Current 主轴电机浪涌电流计数
 
记录主轴电机运转时浪涌电流的次数。
208 0xd0 Spin Buzz 电机启动失败 记录由于电力不足而启动主轴电机的蜂鸣声次数。
209 0xd1 Offline Seek Performance 离线寻址效能 在其内部测试硬盘的寻址能力表现。
210 0xd2 (没定性,出现在Maxtor 6B200M0 200GB 和Maxtor 2R015H1 15GB 的硬盘中)
211 0xd3 Vibration During Write 写操作震动 记录写入操作的震动数。
212 0xd4 Shock During Write 写操作冲击 记录写入操作时的冲击数。
220 0xdc Disk Shift 盘体偏移
 
记录盘体由于冲击或温度导致偏离主轴的相对距离。
221 0xdd G-Sense Error Rate 加速计出错率
 
从外部诱发的冲击和振动产生的错误计数。
222 0xde Loaded Hours 数据加载时间 数据读取时所花费的时间。(磁头移动时间)
223 0xdf Load/Unload Retry Count 加载/卸载重试次数 磁头改变位置时所需时间。
224 0xe0 Load Friction 负载摩擦
 
读写时由于机械摩擦做成的阻力。
225 0xe1 Load/Unload Cycle Count 加载/卸载循环计数
 
总负载周期计数。
226 0xe2 Load 'In'-time 磁头加载耗时 磁头加载所需总时间(不包括在停泊区的花费)。
227 0xe3 Torque Amplification Count 扭矩放大计数
 
尝试来补偿盘片的速度变化的计数。
228 0xe4 Power-Off Retract Cycle 断电缩回周期
 
切断电源后电磁枢自动缩回的时间计数。
230 0xe6 GMR Head Amplitude GMR磁头振幅 磁头振幅计数(磁头反复正反向运动距离)。
231 0xe7 Temperature 硬盘温度
 
记录硬盘温度。
232 0xe8 Endurance Remaining 耐久性剩余 磁盘可使用周期与设计可使用周期的百分比。
232 0xe8 Available Reserved Space 可用保留空间 Intel固态硬盘报告的可提供的预留空间占作为一支全新的固态硬盘预留空间的百分比。
233 0xe9 Power-On Hours 加电时间 处于开机状态的小时数。
233 0xe9 Media Wearout Indicator 介质耗损指标 Intel固态硬盘报告的NAND刷写寿命,全新时值为100,最低值为1,其跌幅随NAND的擦除周期增加而在0到最大额定周期范围减少。
240 0xf0 Head Flying Hours 磁头飞行时间 磁头处于定位中的时间。
240 0xf0 Transfer Error Rate 传输错误率 在数据传输时连接被重置的次数计数。(Fujitsu特有属性)
241 0xf1 Total LBAs Written LBA写入总数 LBA写入总数计数。
242 0xf2 Total LBAs Read LBA读取总数 LBA读取总数计数,部分S.M.A.R.T.检测程序会把原始值显示为负数,这是因为该原始值为48位,而不是32位的。
250 0xfa Read Error Retry Rate 读取错误重试率
 
从磁盘读取时的错误计数。
254 0xfe Free Fall Protection 自由跌落保护
 
对“自由落体事件”检测计数。

在非ATA平台上的实现

SCSI

硬盘的传输端口平台主要分为ATA和SCSI两个平台。作为一种硬盘的检测技术,理论上都能在两个平台上实现的,但由于两个平台也存在巨大的不同,S.M.A.R.T.在SCSI上的实现和在ATA的实现上也有所不同。首先,作为ATA上的专有规范,S.M.A.R.T.对ATA系统的干预要比SCSI更明显,S.M.A.R.T.对SCSI更多是起到检测的作用,即使在检测到磁盘有故障时,其只是报告监控端,要人为地处理故障。其次,由于SCSI平台的硬盘比ATA的更为复杂,所以其检测属性也比ATA的多和复杂准确,如包括对盘片和驱动电路版的温度检测(ATA多仅对盘片温度检测),对电压的检测等。

USB

USB标准中,USB不能用于计算机内部储存设备的基本总线(如ATA,SCSI等),其本身没有为S.M.A.R.T.提供传输数据的途径。在使用ATA硬盘,以USB为传输端口的移动硬盘中,即使硬盘内S.M.A.R.T.仍然运作,但没办法直接向系统提供S.M.A.R.T.的数据。现在新的移动硬盘的内部驱动转换电路已经能以一些方法将硬盘内S.M.A.R.T.的数据通过USB传输到系统或监控程序中读取。

参考文献

  1. Seagate's Seek Error Rate, Raw Read Error Rate, & Hardware ECC Recovered SMART attributes. [2013-02-01]. (原始内容存档于2013-07-07) (英语). 
  1. ^ S.M.A.R.T. basics. [2017-11-19]. (原始内容存档于2017-09-22).