这是我的输出的一部分smartctl -H /dev/sda
:
ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE
190 Airflow_Temperature_Cel 0x0022 053 028 045 Old_age Always In_the_past 47
我该如何解释这一点?具体来说:
- 标志位代表什么意思?
- “价值”和“原始价值”之间有什么区别?
- 每个数字列使用的单位是什么?是摄氏度吗?既然如此,为什么我得到的最差温度是 28 摄氏度,而现在我的温度是 53 摄氏度?或者 47 摄氏度?
- 阈值是否是驱动器超过该值即被认为发生故障?驱动器超过该值即自行关闭?还是其他什么?
答案1
“价值”和“原始价值”之间有什么区别?
例如,属性 12 是“电源循环计数”:磁盘已通电多少次。
每个属性都有一个“原始”值,打印在标题“RAW_VALUE”下,还有一个“标准化”值,打印在标题“VALUE”下。[注意:smartctl 以十进制打印这些值。]在刚刚给出的示例中,属性 12 的“原始值”将是磁盘已进行电源循环的实际次数,例如,如果磁盘在整整一年内每天打开一次,则为 365。每个供应商都使用自己的算法将此“原始”值转换为 1 到 254 范围内的“标准化”值。请记住,smartctl 仅报告从设备读取的不同属性类型、值和阈值。它不执行“原始”值和“标准化”值之间的转换:这是由磁盘的固件完成的。
每个数字列使用什么单位?
SMART 标准并未指定如何将原始值转换为具有物理单位的数量。在大多数情况下,smartctl 打印的值是合理的。例如,温度属性的原始值通常等于摄氏温度。但是在某些情况下,供应商会使用不寻常的惯例。例如,我的笔记本电脑上的日立磁盘以分钟而不是小时为单位报告其通电时间。一些 IBM 磁盘在其原始值中跟踪三个温度,而不是一个。等等。
答案2
首先,SMART 规范几乎不存在:
“SMART” 逐渐被理解为(尽管没有任何正式规范)指的是一系列特定的指标和方法,并适用于与 ATA 无关的用于传达相同类型事物的协议。
这是一个缺乏明确指导方针的“标准”,但遵循一些通用概念。它是由不同的公司为不同类型的存储开发的。解释是特定于供应商的(和特定于磁盘类型的)。对于现代磁盘,通常有一些相同的通用属性,例如Power_On_Hours
(尽管有一些例外):
ID# ATTRIBUTE_NAME FLAGS VALUE WORST THRESH FAIL RAW_VALUE
9 Power_On_Hours -O--CK 046 046 000 - 48089
为了理解smartctl
标志,您必须将数字转换为二进制并应用位掩码。幸运的是,有一种更简单的方法,只需使用-x
switch,smartctl -x /dev/sda
它会为您提供相当详细的输出:
...
ID# ATTRIBUTE_NAME FLAGS VALUE WORST THRESH FAIL RAW_VALUE
1 Raw_Read_Error_Rate POSR-K 100 100 000 - 0
5 Reallocate_NAND_Blk_Cnt -O--CK 100 100 010 - 0
9 Power_On_Hours -O--CK 100 100 000 - 49936
12 Power_Cycle_Count -O--CK 100 100 000 - 12
171 Program_Fail_Count -O--CK 100 100 000 - 0
172 Erase_Fail_Count -O--CK 100 100 000 - 0
173 Ave_Block-Erase_Count -O--CK 092 092 000 - 127
174 Unexpect_Power_Loss_Ct -O--CK 100 100 000 - 8
183 SATA_Interfac_Downshift -O--CK 100 100 000 - 0
184 Error_Correction_Count -O--CK 100 100 000 - 0
187 Reported_Uncorrect -O--CK 100 100 000 - 0
194 Temperature_Celsius -O---K 055 048 000 - 45 (Min/Max 22/52)
196 Reallocated_Event_Count -O--CK 100 100 000 - 0
197 Current_Pending_ECC_Cnt -O--CK 100 100 000 - 0
198 Offline_Uncorrectable ----CK 100 100 000 - 0
199 UDMA_CRC_Error_Count -O--CK 100 100 000 - 0
202 Percent_Lifetime_Remain ----CK 092 092 001 - 8
206 Write_Error_Rate -OSR-- 100 100 000 - 0
246 Total_LBAs_Written -O--CK 100 100 000 - 29233249069
247 Host_Program_Page_Count -O--CK 100 100 000 - 918009728
248 FTL_Program_Page_Count -O--CK 100 100 000 - 630581294
180 Unused_Reserve_NAND_Blk PO--CK 000 000 000 - 1234
210 Success_RAIN_Recov_Cnt -O--CK 100 100 000 - 0
||||||_ K auto-keep
|||||__ C event count
||||___ R error rate
|||____ S speed/performance
||_____ O updated online
|______ P prefailure warning
每个属性可能被分配多个(二进制)标志。您可能对带有标志的属性感兴趣P
- 故障前警告。或者错误计数器(R
标志)可能是即将出现问题的标志。
原始值是最可靠的。有一个好主意,将所有属性标准化为公共范围0
,100
如果输出是所有100
磁盘都是健康的。然而,不同的供应商尝试将各种内容编码到此类字段中。例如,对于属性,Temperature_Celsius
原始值为:
45 (Min/Max 22/52)
当转换为值时,它会给你55
(这很奇怪)尽管如此,smartctl
它会将其转换为整数223339741229
(这肯定超出了摄氏度)。
温度通常以摄氏度为单位报告,许多供应商在属性名称中写入单位。根据谷歌 2007 年的论文(在旋转磁盘上)温度并不是磁盘故障的良好指标。