当前位置:首页 > 百科知识 > 电子工程 > 正文

smart

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

基本信息

abel-module="para" style="word-wrap: break-word; margin-bottom: 15px; white-space: normal; text-transform: none; word-spacing: 0px; zoom: 1; color: rgb(51,51,51); font: 14px/24px arial, 宋体, sans-serif; widows: 1; letter-spacing: normal; background-color: rgb(255,255,255); text-indent: 2em; -webkit-text-stroke-width: 0px">S.M.A.R.T.(自监测、分析、报告技术):这是现在硬盘普遍采用的数据安全技术,在硬盘工作的时候监测系统对电机、电路磁盘、磁头的状态进行分析,当有异常发生的时候就会发出警告,有的还会自动降速并备份数据。
早在上个世纪九十年代,人们就意识到数据的宝贵性胜于硬盘自身价值,渴望有种技术能对硬盘故障进行预测并实现相对安全的数据保护,因此S.M.A.R.T技术应运而生。目前,大多数硬盘的平均无故障时间(MTBF)一般在30000小时以上,有些高端产品可达120万小时。但是对于不少用户,特别是商业用户而言,一次普通的硬盘故障便足以造成灾难性后果,所以时至今日,S.M.A.R.T技术仍为我们所用。

简介

该技术由Compaq公司率先开发,IBM、希捷、富士通、昆腾等硬盘厂商参与修正,
并融合了Compaq公司的IntelliSafe诊断技术和IBM的PFA检测技术特点。
1995年5月,Compaq公司向Small Form Factor(SFF)委员会提交了IntelliSafe的技术标准报告(SFF-8035i);1996年1月进行1.0版的修正(SFF-8035R2);1996年6月进行了1.3版的修正(SFF-8055),并联合IBM等公司向SFF正式申请将IntelliSafe技术加入到ATA-3的行业标准中,正式更名为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;通过BIOS检测,能够识别设备是否支持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.技术并且该技术默认开启的的情况下,在不良状态出现时S.M.A.R.T.技术能够在屏幕上显示英文警告信息:“WARNING:IMMEDIATLY BACKUP YOUR DATA AND REPLACE YOUR HARD DISK DRIVE,A FAILURE MAY BE IMMINENT.” (警告:立刻备份你的数据同时更换硬盘驱动器,可能有错误出现。)

如何工作

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的基本指令,并规定写入标准的寄存器中,形成特定的S.M.A.R.T信息表,以供正常检测和运行。S.M.A.R.T指令分主指令(Command)和次指令(Subcommands)。主指令主要提供设备是否支持S.M.A.R.T或忽略某一次指令特征的信息。而次指令则提供支持S.M.A.R.T设备的检测信息。这些指令主要由设备厂商写入,一些专业硬盘维修软件可以通过这些代码进行设备的检测。

检测属性

S.M.A.R.T技术的原理是通过侦测硬盘各属性,如数据吞吐性能、马达起动时间、
寻道错误率等属性值和标准值进行比较分析,推断硬盘的故障情况并给出提示信息,帮助用户避免数据损失。S.M.A.R.T因此规定了专门的检测参数,由于硬盘结构、性能和定位上的不同,除了ATA-3标准规定的参数外,厂商可以根据自己产品的特性提供不同的S.M.A.R.T检测参数。普通用户则可以通过常用的系统工具(如AIDA32)来查看,并通过这些参数了解硬盘的“健康”状况。

ID检测代码

ID检测代码不是唯一的,厂商可以根据需要,使用不同的ID代码或根据检测参数的多少增减ID代码的数量。例如,西数公司的产品ID检测代码为“04”,检测的参数是Start/Stop Count(加电次数),而富士通公司同样代码的检测参数却为“Number of times the spindle motor is activated”(电机激活时间)。

属性描述

(Attribute Description)
属性描述(Attribute Description)即检测项目名称。可由厂商自定义增减,由于ATA标准不断更新,有时候同一品牌的不同型号产品也会有所不同。但必须确保S.M.A.R.T规定的几个主要检测项目(虽然不同厂商对检测项目都有特定的命名规则,但这些监测项目的实质其实是一样的)。
Read Error Rate 错误读取率
Start/Stop Count 启动/停止次数(又称加电次数)
Relocated Sector Count 重新分配扇区数
Spin up Retry Count 旋转重试次数(即硬盘启动重试次数)
Drive Calibration Retry Count 磁盘校准重试次数
ULTRA DMA CRC Error Rate (ULTRA DMA奇偶校验错误率)
Multi-zone Error Rate 多区域错误率
Vendor-specific 厂商特性
需要注意的是,不同厂商、不同类型产品的属性描述不尽相同。对用户而言,无须深入了解它们的具体含义,只需了解属性监测值的含义即可。

阈值

(Threshold)
又称门限值。是由硬盘厂商指定的可靠的属性值,通过特定公式计算而得。如果有一个属性值低于相应的阈值,就意味着硬盘将变得不可靠,保存在硬盘里的数据也很容易丢失。可靠属性值的组成和大小对不同硬盘来说是有差异的。这里需要注意的是,ATA标准中只规定了一些S.M.A.R.T参数,它没有规定具体的数值,“Threshold”的数值是厂商根据自己产品特性而确定的。因此,用厂商自己提供的检测软件往往会跟Windows下的检测软件(例如AIDA32)的检测结果有较大出入。这里,我们推荐以厂商软件的检测结果为标准,因为Windows环境下,系统要求硬盘的启动程序比DOS下多得多,这可能导致硬盘S.M.A.R.T值比DOS环境下检测的波动更大。以参数Raw ErrorRate(错误读取率)为例:该参数的计算公式为10×log10(主机和硬盘之间所传输数据的扇区数)×512×8/重读的扇区数。其中 “512×8”是把扇区数转化为所传输的数据位(bits),这个值只在所传输的数据位处于10^10~10^12范围时才作计算,而当Windows系统启动后,主机和硬盘之间所传输的数据扇区大于或等于10^12时,此值将重新复位。这就是为什么有些值在不同的操作环境、不同检测程序下时波动较大的原因。

属性值

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

最大出错值

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

实际值

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

属性状态

(Status)
这是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,并且可靠属性值小于阈值时,为报告故障或错误提示“!!!”标志。
在图2中,我们发现出现“OK”标志的正常状态下有“值正常”(Value is Normal)和“总是略过”(Always Passing)两个状态说明。它们的区别是:“值正常”表明此项S.M.A.R.T值是正常的,硬盘没有故障;“永远略过”则表明此项只是某参数的记录,没有合格与不合格的标准,如“Power on time count”,这个参数只是记录了硬盘已经加电工作的时间,这个参数应当永远合格,它不用来衡量硬盘的性能,因此显示为“OK:Value is Normal”。
下面我们以ID为“04”的Start/Stop Count(加电次数)检测参数为例,完整地来理解这7列参数的意义:从图2中我们看到此参数规定的属性正常值(Attribute value)为“100”,这个正常值是通过计算公式:“100-硬盘正常使用寿命期间的加电次数/1024”而给出的。而最大出错值是硬盘运行的累计计算值。例如如果是新硬盘,则加电次数为0,因此为100-0/1024=100,最大出错值=属性正常值。随着加电次数的增加,该最大出错值不断变化。厂商规定的阈值为20,即当硬盘的开关电次数达到81920次时(100-81920/1024=20),最大出错值=阈值,系统就会提示用户备份数据。因此,加电次数在81920次范围之内,并且最大出错值始终大于阈值20的状态下,均为正常。图中的加电次数(Date实际值)为107次,因此最大出错值近似为100,状态显示为“OK:Value is Normal(值正常)”。需要特别注意的是:每一个参数所给出的值都是经过一些特定的计算公式而给出的。作为用户,只要观察“Worst”和“Threshold”值的关系,并注意状态提示属性状态信息即可大致了解硬盘的健康状况。
在非ATA平台上的实现

SCSI

由于目前硬盘领域存在ATA和SCSI两种标准,所以不可否认,S.M.A.R.T技术是同时支持这两个系列的产品的,只是在一些参数设定上存在一些差异,在关键参数上SCSI比ATA硬盘更为复杂。但在实际运作中,由于用户和使用环境不同,S.M.A.R.T对ATA/IDE系统的干预比SCSI系统要多一些,而对SCSI故障的判定更为专业和准确些。SCSI硬盘的S.M.A.R.T技术与ATA硬盘的S.M.A.R.T技术相比更为复杂,以下仅列举SCSI硬盘所特有参数中的一部分。
PrimaryTemp:硬盘盘体的工作温度
Secondary Temp:PCB板周围的工作温度
Min and Max Temp:在一段时间内硬盘盘体的最高和最低工作温度
Velocity Observer Count:在一段时间内伺服寻道时偏离指定磁道的次数
12V:12V供电电压
5V:5V供电电压值
MR Res:MR磁头的电阻值
Sectors Read:在一段时间内从硬盘中读取的扇区数
Sectors Written:在一段时间内数据写入硬盘中的扇区数
在ATA/IDE环境下,由主机上的软件对S.M.A.R.T“报告状态”命令生成的、来自硬盘的报警信号进行解读。主机对硬盘进行查询,以检查这一命令的状态,如果显示马上要发生故障,就将告警信号送至最终用户或系统管理员。系统管理员就安排关机时间,以备份数据和更换硬盘。主系统除对来自硬盘的“报告状态”命令进行评估外,还可对属性和告警报告进行评估。在SCSI环境下,S.M.A.R.T则只报告“状况完好”或“出现故障”。由硬盘进行故障判断,再由主机通知用户采取措施。在SCSI标准中有一个检测位,当硬盘确定可靠性出现问题时,检测位就打上标记并通知最终用户或系统管理员,采取相应措施。

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传输到系统或监控程序中读取。

内容来自百科网