一、SMART概述
要说Linux用户最不愿意看到的事情,莫过于在毫无警告的情况下发现硬盘崩溃了。诸如RAID的备份和存储技术可以在任何时候帮用户恢复数据,但为预防硬件崩溃造成数据丢失所花费的代价却是相当可观的,特别是在用户从来没有提前考虑过在这些情况下的应对措施时。
硬盘的故障一般分为两种:可预测的(predictable)和不可预测的(unpredictable)。后者偶而会发生,也没有办法去预防它,例如芯片突然失效,机械撞击等。但像电机轴承磨损、盘片磁介质性能下降等都属于可预测的情况,可以在在几天甚至几星期前就发现这种不正常的现象。
对于可预测的情况,如果能通过磁盘监控技术,通过测量硬盘的几个重要的安全参数和评估他们的情况,然后由监控软件得出两种结果:“硬盘安全”或“不久后会发生故障”。那么在发生故障前,至少有足够的时间让使用者把重要资料转移到其它储存设备上。
最早期的硬盘监控技术起源于1992年,IBM在AS/400计算机的IBM 0662 SCSI 2代硬盘驱动器中使用了后来被命名为Predictive Failure Analysis(故障预警分析技术)的监控技术,它是通过在固件中测量几个重要的硬
盘安全参数和评估他们的情况,然后由监控软件得出两种结果:“硬盘安全”或“不久后会发生故障”。
不久,当时的微机制造商康柏和硬盘制造商希捷、昆腾以及康纳共同提出了名为IntelliSafe的类似技术。通过该技术,硬盘可以测量自身的的健康指标并将参量值传送给操作系统和用户的监控软件中,每个硬盘生产商有权决定哪些指标需要被监控以及设定它们的安全阈值。
1995年,康柏公司将该技术方案提交到Small Form Factor(SFF)委员会进行标准化,该方案得到IBM、希捷、昆腾、康纳和西部数据的支持,1996年6月进行了1.3版的修正,正式更名为S.M.A.R.T.(Self-Monitoring Analysis And Reporting Technology),全称就是“自我检测分析与报告技术”,成为一种自动监控硬盘驱动器完好状况和报告潜在问题的技术标准。
SMART的目的是监控硬盘的可靠性、预测磁盘故障和执行各种类型的磁盘自检。如今大部分的ATA/SATA、SCSI/SAS和固态硬盘都搭载内置的SMART系统。作为行业规范,SMART规定了硬盘制造厂商应遵循的标准,满足SMART标准的条件主要包括:
1)在设备制造期间完成SMART需要的各项参数、属性的设定;
2)在特定系统平台下,能够正常使用SMART;通过BIOS检测,能够识别设备是否支持SMART并可显示相
关信息,而且能辨别有效和失效的SMART信息;
3)允许用户自由开启和关闭SMART功能;
4)在用户使用过程中,能提供SMART的各项有效信息,确定设备的工作状态,并能发出相应的修正指令或警告。在硬盘及操作系统都支持SMART技术并且开启的情况下,若硬盘状态不良,SMART功能会在开机时响起警报,SMART技术能够在屏幕上显示英文警告信息:“WARNING IMMEDIATLY BACKUP YOUR DATA AND REPLACE YOUR HARD DISK DRIVE,A FAILURE MAY BE IMMINENT.”(警告:立刻备份你的数据并更换硬盘,硬盘可能失效。)
SMART功能不断从硬盘上的各个传感器收集信息,并把信息保存在硬盘的系统保留区(service area)内,这个区域一般位于硬盘0物理面的最前面几十个物理磁道,由厂商写入相关的内部管理程序。这里除了SMART信息表外还包括低级格式化程序、加密解密程序、自监控程序、自动修复程序等。用户使用的监测软件通过名为“SMART Return Status”的命令(命令代码为:B0h)对SMART信息进行读取,且不允许最终用户对信息进行修改。
smartmontools是smart的的软件包程序,由smartctl和smartd两部分工具程序组成,它们一起为Linux平台提供对磁盘退化和故障的高级警告。
二、smart信息解读
ID
属性ID,通常是一个1到255之间的十进制或十六进制的数字。硬盘SMART检测的ID代码以两位十六进制数表示(括号里对应的是十进制数)硬盘的各项检测参数。目前,各硬盘制造商的绝大部分SMART ID代码所代表的参数含义是一致的,但厂商也可以根据需要使用不同的ID代码,或者根据检测项目的多少增减ID代码。一般来说,以下这些检测项是必需的:
01(001) Raw_Read_Error_Rate 底层数据读取错误率
04(004) Start_Stop_Count 启动/停止计数
05(005) Reallocated_Sector_Ct 重映射扇区数
09(009) Power_On_Hours 通电时间累计,出厂后通电的总时间,一般磁盘寿命三万小时
0A(010) Spin_Retry_Count 主轴起旋重试次数(即硬盘主轴电机启动重试次数)
0B(011) Calibration_Retry_Count 磁盘校准重试次数
0C(012) Power_Cycle_Count 磁盘通电次数
C2(194) Temperature_Celsius 温度
C7(199) UDMA_CRC_Error_Count 奇偶校验错误率
C8(200) Write_Error_Rate: 写错误率
F1(241) Total_LBAs_Written:表示磁盘自出厂总共写入的的数据,单位是LBAS=512Byte
F2(242) Total_LBAs_Read:表示磁盘自出厂总共读取的数据,单位是LBAS=512Byte
ATTRIBUTE_NAME
硬盘制造商定义的属性名。,即某一检测项目的名称,是ID代码的文字解释。
FLAG
属性操作标志(可以忽略)
当前值(value)
当前值是各ID项在硬盘运行时根据实测原始数据(Raw value)通过公式计算的结果,1到253之间。253意味着最好情况,1意味着最坏情况。计算公式由硬盘厂家自定。
硬盘出厂时各ID项目都有一个预设的最大正常值,也即出厂值,这个预设的依据及计算方法为硬盘厂家保密,不同型号的硬盘都不同,最大正常值通常为100或200或253,新硬盘刚开始使用时显示的当前值可以认为是预设的最大正常值(有些ID项如温度等除外)。随着使用损耗或出现错误,当前值会根据实测数据而不断刷新并逐渐减小。因此,当前值接近临界值就意味着硬盘寿命的减少,发生故障的可能性增大,所以当前值也是判定硬盘健康状态或推测寿命的依据之一。
硬盘出厂时各ID项目都有一个预设的最大正常值,也即出厂值,这个预设的依据及计算方法为硬盘厂家保密,不同型号的硬盘都不同,最大正常值通常为100或200或253,新硬盘刚开始使用时显示的当前值可以认为是预设的最大正常值(有些ID项如温度等除外)。随着使用损耗或出现错误,当前值会根据实测数据而不断刷新并逐渐减小。因此,当前值接近临界值就意味着硬盘寿命的减少,发生故障的可能性增大,所以当前值也是判定硬盘健康状态或推测寿命的依据之一。
最差值(Worst)
最差值是硬盘运行时各ID项曾出现过的最小的value。
最差值是对硬盘运行中某项数据变劣的峰值统计,该数值也会不断刷新。通常,最差值与当前值是相等的,如果最差值出现较大的波动(小于当前值),表明硬盘曾出现错误或曾经历过恶劣的工作环境(如温度)。
最差值是对硬盘运行中某项数据变劣的峰值统计,该数值也会不断刷新。通常,最差值与当前值是相等的,如果最差值出现较大的波动(小于当前值),表明硬盘曾出现错误或曾经历过恶劣的工作环境(如温度)。
临界值(Threshold)
低级格式化在报告硬盘FAILED状态前,WORST可以允许的最小值。
临界值是硬盘厂商指定的表示某一项目可靠性的门限值,也称阈值,它通过特定公式计算而得。如果某个参数的当前值接近了临界值,就意味着硬盘将变得不可靠,可能导致数据丢失或者硬盘故障。由于临界值是硬盘厂商根据自己产品特性而确定的,因此用厂商提供的专用检测软件往往会跟Windows下检测软件的检测结果有较大出入。
发布评论