站内搜索


→ 天津强达科技争做天津领先的外包服务提供商,提供优质的 it服务外包网络安全外包天津系统集成天津综合布线天津门禁系统天津办公设备租赁天津视频会议系统天津数据恢复天津监控系统!请记住我们的网址:www.qiangdatj.com

欢迎新老客户和各界同仁莅临指教!

[推荐]SMART数据结构入门
点击次数: 更新时间:2016/2/22 14:58:56 信息来源:http://www.qiangdatj.com/channel/content.asp?id=511

SMART,也就是Self-Monitoring, Analysis, and Reporting Technology,一般玩家对它的理解就是CDI或者HD Tune这类工具对一块磁盘状态信息的报告。在最必要限度内这么理解没问题,但是现在的工具软件都很傻瓜化,用户门槛也很低,这也就造成绝大多数人根本看不懂SMART报告的意思。

这里就仅针对我们经常接触到的部分做一个入门讲解

CDI截图中红框部分也就是SMART区域,每一行都是一个SMART属性,一个ATA设备最多有30个SMART属性,上面“主机写入”、“主机读取”、“通电次数”和“通电时间”的数据就是从SMART属性中取得的。

但SMART的数据结构并不像软件显示的这样简单。如果有人点过CDI“编辑”菜单里的“复制选项”的话,就会发现里面有两个跟SMART有关的复选,分别是“SMART_READ_DATA”和“SMART_READ_THRESHOLD”。是的,SMART中的“阈值/Threshold”和其他数据是分开的,二者通过ID对应起来。每个SMART属性长12字节,并缀有2字节的版本信息,位于“SMART_READ_DATA”和“SMART_READ_THRESHOLD”的前362字节内。

上面红框圈出来的位置就是SMART属性的原始数据。因为Intel 730只有25个SMART属性,所以有60字节的占位0。每个属性的起始位有蓝色下划线。

在“SMART_READ_DATA”的一个SMART属性的12个字节中,第1个字节是“ID”,也就是CDI里面第一列的“ID”;第2-3个字节是“Flag/标记”,表示这个属性的性质;第4个字节是“当前值/Current value/Normalized”;第5个字节是“最差值/Worst value”;第6-11字节是“原始值/Raw data”;第12字节保留。“SMART_READ_THRESHOLD”就只有第1个字节的“ID”和第2个字节的“阈值/Threshold”,剩余10字节都是保留。这里面需要细说的就是“Flag/标记”,因为这个值极少出现,但却是一个SMART属性有没有用的关键。一个一个来说:

第1个字节“ID”,代表这个SMART属性的定义内容。0是无效值,其余都是有效值。比如我们看到05h就知道是重映射扇区数,09h就是通电时间。注意只有少部分ID是“国际统一”的,绝对不要把厂家A的定义内容硬搬到厂家B的产品上,甚至同厂家不同方案的产品都不一样。较为严谨的SMART工具在处理不明定义的ID时都会描述为“厂商特定/Vendor Specific”,而不是找个自己知道的显示出来。

第2-3个字节“Flag/标记”,表示这个SMART属性的性质,并细分为6类。为方便表达,这里把十六进制的BYTE转换为二进制的BIT:

BIT 描述
0 故障保修属性/Pre-fail warranty attribute
为0时表示这个属性失败与否都不在保修范围内(大多数)
为1时表示这个属性失败就应寻求保修,比如B8h 端到端错误计数
1 在线记录属性/Online collection attribute
为0时表示这个属性只在离线活动时记录,比如C6h 离线不可纠正扇区计数
为1时表示这个属性在在线活动和离线活动时都记录(大多数)
2 性能属性/Performance attribute
为0是表示这个属性不是性能属性(大多数)
为1时表示这个属性是性能属性,比如02h 吞吐性能
3 错误率属性/Error rate attribute
为0时表示这个属性不是错误率属性(大多数)
为1时表示这个属性是错误率属性,比如01h 原始读取错误率
4 事件计数属性/Event count attribute
为0时表示这个属性不是事件计数属性,比如C2h 温度
为1时表示这个属性是事件计数属性(大多数)
5 自维护属性/Self-preserving attribute
为0时表示这个属性是驱动器与主机交互中记录的,比如C5h 不稳定扇区数
为1时表示这个属性是驱动器不需与主机交互自行记录的(大多数)
6-15 保留

如果厂家提供手册的话,每个SMART属性的Flag/标记会有单独标注。但我们在CDI导出的原始信息里面看到的都是十六进制数,这里我们挑几个数实战一下:
05h 重映射扇区计数 (0032)hex=(00000000 00110010)bin,所以这是一个在线记录属性、事件计数属性和自维护属性;
B8h 端到端错误计数 (0033)hex=(00000000 00110011)bin,所以这是一个故障保修属性、在线记录属性、事件计数属性和自维护属性;
C2h 温度 (0022)hex=(00000000 00100010)bin,所以这是一个在线记录属性和自维护属性。
注意:上述举例并不适用于所有设备,不同设备相同SMART属性的Flag/标记很可能不同。
了解了Flag/标记的意义以后就能知道哪些SMART属性代表一块盘是否健康,以及厂家是否会承担保修责任。

第4个字节“当前值/Current value/Normalized”,这个值是根据“原始值/Raw data”算出来的,表示一个SMART属性当前的状况。这个值为0、254(FEh)和255(FFh)时都是无效的,最大值是253(FDh),最小为1,通常情况下初始值是100(64h)。

第5个字节“最差值/Worst value”,表示当前值的历史最低值。最差值的有效范围和当前值一样。

第6-11字节“原始值/Raw data”,表示一个SMART属性的原始记录值,这就跟这个属性的定义有关了,不同厂家不同产品对同一属性的定义都有不同。这里要特别说明一点就是,原始值有6字节长,厂家可以将这6字节分成几段,分别赋予不同的定义。温度就是最明显的例子,很多厂家都会在这一属性上分三段分别定义当前温度、最低温度和最高温度,其中当前温度和最高温度经过计算会显示到当前值和最差值上。这里用BEh 温度或者说气流温度举例,原始值是(00001D09001C)hex=(0,29,9,28)dec,也就是最高温是29℃,最低温9℃,当前28℃,反映到当前值上就是(100-28)=72,反映到最差值上就是(100-29)=71,不存在阈值。

第12字节保留,通常情况下这1字节填0留空,但有的厂商觉得原始值那6字节不够用,所以也用了这1字节,这也就是俗话说的48位原始值和56位原始值。只不过一般的SMART工具都不会去显示保留的这1字节,导致原始值显示不完全。

在“SMART_READ_THRESHOLD”里面有用的就只有第1字节的“ID”和第2字节的“阈值/Threshold”。ID跟上面的一样,阈值表示一个SMART属性设计时的最差情况,一般来说就是故障预警,当当前值或最差值小于等于阈值的时候就代表一块盘出现功能失效了,应尽早着手处理。阈值为0时表示这个SMART属性永远正常,阈值为255(FFh)表示这个属性永远不正常,阈值为254(FEh)为无效值,阈值在1-253(FDh)之间是有效值。比如大部分HDD的B8h 端到端错误计数的阈值都是99,意思就是只要侦测到出现端到端错误就SMART报警,这也确实是极为关键的功能失效,代表数据在磁盘内部存储路径上已经不能保持完整性,需要马上采取措施,但一般来说就是没救了。

通常情况下拿当前值或者最差值与有效阈值进行对比就能知道一块盘是否工作正常,当然SMART工具会直接代劳。但也存在特例,比如很多HDD的BEh属性定义的阈值是45,也就是设计工作最高温不能超过55℃,但难保不会有偶然一次温度超标,这种阈值的触发就会导致SMART报警,对这种情况的SMART报警就可以视而不见了。

以上就是ATA设备的SMART数据结构入门,下面再简单说一说NVMe设备的SMART。

NVMe设备有不止一个SMART,其中一个是有统一定义的主SMART位于“Log Page Identifiers 02h”,另外的由厂家自行设定,但也是在“Log Page Identifiers”中,比如Intel是“Log Page Identifiers CAh”。

SMART能提供很多信息,我们要读懂它才有利于维护好手中设备,不然就有可能贻误病情造成额外损失,甚至造成身心上的双重负担。当然这也就需要厂家提供准确的信息,至少是不能含糊的信息。现在SMART几乎是摆设的产品有不少,当前值、阈值一片0的产品,这种SMART信息有什么用?虽然ATA设备的SMART没有标准化定义,但连最起码的属性都不设置也没有替代属性(比如端到端错误、重映射/剩余备用块数等)的,这样的产品很难称得上是一个靠谱的产品。无形的数据损失最为可怕。

Copyright@2006-2019 天津强达科技有限公司 All Rights Reserved 津ICP备13005120号-1[xml][网站地图]