数据恢复与硬盘修理
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.10 S.M.A.R.T简介

SMART错误也会导致驱动器无法被识别。在维修驱动器的过程中要大量使用S.M.A.R.T信息,因此,这里再简要介绍一下S.M.A.R.T的相关知识。

1.10.1 S.M.A.R.T的起源

S.M.A.R.T技术就是自我监测、分析和报告技术(Self Monitoring Analysis and Reporting Technology)。S.M.A.R.T监测的对象包括磁头、磁盘、马达、电路等驱动器的主要部分,由驱动器的监测电路和监测软件对被监测对象的运行情况、历史记录及预设的安全值进行分析、比较,当出现安全值范围以外的情况时,会自动向用户发出警告。更先进的技术还可以提醒网络管理员有故障发生,自动降低驱动器的运行速度,把重要的数据文件转存到其他安全扇区中,甚至把文件备份到其他存储设备上。S.M.A.R.T技术可以对驱动器潜在故障进行有效预测,提高数据的安全性。

S.M.A.R.T技术的发展已经经历了3个版本。S.M.A.R.T Ⅰ仅能累计计算驱动器运行中出现的错误,当错误累计达到一定的次数时发出安全警告。S.M.A.R.T Ⅱ改进了错误预防系统,能够自动对驱动器进行系统操作指令之外的读扫描。这比S.M.A.R.T Ⅰ前进了一大步,平常磁头不读写的地方也能被检测和报告。S.M.A.R.T Ⅲ不但能自动对驱动器进行读扫描、累计错误出现的次数、达到一定次数后发出安全警告,还增加了ECC(Error-Correction Code)纠错功能,以便对磁盘工作中和自动读扫描中出现的错误进行ECC纠错。但即使是S.M.A.R.T Ⅲ,对磁盘的监测和对数据的保护也是有限的,因为S.M.A.R.T仅能对扇区进行读扫描,而不能对扇区状态进行写回测试,且无法修复ECC不能修正的错误。因此,仅仅依靠S.M.A.R.T技术是不够的。所以,在这个基础上,各厂商开发出了各具特色的驱动器保护性固件,比较出色的有西部数据的数据卫士,昆腾的DPS、SPS,迈拓的Maxsafe、ShockBlock,希捷的Seashield、DST,IBM的DFT等。它们分别在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技术最早由IBM和康柏(Compaq)提出,IBM的可靠性预报技术称为故障分析预报(Predictive Failure Analysis, PFA)。PFA通过测量包括磁头飞行高度在内的一系列属性值来预报故障,并通报主机将会发生的故障,这样,用户就可以采取必要的措施来保护数据。一段时间之后,康柏宣布在诊断设计上取得了突破,并将这种技术命名为“IntelliSafe”。后来,康柏又联合希捷、昆腾和Conner进一步发展了该技术。1995年5月,康柏向SFF(Small Form Factor)委员会提交了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。

1.10.2 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技术可以预测的硬盘故障中,60%左右为机械性质,40%左右是软性故障。随着S.M.A.R.T及相关技术的逐步成熟,可预测故障的种类将越来越多,对故障的防范措施也会变得越来越有效。

S.M.A.R.T有两份规范,分别对应于ATA标准和SCSI标准。两种环境下的S.M.A.R.T技术基本相似,只是在一些参数设定上存在差异,最终报告的信息也不一样。在ATA/IDE环境下,由主机上的软件对由S.M.A.R.T的“报告状态”命令生成的、来自硬盘的报警信号进行解读。主机对驱动器进行查询,检查这一命令的状态,如果显示马上要发生故障,就将告警信号送至最终用户或系统管理员处。系统管理员安排关机时间,以备份数据和更换驱动器。主机系统除了可以对来自驱动器的“报告状态”命令进行评估外,还可以对属性和告警报告进行评估。对这种结构还可以进行改进,以使其适用于其他应用,例如进行CD-ROM、TAPE和其他I/O设备的热故障预报等。

在SCSI环境下,失效与否的判定权在驱动器,主机只负责将信息通报给用户。S.M.A.R.T只报告“状况完好”或“出现故障”,然后由驱动器进行故障判断,再由主机通知用户采取措施。在SCSI标准中有一个检测位,当确定驱动器的可靠性出现问题时,检测位就会被打上标记并通知最终用户或系统管理员,以采取相应的措施。

通常来说,SCSI驱动器内部有更强的可靠性预报能力,在关键参数上,SCSI驱动器比ATA驱动器更为复杂。S.M.A.R.T对ATA/IDE系统的干预比对SCSI系统的干预要多,而对SCSI故障的判定更为专业和准确。例如,以下的SCSI驱动器参数就是ATA/IDE驱动器不具备的,而它们只是SCSI驱动器特有参数的一小部分。

Primary Temp:驱动器盘体工作温度。

Secondary Temp:PCB板周围工作温度。

Min and Max Temp:一段时间内驱动器盘体的最高和最低工作温度。

Velocity Observer Count:一段时间内伺服寻道时偏离指定磁道的次数。

12V:+12V供电电压值。

5V:+5V供电电压值。

Sectors Read:一段时间内从驱动器读取的扇区数。

Sectors Written:一段时间内数据写入驱动器的扇区数。

作为行业标准,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技术并且该技术默认开启的情况下,当有不良状态出现时,屏幕上将显示英文警告信息“WARNING: IMMEDIATLY BACKUP YOUR DATA AND REPLACE YOUR HARD DISK DRIVE, A FAILURE MAY BE IMMINENT”(警告:立刻备份你的数据同时更换驱动器,可能有错误出现)。

S.M.A.R.T信息存储在驱动器的系统保留区内,这个区域一般位于驱动器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指令分为主指令(Command)和次指令(Sub Command)。主指令主要提供设备是否支持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检测参数。普通用户可使用常用的系统工具来查看这些参数,并通过这些参数了解驱动器的“健康”状况。

1.10.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通过ID检测代码向主机报告故障的发生。不过,ID检测代码不是唯一的,厂商可以根据需要使用不同的ID代码,或者根据检测参数的多少增减ID代码的数量。例如,西部数据公司产品的ID检测代码“04”的含义是“Start/Stop Count”(加电次数),而富士通公司同样代码的检测参数却为“Number of times the spindle motor is activated”(电机激活次数)。与ID对应的是属性描述(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:厂商特性。

常用S.M.A.R.T属性如表1-16所示(由于资料来源不同,对不同厂商生产的驱动器,有些ID的描述会有所不同)。

表1-16 S.M.A.R.T属性表

对于这些检测项目,需要给定阈值(Threshold,也称门限值)。如果有一个属性值低于相应的阈值,就意味着驱动器变得不可靠,保存在驱动器里的数据也很容易丢失。可靠属性值的组成和大小对不同的驱动器来说是有差异的。在这里需要注意的是,ATA标准中只规定了一些S.M.A.R.T参数,而没有规定具体的数值,而阈值是厂商根据自己产品的特性确定的,因此,使用厂商提供的检测软件得到的检测结果往往会与使用Windows下的检测软件得到的检测结果有较大出入,推荐以厂商提供的检测软件得到的检测结果为准。

驱动器记录S.M.A.R.T信息有两种方式。第一种是在线(On-Line)收集方式。所谓在线收集,就是指驱动器根据在实际工作状态下收集到的信息实时或在指定时间段内更新自身的S.M.A.R.T数据。举例来说,如果在向一个ATA驱动器扇区写入数据时遇到一个不可修正的错误,驱动器会及时把这个信息更新到S.M.A.R.T数据中。对于SCSI驱动器,如果设定的S.M.A.R.T更新周期是4分钟,则会把4分钟内收集到的相关S.M.A.R.T信息更新到S.M.A.R.T数据区,然后再开始下一个周期的跟踪。在线收集状态对系统性能没有影响。第二种方式是离线(Off-Line)收集。离线收集是驱动器收到主机发来的一些特定指令时进行的自检测试,此时驱动器处于“idel”(停止)状态或错误修正状态。在这种情况下,驱动器自身将作出大量动作以测试“健康”状态,但这会导致驱动器对主机发出的正常要求产生反应延迟。所以,离线收集状态会造成系统性能的下降。

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

有些厂商生产的驱动器的S.M.A.R.T参数中有“Fly Height”(磁头飞行高度)这一项。不过,准确地说,驱动器的磁头飞行高度是无法侦测的,因为驱动器中没有任何装置可以测量磁头的飞行高度。虽然驱动器生产厂商可以根据磁头读取到的磁信号的强度来推测磁头的飞行高度,但这样推测出来的磁头飞行高度很多时候与实际情况相比有较大偏差,所以只能作为参考。

1.10.4 S.M.A.R.T的应用

这里以希捷驱动器S.M.A.R.T检测参数为例进行介绍。检测参数分为8列,分别是ID检测代码、属性描述、原始值、属性状态、属性值、最大错误值、阈值和预测失效时间(Threshold Exceed Condition, TEC),如图1-33所示。

图1-33 通过DiskCheckup查看S.M.A.R.T信息

以参数“Raw Error Rate”为例:该参数的计算公式为10×log10(主机和驱动器之间传输数据的扇区数)×512×8/重读的扇区数。其中,“×512×8”是把扇区数转化为所传输的数据位(bits),这个值只在传输的数据位处于1010~1012时才进行计算,当其大于或等于1012时,此值将复位。在Windows操作系统启动后,主机和驱动器之间传输的数据扇区往往很大,从而触发重新计算,这就是为什么有些值在不同的操作环境和检测程序下波动较大的原因。

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

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

原始值(Raw Value)指驱动器各检测项目运行中的实际数值,很多项目是累计值。

属性状态(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”(预知错误/发现位)参数的赋值密切相关,前面已经介绍过。

由于每一个参数所给出的值都是经过一些特定的公式计算得出的,因此作为用户,只要观察“Worst”和“Threshold”值的关系,并注意状态信息,即可大致了解驱动器的健康状况。

使用S.M.A.R.T. Vision查看驱动器的显示结果如图1-34所示。

图1-34 S.M.A.R.T. Vision

单击“Drive ID”按钮,可以看到如下内容。

    DRIVE ID
    -------------
    COMMON DATA ABOUT CONFIGURATION:
        ATA device
        Fixed disk and/or controller

    Logical cylinders       : 16383
    Logical heads           : 16
    Logical sectors per track : 63
    Model                   : ST3250310AS
    Serial number           : 6RYD4QME
    Firmware version        : 4.AAA

    Bytes count available then performing READ/WRITE LONG : 4
    Maximal block size for commands READ/WRITE MULTIPLE   : 16

    FEATURES :
        Stop timer values is standart
        IORDY is supported
        IORDY can be disabled
        LBA is supported
        DMA is supported

    CURRENT LOGICAL PARAMETERS :
    Cylinders        : 16383
    Heads          : 16
    Sectors per track : 63
    CHS   mode capacity available : 16514064 sectors (8063 Mb)
    LBA   mode capacity available : 268435455 sectors (131071 Mb)
    LBA48 mode capacity available : 488397168 sectors (238475 Mb)

    Current block size for commands R/W Multiple : 16

    AVAILABLE DMA MODES :
        Multiword DMA Mode 0
        Multiword DMA Mode 1
        Multiword DMA Mode 2
    Active DMA mode : Multiword DMA Mode 2

    AVAILABLE Ultra DMA/33 MODES :
        Ultra DMA/33 Mode 0
        Ultra DMA/33 Mode 1
        Ultra DMA/33 Mode 2
        Ultra DMA/33 Mode 3
        Ultra DMA/33 Mode 4
        Ultra DMA/33 Mode 5
        Ultra DMA/33 Mode 6

    Supported PIO mode : 2
    SUPPORTED EXTENDED PIO MODES :
        PIO MODE 3
        PIO MODE 4

    Multiword DMA minimal cycle time                  : 120 ns
    Multiword DMA recommended cycle time              : 120 ns
    PIO cycle time minimal without thread management : 120 ns
    PIO cycle time minimal with IORDY                 : 120 ns

    SUPPORTED STANDARTS :
        ATA - 1
        ATA - 2
        ATA - 3
        ATA - 4
        ATA - 5
        ATA - 6
        ATA - 7

    ACOUSTIC MANAGEMENT :
        Acoustic management current   :0
        Acoustic management vendor    :208

    SUPPORTED COMMAND SETS :
        S.M.A.R.T.
        Security mode
        Mandatory power management
        Write cache
        Look ahead
        Host protected area
        Write buffer
        Read buffer
        Download microcode
        Set MAX
        48-bit addressing
        Device config overlay
        Mandatory flush cashe
        Flush cashe ext
        SMART error logging
        SMART self test
        General purpose logging

    UNABLED COMMAND SETS
         S.M.A.R.T.
         Mandatory power management
         Write cache
         Look ahead
         Host protected area
         Write buffer
         Read buffer
         Download microcode
         48-bit addressing
         Device config overlay
         Mandatory flush cashe
         Flush cashe ext
         SMART error logging
         SMART self test
         General purpose logging

     SECURITY SUBSYSTEM IS SUPPORTED
         Password set                                  NO
         Drive locked                                  NO
         Drive frozen                                  NO
         Incorrect passwords counter overflow          NO
         Supporting security erase                     NO
         Security level                                High
         Master code                                   FFFE

各参数的意义已经大致介绍过,这里不再重复。