smartctl核心smart属性检测硬盘健康状态

缘起

最近有块系统盘使用比较久了,需要监控健康状态防止突然挂了,因此简单研究了smartctl检测smart属性的方案,这里做个小记。

操作方案

转自:https://blog.csdn.net/watermelonbig/article/details/72871990

1、对磁盘进行一个轻量的测试

smartctl -t short /dev/sdb

根据上一个命令提示,等待2分钟后,查看检测结果:

smartctl -l selftest /dev/sdb

2、查看磁盘健康状态信息

smartctl -H /dev/sda

smartctl 5.43 2012-06-30 r3573 [x86_64-linux-2.6.32-431.el6.x86_64] (local build)
Copyright (C) 2002-12 by Bruce Allen, http://smartmontools.sourceforge.net=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED
Please note the following marginal Attributes:
ID# ATTRIBUTE_NAME          FLAG     VALUE  WORST   THRESH   TYPE      UPDATED  WHEN_FAILED  RAW_VALUE  1 Raw_Read_Error_Rate     0x002f   121        035         051         Pre-fail   Always      In_the_past        619

结果解读:

SMART overall-health self-assessment test result,标识磁盘是否通过了健康检查。

RAW_VALUE是一个积累增涨的数值,没有特别多的意义。

VALUE、WORST、THRESH三个参数是最重要的,这是磁盘厂商为磁盘设计的用于判断一块磁盘是否已经损坏到不可使用的几个重要参数。

VALUE会有一个初始值,每当有磁盘发生读写错误时,这个参数值就会减少。一旦该参数的值小于THRESH值的时候,磁盘就变成完全的不可用了。

WORST参数记录了一个磁盘在发生读写错误时,发生过的最大的一次错误时的坏块数量。

TYPE ,Pre-fail就是侦测到有衰退的现象,或者说是磁盘在未来某一个时候会fail;Old-age就算正常,只是要算是高龄的磁盘了。



3、查看厂商设置的磁盘smart属性信息

smartctl -A /dev/sda

smartctl 5.43 2012-06-30 r3573 [x86_64-linux-2.6.32-431.el6.x86_64] (local build)
Copyright (C) 2002-12 by Bruce Allen, http://smartmontools.sourceforge.net=== START OF READ SMART DATA SECTION ===
SMART Attributes Data Structure revision number: 16Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE  1 Raw_Read_Error_Rate     0x002f   120   035   051    Pre-fail  Always   In_the_past 677
 3 Spin_Up_Time            0x0027   167   147   021    Pre-fail  Always       -       10616
 4 Start_Stop_Count        0x0032   100   100   000    Old_age   Always       -       29
 5 Reallocated_Sector_Ct   0x0033   200   200   140    Pre-fail  Always       -       0
 7 Seek_Error_Rate         0x002e   200   200   000    Old_age   Always       -       0
 9 Power_On_Hours          0x0032   078   078   000    Old_age   Always       -       16378
10 Spin_Retry_Count        0x0032   100   253   000    Old_age   Always       -       0
11 Calibration_Retry_Count 0x0032   100   253   000    Old_age   Always       -       0
12 Power_Cycle_Count       0x0032   100   100   000    Old_age   Always       -       29
183 Runtime_Bad_Block       0x0032   100   100   000    Old_age   Always       -       0
192 Power-Off_Retract_Count 0x0032   200   200   000    Old_age   Always       -       14
193 Load_Cycle_Count        0x0032   200   200   000    Old_age   Always       -       14
194 Temperature_Celsius     0x0022   095   086   000    Old_age   Always       -       57
196 Reallocated_Event_Count 0x0032   200   200   000    Old_age   Always       -       0
197 Current_Pending_Sector  0x0032   200   200   000    Old_age   Always       -       3
198 Offline_Uncorrectable   0x0030   200   200   000    Old_age   Offline      -       0
199 UDMA_CRC_Error_Count    0x0032   200   200   000    Old_age   Always       -       0
200 Multi_Zone_Error_Rate   0x0008   200   200   000    Old_age   Offline      -       0

以上参数中的1、5和197相对重要。

Raw_Read_Error_Rate ,是标识磁盘健康与否的关键指标属性。

Reallocated_Sector_Ct,指有多少数据块已经被重新remapping了。

Current_Pending_Sector,指当前有多少数据块是不可用状态的。


4、磁盘的修复 当磁盘出现较多坏块时,意味着文件系统也将变得不可靠。最直接的一种故障会表现为磁盘的某个分区的文件系统突然变成了只读系统。这就意味着运行在这个分区上的程序都会挂掉。 这种情况下,建议重启系统进入单用记维护模式,执行fsck -y /dev/sda3(举例)进行修复。

下面也提供了一种比较高级的手动强行修复坏块的办法,未经尝试。 https://www.thomas-krenn.com/en/wiki/Analyzing_a_Faulty_Hard_Disk_using_Smartctl#Forcing_Re-mapping_a_Defective_Sector

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/watermelonbig/article/details/72871990

参考文档

https://blog.csdn.net/watermelonbig/article/details/72871990


发表评论

必填

选填

选填

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。