输入文件格式
smartctl指令工具将会采集出硬盘当前的SMART信息,将SMART信息按下表收集成csv数据文件。
经过对业界常用SMART数据的选择,提取以下这些SMART信息作为随机森林模型训练和预测的输入数据:
SMART ID |
CSV文件列名 |
英文名 |
说明 |
---|---|---|---|
1 |
hddSmart.smart_1(_raw)_value |
Raw_Read_Error_Rate |
存储器从一个硬盘表面读取数据时发生的错误率。原始值由于不同厂商的不同计算方法而有所不同,其十进制值通常是无意义的。 |
5 |
hddSmart.smart_5(_raw)_value |
Reallocated_Sector_Ct |
记录由于损坏而被映射到无损的后备区的扇区计数。当硬盘出现损坏扇区时,可以通过将其物理空间指向到特定的无损区域进行重映射修复,从而出现坏扇区的硬盘仍可使用。但当高过一定数值后,后扇区消耗殆尽而无法再重映射修复时,这些坏扇区就会显现出来且无法自行修复。 |
7 |
hddSmart.smart_7(_raw)_value |
Seek_Error_Rate |
磁头寻找磁道由于机械问题而出错几率,有多种原因可能引致出错,如:磁头伺服构件、盘体过热或损坏。原始值由于不同厂商的不同计算方法而有所不同,其十进制值通常是无意义的。 |
193 |
hddSmart.smart_193(_raw)_value |
Load_Cycle_Count |
计量磁头在加电时移至停泊区和移至盘片循环的值。 |
197 |
hddSmart.smart_197(_raw)_value |
Current_Pending_Sector |
记录了不稳定的扇区的数量。 |
198 |
hddSmart.smart_198(_raw)_value |
Offline_Uncorrectable |
记录肯定出错的扇区数量。 |
199 |
hddSmart.smart_199(_raw)_value |
UDMA_CRC_Error_Count |
记录硬盘通讯时发生的CRC(Cyclic Redundancy Check)错误。 |
188 |
hddSmart.smart_188(_raw)_value |
Command_Timeout |
由于无法连接至硬盘而终止操作的统计数,一般为0,如果远超过0,则可能电源问题,数据线接口氧化或更严重的问题。 |
187 |
hddSmart.smart_187(_raw)_value |
Reported_Uncorrect |
硬件ECC(Error Checking and Correction)无法恢复的错误计数。 |
每一个SMART列都有value和raw_value两个值,例如hddSmart.smart_1_value和hddSmart.smart_1_raw_value。
- raw_value(原始值):
数据值是硬盘运行时各项参数的实测值,大部分SMART工具以十进制显示数据。 数据值代表的意义随参数而定,大致可以分为三类:
- value (当前值):
当前值是各SMART ID项在硬盘运行时根据实测原始数据(raw value)通过公式计算的结果,结果取值范围1到253之间,253意味着最好的情况,1意味着最坏的情况。计算公式由硬盘厂家自定。
硬盘出厂时各ID项目都有一个预设的最大正常值,即出厂值,这个预设的依据及计算方法为硬盘厂家保密,不同型号的硬盘都不同,最大正常值通常为100或200或253,新硬盘刚开始使用时显示的当前值可以认为是预设的最大正常值(有些SMART ID项如温度等除外)。随着使用损耗或出现错误,当前值会根据实测数据而不断刷新并逐渐减小。因此,当前值接近临界值就意味着硬盘寿命的减少,发生故障的可能性增大,所以当前值也是判定硬盘健康状态或推测寿命的依据之一。
disk_sn |
timestamp |
fault |
hddSmart.smart_1_value |
hddSmart.smart_1_raw_value |
hddSmart.smart_5_value |
hddSmart.smart_5_raw_value |
...... |
---|---|---|---|---|---|---|---|
ZHZ3TFBD |
2021-7-9 |
0 |
84 |
926673 |
100 |
0 |
...... |
...... |
...... |
...... |
...... |
...... |
...... |
...... |
...... |
smartctl -a /dev/sda
第一列为硬盘序列号,从图1中可得。
第二列为当前时间戳。
第三列为是否为故障盘(fault_predict接口不需要该列)。
第四列hddSmart.smart_1_value对应图2中的框1。
第五列hddSmart.smart_1_raw_value对应图2中的框2。
第六列hddSmart.smart_5_value对应图2中的框3。
第七列hddSmart.smart_5_raw_value对应图2中的框4。
......(以此类推)
采集时,需注意的事项如下。
- 对于SMART信息,各个厂商的实现并不相同,采集时须注意过滤。
例如:Seagate Enterprise Capacity 3.5 HDD ST4000NM0035-1V4107 硬盘采集到的SMART信息如图3。
由于算法需要采集SMART 188,而该列的值为"0 0 0"因此要对该列的值进行过滤保,留第一个"0"即可,过滤掉后面两个数字,保证最后输入文件中的类型为数值类型。
- 由于SMART信息各个厂商的实现并不相同,可能有些厂家的SMART信息会有所缺失。
例如:某厂商的HUH728080ALE600硬盘采集到的SMART信息如图4。
如果所需的SMART信息值有缺失的话,程序会报错退出。
例如:如果输入数据中hddSmart.smart_1_value列缺失,则会报错。
KeyError: "['hddSmart.smart_1_value'] not in index"
如果想要继续训练,在数据文件内补充所缺的列并全部补0,补0后可进行正常训练,但信息缺失会影响模型预测的准确率。