Smartctl对于Linux物理服务器十分有用,在这些服务器上,可以对智能磁盘进行错误检查,并将与硬件RAID相关的磁盘信息摘录下来。
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: 16
Vendor 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