知识介绍
SMART是一种磁盘自我分析检测技术,早在90年代末就基本得到了普及
每一块硬盘(包括IDE、SCSI)在运行的时候,都会将自身的若干参数记录下来
这些参数包括型号、容量、温度、密度、扇区、寻道时间、传输、误码率等
硬盘运行了几千小时后,很多内在的物理参数都会发生变化
某一参数超过报警阈值,则说明硬盘接近损坏
此时硬盘依然在工作,如果用户不理睬这个报警继续使用
那么硬盘将变得非常不可靠,随时可能故障
启用SMART
SMART是和主板BIOS上相应功能配合的
要使用SMART,必须先进入到主板BIOS设置里边启动相关设置
一般从Pentium2级别起的主板,都支持SMART
BIOS启动以后,就是操作系统级别的事情了
很遗憾,Windows没有内置SMART相关工具(需要安装第三方工具软件)
好在Linux上很早就有了SMART支持了
如果把Linux装在VMware等虚拟机上,在系统启动时候可以看到有个服务启动报错:smartd
这个服务器就是smart的daemon进程(因为vmware虚拟机的硬盘不支持SMART,所以报错)
grep"error" /var/log/messages*
常用命令
1、smartctl -a <device> :显示硬盘SMART的全部信息。检查该设备是否已经打开SMART技术。
2、smartctl -H <device> :查看硬盘的健康状况。一般看不出来问题,没啥用。
3、smartctl -l selftest <device> :显示硬盘测试信息。
4、smartctl -l error <device> :显示硬盘历史错误信息。
5、smartctl -A <device> :显示设备SMART厂商属性和值。
6、对硬盘进行检测 手工对硬盘进行测试的方法有以下四种:
smartctl -t short <device> 后台检测硬盘,消耗时间短
smartctl -t long <device> 后台检测硬盘,消耗时间长
smartctl -C -t short <device> 前台检测硬盘,消耗时间短
smartctl -C -t long <device> 前台检测硬盘,消耗时间长
其实就是利用硬盘SMART的自检程序。此时可以用smartctl -X中断后台测试。
7、smartctl -i <device> :显示设备的身份信息,检查硬盘是否打开了SMART支持。
看到有:SMART support is: Enabled,说明硬盘支持SMART。
如果为Disabled,使用:smartctl --smart=on --offlineauto=on --saveauto=on <device>,启用SMART。
8、smartctl -s on <device> 如果没有打开SMART技术,使用该命令打开SMART技术。
处理过程
首先通过smartctl -H /dev/sda
检查磁盘健康状态,然后smartctl -a /dev/sda
查看磁盘详细情况,再对磁盘进行短期测试smartctl -t short /dev/sda
,最后查看磁盘测试结果smartctl -l selftest /dev/sda
,基本磁盘健康状态就可以定位出来,最后检查磁盘错误日志smartctl -l error /dev/sdb
查看测试结果
# smartctl -a /dev/sda
smartctl 5.42 2011-10-20 r3458 [x86_64-linux-2.6.32-358.el6.x86_64] (local build)
Copyright (C) 2002-11 by Bruce Allen, http://smartmontools.sourceforge.net
=== START OF INFORMATION SECTION ===
Device Model: KINGSTON SV300S37A60G
Serial Number: 50026B724A01E182
LU WWN Device Id: 5 0026b7 24a01e182
Firmware Version: 580ABBF0
User Capacity: 60,022,480,896 bytes [60.0 GB]
Sector Size: 512 bytes logical/physical
Device is: Not in smartctl database [for details use: -P showall]
ATA Version is: 8
ATA Standard is: ACS-2 revision 3
Local Time is: Wed Oct 11 15:41:49 2017 CST
SMART support is: Available - device has SMART capability.
SMART support is: Enabled
=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED
General SMART Values:
Offline data collection status: (0x02) Offline data collection activity
was completed without error.
Auto Offline Data Collection: Disabled.
Self-test execution status: ( 0) The previous self-test routine completed
without error or no self-test has ever
been run.
Total time to complete Offline
data collection: ( 0) seconds.
Offline data collection
capabilities: (0x7d) SMART execute Offline immediate.
No Auto Offline data collection support.
Abort Offline collection upon new
command.
Offline surface scan supported.
Self-test supported.
Conveyance Self-test supported.
Selective Self-test supported.
SMART capabilities: (0x0003) Saves SMART data before entering
power-saving mode.
Supports SMART auto save timer.
Error logging capability: (0x01) Error logging supported.
General Purpose Logging supported.
Short self-test routine
recommended polling time: ( 1) minutes.
Extended self-test routine
recommended polling time: ( 48) minutes.
Conveyance self-test routine
recommended polling time: ( 2) minutes.
SCT capabilities: (0x0025) SCT Status supported.
SCT Data Table supported.
SMART Attributes Data Structure revision number: 10
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE
1 Raw_Read_Error_Rate 0x0032 095 095 050 Old_age Always - 8601004262
5 Reallocated_Sector_Ct 0x0033 099 099 003 Pre-fail Always - 0
9 Power_On_Hours 0x0032 085 085 000 Old_age Always - 145066815403100
12 Power_Cycle_Count 0x0032 100 100 000 Old_age Always - 120
171 Unknown_Attribute 0x000a 100 100 000 Old_age Always - 0
172 Unknown_Attribute 0x0032 100 100 000 Old_age Always - 0
174 Unknown_Attribute 0x0030 000 000 000 Old_age Offline - 97
177 Wear_Leveling_Count 0x0000 000 000 000 Old_age Offline - 96
181 Program_Fail_Cnt_Total 0x000a 100 100 000 Old_age Always - 0
182 Erase_Fail_Count_Total 0x0032 100 100 000 Old_age Always - 0
187 Reported_Uncorrect 0x0012 100 100 000 Old_age Always - 0
189 High_Fly_Writes 0x0000 029 041 000 Old_age Offline - 77312098333
194 Temperature_Celsius 0x0022 029 041 000 Old_age Always - 29 (Min/Max 18/41)
195 Hardware_ECC_Recovered 0x001c 102 102 000 Old_age Offline - 8601004262
196 Reallocated_Event_Count 0x0033 099 099 003 Pre-fail Always - 0
201 Soft_Read_Error_Rate 0x001c 102 102 000 Old_age Offline - 8601004262
204 Soft_ECC_Correction 0x001c 102 102 000 Old_age Offline - 8601004262
230 Head_Amplitude 0x0013 100 100 000 Pre-fail Always - 100
231 Temperature_Celsius 0x0013 091 091 010 Pre-fail Always - 0
233 Media_Wearout_Indicator 0x0032 000 000 000 Old_age Always - 9261
234 Unknown_Attribute 0x0032 000 000 000 Old_age Always - 14820
241 Total_LBAs_Written 0x0032 000 000 000 Old_age Always - 14820
242 Total_LBAs_Read 0x0032 000 000 000 Old_age Always - 6033
SMART Error Log not supported
SMART Self-test log structure revision number 1
Num Test_Description Status Remaining LifeTime(hours) LBA_of_first_error
# 1 Short offline Completed without error 00% 13404 -
# 2 Selective offline Completed without error 00% 13404 -
# 3 Selective offline Completed without error 00% 13404 -
# 4 Selective offline Completed without error 00% 13404 -
# 5 Short offline Completed without error 00% 13403 -
SMART Selective self-test log data structure revision number 1
SPAN MIN_LBA MAX_LBA CURRENT_TEST_STATUS
1 0 10 Not_testing
2 10 20 Not_testing
3 0 0 Not_testing
4 0 0 Not_testing
5 0 0 Not_testing
Selective self-test flags (0x0):
After scanning selected spans, do NOT read-scan remainder of disk.
If Selective self-test is pending on power-up, resume after 0 minute delay.
FLAG是标记,WHEN_FAILED 代表错误信息,上面显示的WHEN_FAILED纵行是空行,说明硬盘没有故障。如果WHEN_FAILED显示数字,表明硬盘磁道可能有比较大的坏道。
1、read error rate 错误读取率:记录读取数据错误次数(累计),非0值表示硬盘已经或者可能即将发生坏道;
2、Reallocated_Sector_Ct 出厂后产生的坏块个数, 初始值为100,如果有坏块,从1开始增加,每4个坏块增加1
2、reallocated sectors count 重分配扇区计数:硬盘生产过程中,有一部分扇区是保留的。当一些普通扇区读/写/验证错误,则重新映射到保留扇区,挂起该异常扇区,并增加计数。随着计数增加,io性能骤降。如果数值不为0,就需要密切关注硬盘健康状况;如果持续攀升,则硬盘已经损坏;如果重分配扇区数超过保留扇区数,将不可修复;
3、power-on time 累计通电时间:指硬盘通电时间累计值。(单位:天/时/分/秒。休眠/挂起不计入?新购入的硬盘应小于100hrs);
4、power cycle count 电源开关计数:每次加电增加一次计数,新硬盘应小于10次;
5、temperature 温度:没嘛好说的,硬盘温度而已,理论上比工作环境高不了几度。(sudo hddtemp /dev/sda)
6、reallocetion event count 重映射扇区操作次数:上边的重映射扇区还记得吧?这个就是操作次数,成功的,失败的都计数。成功好说,也许硬盘有救,失败了,也许硬盘就要报废了;
7、throughput performance 磁盘吞吐量:平均吞吐性能(一般在进行了人工 Offline S.M.A.R.T. 测试以后才会有值。);
spinup time 主轴电机到达要求转速时间(毫秒/秒);
start/stop count 电机启动/停止次数(可以当作开机/关机次数,或者休眠后恢复,均增加一次计数。全新的硬盘应该小于10);
reallocated sectors count 重分配扇区计数:硬盘生产过程中,有一部分扇区是保留的。当一些普通扇区读/写/验证错误,则重新映射到保留扇区,挂起该异常扇区,并增加计数。随着计数增加,io性能骤降。如果数值不为0,就需要密切关注硬盘健康状况;如果持续攀升,则硬盘已经损坏;如果重分配扇区数超过保留扇区数,将不可修复;
seek error rate 寻道错误率:磁头定位错误一次,则技术增加一次。如果持续攀升,则可能是机械部分即将发生故障;
seek timer performance 寻道时间:寻道所需要的时间,越短则读取数据越快,但是如果时间增加,则可能机械部分即将发生故障;
power-on time 累计通电时间:指硬盘通电时间累计值。(单位:天/时/分/秒。休眠/挂起不计入?新购入的硬盘应小于100hrs);
spinup retry count 电机启动失败计数:电机启动到指定转速失败的累计数值。如果失败,则可能是动力系统产生故障;
power cycle count 电源开关计数:每次加电增加一次计数,新硬盘应小于10次;
g-sensor error rate 坠落计数:异常加速度(例如坠落,抛掷)计数——磁头会立即回到landing zone,并增加一次计数;
power-off retract count 异常断电次数:磁头在断电前没有完全回到landing zone的次数,每次异常断电则增加一次计数;
load/unload cycle count 磁头归位次数:指工作时,磁头每次回归landing zone的次数。(ps:流言说某个linux系统——不点名,在使用电池时候,会不断强制磁头归为,而磁头归位次数最大值约为600k次,所以认为linux会损坏硬盘,实际上不是这样的);
reallocetion event count 重映射扇区操作次数:上边的重映射扇区还记得吧?这个就是操作次数,成功的,失败的都计数。成功好说,也许硬盘有救,失败了,也许硬盘就要报废了;
current pending sector count 待映射扇区数:出现异常的扇区数量,待被映射的扇区数量。 如果该异常扇区之后成功读写,则计数会减小,扇区也不会重新映射。读错误不会重新映射,只有写错误才会重新映射;
uncorrectable sector count 不可修复扇区数:所有读/写错误计数,非0就证明有坏道,硬盘报废;
SSD固态硬盘多出的Attributes 信息解释:
其中我们比较关注的有以下四点:
1、Media_Wearout_Indicator: 使用耗费,100为没有任何耗费; 表示SSD上NAND的擦写次数的程度,初始值为100,随着擦写次数的增加,开始线性递减,递减速度按照擦写次数从0到最大的比例。一旦这个值降低到 1,就不再降了,同时表示SSD上面已经有NAND的擦写次数到达了最大次数。这个时候建议需要备份数据,以及更换SSD。
上面的机器为099,按照100滴血算,目前只耗了1滴血
2、Reallocated_Sector_Ct: 出厂后产生的坏块个数, 初始值为100,如果有坏块,从1开始增加,每4个坏块增加1
这里offer的机器还没有任何坏块
3、Host_Writes_32MiB: 已写32MiB, 每写入65536个扇区raw value增加1。这个扇区还是个数量单位,512字节
比如:这块盘就是 1284966 * 65536 * 512 = 40155.1875 GB
注意到每个机器都有一块盘写的比较少,这块盘就是hotspare盘。
每台机器我们有7块ssd盘。其中6块盘做的raid 5,第7块盘做的hotspare。
4、Available_Reservd_Space: SSD上剩余的保留空间, 初始值为100,表示100%,阀值为10,递减到10表示保留空间已经不能再减少
-----------------------------------
smartctl 输出详解
https://blog.51cto.com/wenqiang/1434581
作者:上善若水_001
链接:https://www.jianshu.com/p/da26137065d9
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。