---
title: 输入文件格式
description: "smartctl指令工具将会采集出硬盘当前的SMART信息，将SMART信息按下表收集成csv数据文件。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengaccel/storage/ksml/kunpengksml_36_0009.html
sourcePath: /source/zh/kunpengaccel/storage/ksml/kunpengksml_36_0009.html
indexId: 1286f5ffd21517a5fa46f0914878a91c12c68fe063c82d4ebc88c6a50606381661
---
# 输入文件格式

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。

1. raw_value（原始值）:
制造商定义的原始值，从VALUE派生。
数据值是硬盘运行时各项参数的实测值，大部分SMART工具以十进制显示数据。 数据值代表的意义随参数而定，大致可以分为三类：

  - 数据值并不直接反映硬盘状态，必须经过硬盘内置的计算公式换算成当前值才能得出结果。
  - 数据值是直接累计的，如Start/Stop Count（启动/停止计数）的数据是50，即表示该硬盘从出厂到现在累计启停了50次。
  - 有些参数的数据是即时数，如Temperature（温度）的数据值是44，表示硬盘的当前温度是44℃。
    因此，有些参数直接查看数据也能大致了解硬盘目前的工作状态。

2. value (当前值):
  当前值是各SMART ID项在硬盘运行时根据实测原始数据（raw value）通过公式计算的结果，结果取值范围1到253之间，253意味着最好的情况，1意味着最坏的情况。计算公式由硬盘厂家自定。

  硬盘出厂时各ID项目都有一个预设的最大正常值，即出厂值，这个预设的依据及计算方法为硬盘厂家保密，不同型号的硬盘都不同，最大正常值通常为100或200或253，新硬盘刚开始使用时显示的当前值可以认为是预设的最大正常值（有些SMART ID项如温度等除外）。随着使用损耗或出现错误，当前值会根据实测数据而不断刷新并逐渐减小。因此，当前值接近临界值就意味着硬盘寿命的减少，发生故障的可能性增大，所以当前值也是判定硬盘健康状态或推测寿命的依据之一。


**表1 输入CSV文件格式**

| 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 | ...... |
| ...... | ...... | ...... | ...... | ...... | ...... | ...... | ...... |


以采集/dev/sda这块盘的SMART数据为例。```
smartctl -a /dev/sda
```


图1 示例图（1）

图2 示例图（2）

第一列为硬盘序列号，从图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。

  图3 Seagate Enterprise Capacity 3.5 HDD ST4000NM0035-1V4107 硬盘SMART信息

  由于算法需要采集SMART 188，而该列的值为"0 0 0"因此要对该列的值进行过滤保，留第一个"0"即可，过滤掉后面两个数字，保证最后输入文件中的类型为数值类型。

- 由于SMART信息各个厂商的实现并不相同，可能有些厂家的SMART信息会有所缺失。
  例如：某厂商的HUH728080ALE600硬盘采集到的SMART信息如图4。

  图4 HUH728080ALE600硬盘采集到的SMART信息

  如果所需的SMART信息值有缺失的话，程序会报错退出。 例如：如果输入数据中hddSmart.smart_1_value列缺失，则会报错。 1 KeyError: "['hddSmart.smart_1_value'] not in index" 如果想要继续训练，在数据文件内补充所缺的列并全部补0，补0后可进行正常训练，但信息缺失会影响模型预测的准确率。
