Linux硬盘的检测--smartctl详细介绍
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Linux硬盘的检测--smartctl详细介绍
概述
随着硬盘容量、速度的快速发展,硬盘的可靠性问题越来越重要,今天的单块硬盘存储容量可轻松达到1TB,硬盘损坏带来的影响⾮常巨⼤。
不同的⽂件系统(xfs,reiserfs,ext3)都有⾃⼰的检测和修复⼯具。
检测之前可以先使⽤dmesg命令查看有没有硬件I/O故障的⽇志,如果有,先⽤fsck看看是不是⽂件系统有问题,如果不是则可以使⽤下⾯介绍硬盘检测和优化⽅法来修复它。
grep"error"/va/log/messages*;
Linux检测硬盘坏道
使⽤SMART检测硬盘
SMART是⼀种磁盘⾃我分析检测技术,早在90年代末就基本得到了普及每⼀块硬盘(包括IDE、SCSI),在运⾏的时候都会将⾃⾝的若⼲参数记录下来,这些参数包括型号、容量、温度、密度、扇区、寻道时间、传输、误码率等。
硬盘运⾏了⼏千⼩时后,很多内在的物理参数都会发⽣变化,某⼀参数超过报警阈值,则说明硬盘接近损坏,此时硬盘依然在⼯作,如果⽤户不理睬这个报警继续使⽤,那么硬盘将变得⾮常不可靠,随时可能故障。
启⽤SMART
SMART是和主板BIOS上相应功能配合的,要使⽤SMART,必须先进⼊到主板BIOS设置⾥边启动相关设置。
⼀般从Pentium2级别起的主板,都⽀持SMART,BIOS启动以后,就是操作系统级别的事情了(Windows没有内置SMART相关⼯具,需要安装第三⽅⼯具软件),好在Linux上很早就有了SMART⽀持了,如果把Linux装在VMware等虚拟机上,在系统启动时候可以看到有个服务启动报错:smartd。
这个服务器就是smart的daemon进程(因为vmware虚拟机的硬盘不⽀持SMART,所以报错)。
smartd是⼀个守护进程(⼀个帮助程序),它能监视拥有⾃我监视,分析和汇报技术(Self-Monitoring, Analysis, and Reporting Technology - SMART)的硬盘。
SMART体系使得硬盘能监视并汇报⾃⼰的运⾏状况.它的⼀个重要特性是能够预测失败,使得系统管理员能避免数据丢失。
smartctl简单⽤法
smartctl -a <device> 检查该设备是否已经打开SMART技术。
smartctl -s on <device> 如果没有打开SMART技术,使⽤该命令打开SMART 技术。
smartctl -t short <device> 后台检测硬盘,消耗时间短; smartctl -t long <device> 后台检测硬盘,消耗时间长; smartctl -C -t short <device> 前台检测硬盘,消耗时间短; smartctl -C -t long <device> 前台检测硬盘,消耗时间长。
其实就是利⽤硬盘SMART的⾃检程序。
smartctl -X <device> 中断后台检测硬盘。
smartctl -l selftest <device> 显⽰硬盘检测⽇志。
smartctl -l error <device> 显⽰硬盘错误汇总。
⾸先通过dmesg⼯具,确认⼀下硬盘的设备符号。
例如⼀个IDE硬盘连接到Primary IDE 总线上的Slave位置,硬盘设备符号
是/dev/hdb,hdb中的h代表IDE,如果显⽰为sdb,则代表SATA和SCSI,最后⼀个字幕b代表Primary总线,第⼆块硬盘即Slave位置,确认硬盘是否打开了SMART⽀持:
# smartctl -i /dev/sda
smartctl 5.40 2010-10-16 r3189 [i386-redhat-linux-gnu] (local build)
Copyright (C) 2002-10 by Bruce Allen,
=== START OF INFORMATION SECTION ===
Device Model: HITACHI HTS543225L9SA00
Serial Number: 090131FB2F32YLG28JEA
Firmware Version: FBEZC48C
User Capacity: 250,059,350,016 bytes
Device is: Not in smartctl database [for details use: -P showall]
ATA Version is: 8
ATA Standard is: ATA-8-ACS revision 3f
Local Time is: Wed May 25 10:10:39 2011 CST
SMART support is: Available - device has SMART capability.
SMART support is: Enabled //表⽰启⽤了smart⽀持
如果看到SMART support is: Disabled表⽰SMART未启⽤,执⾏如下命令,启动SMART
# smartctl --smart=on --offlineauto=on --saveauto=on /dev/sda
smartctl 5.40 2010-10-16 r3189 [i386-redhat-linux-gnu] (local build)
Copyright (C) 2002-10 by Bruce Allen,
=== START OF ENABLE/DISABLE COMMANDS SECTION ===
SMART Enabled.
SMART Attribute Autosave Enabled.
SMART Automatic Offline Testing Enabled every four hours.
现在硬盘的SMART功能已经被打开,执⾏如下命令查看硬盘的健康状况
# smartctl -H /dev/sda
smartctl 5.40 2010-10-16 r3189 [i386-redhat-linux-gnu] (local build)
Copyright (C) 2002-10 by Bruce Allen,
=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED
请注意result后边的结果:PASSED,这表⽰硬盘健康状态良好;如果这⾥显⽰FAILED,那么最好⽴刻给服务器更换硬盘。
SMART只能报告磁盘已经不再健康,但是报警后还能继续运⾏多久是不确定的。
通常,SMART报警参数是有预留的,磁盘报警后,不会当场坏掉,⼀般
能坚持⼀段时间,有的硬盘SMART报警后还继续跑了好⼏年,有的硬盘SMART报错后⼏天就坏了。
但是⼀旦出现报警,侥幸⼼⾥是万万不能的……
#smartctl -A /dev/sda 查看硬盘的详细信息
测试硬盘使⽤时间以及写⼊字节数
#smartctl -s on /dev/sda 如果没有打开SMART技术,使⽤该命令打开SMART技术。
#smartctl -t short /dev/sda 后台检测硬盘,消耗时间短;
#smartctl -t long /dev/sda 后台检测硬盘,消耗时间长;
#smartctl -C -t /dev/sda short前台检测硬盘,消耗时间短;
#smartctl -C -t /dev/sda long前台检测硬盘,消耗时间长。
其实就是利⽤硬盘SMART的⾃检程序。
#smartctl -X /dev/sda 中断后台检测硬盘。
#smartctl -l selftest /dev/sda 显⽰硬盘检测⽇志。
#smartctl -l error /dev/sda 显⽰硬盘错误汇总。
如果需要定期登录到服务器上运⾏smartctl⽐较⿇烦时,linux还提供了系统进程smartd,编辑配置⽂件:1 vi /etc/smartd.conf
这个配置⽂件中⼤部分可能是注释掉的说明,只需要写⼊和当前硬盘相关的配置即可:
/dev/sda -H -m test@ // 监控磁盘的健康状态,当SMART中报
告 PASSED的时候不理睬。
⼀旦出现 Failure,⽴刻⽤邮件通知⽤户指定的邮箱
/dev/sda -a -m
admin@,root@localhost // 监控磁盘的所有属性,当SMART中报
告 PASSED的时候不理睬。
⼀旦出现 Failure,⽴刻⽤邮件通知⽤户指定的邮箱
/dev/twa0 -d 3ware,0 -a -s L/../../7/00 // 监控3ware 9000控制器上的第⼀个ATA磁盘的所有属性,在每个礼拜天的00:00--01:00进⾏长格式的⾃我检测
/dev/sg2 -d areca,1 -a -s L/../(01|15)/./22// 监控Areca Raid控制器上的第⼀个SATA磁盘的所有属性,在每个礼拜⽉的第1天和第15天的22:00--23:00进⾏长格式的⾃我检测
-s
(O/../.././(00|06|12|18)|S/../.././01|L/../../6/03)// 在每天的00:00,06:00,12:00,18:00进⾏离线的⾃检,并在每天的01:00-02:00进⾏短格式的⾃检,并在每个礼拜6的03:00-04:00进⾏长格式的⾃检
配置好 smartd.conf后需执⾏
/etc/init.d/smartd restart 即可⽣效
其他和smartd.conf相关的配置可参见:
/man/smartd.conf.5.html
使⽤ badblocks检测硬盘坏块
badblocks命令可以检查磁盘装置中损坏的区块。
执⾏该指令时须指定所要检查的磁盘装置,及此装置的磁盘区块数。
语法与参数:语法:badblocks [-svw][-b ][-o ][磁盘装置][磁盘区块数][启始区块]参数: -b 指定磁盘的区块⼤⼩,单位为字节。
-o 将检查的结果写⼊指定的输出⽂件。
-s 在检查时显⽰进度。
-v 执⾏时显⽰详细的信息。
-w 在检查时,执⾏写⼊测试。
[磁盘装置] 指定要检查的磁盘装置。
[磁盘区块数] 指定磁盘装置的区块总数。
[启始区块] 指定要从哪个区块开始检查。
badblocks检测磁盘坏块:
badblocks -s//显⽰进度 -v//显⽰执⾏详细情况 /dev/sda1
# badblocks -s -v /dev/sda
正在检查从 0 到 244198583的块
Checking for bad blocks (read-only test): ^C0.10% done, 0:04 elapsed
Interrupted at block 272896
$badblocks -s//显⽰进度 -w//以写去检测 -v//显⽰执⾏详细情况 /dev/sda2
# badblocks -w -s -v /dev/sda1
Checking for bad blocks in read-write mode
From block 0 to 25607577
Testing with pattern 0xaa: ^C0.73% done, 0:03 elapsed
注意,不能以写的⽅式检测已经挂载的硬盘
使⽤hdparm测试
测试硬盘读写速度
# hdparm -Tt /dev/sda
/dev/sda:
Timing cached reads:
1918 MB in 2.00 seconds = 959.62 MB/sec
Timing buffered disk reads: 184 MB in 3.00 seconds = 61.26 MB/sec
hdparm可检测,显⽰与设定IDE或SCSI硬盘的参数。
语法:
hdparm [-CfghiIqtTvyYZ][-a <快取分区>][-A <0或1>][-c <I/O模式>][-d <0或1>][-k <0或1>][-K <0或1>][-m <分区数>][-n <0或1>][-p <PIO模式>][-P <分区数>][-r <0或1>][-S <时间>][-u <0或1>][-W <0或1>][-X <传输模式>] [设备]
-a<快取分区> 设定读取⽂件时,预先存⼊块区的分区数,若不加上<快取分区>选项,则显⽰⽬前的设定。
-A<0或1> 启动或关闭读取⽂件时的快取功能。
-c<I/O模式> 设定IDE32位I/O模式。
-C 检测IDE硬盘的电源管理模式。
-d<0或1> 设定磁盘的DMA模式。
-f 将内存缓冲区的数据写⼊硬盘,并清楚缓冲区。
-g 显⽰硬盘的磁轨,磁头,磁区等参数。
-h 显⽰帮助。
-i 显⽰硬盘的硬件规格信息,这些信息是在开机时由硬盘本⾝所提供。
-I 直接读取硬盘所提供的硬件规格信息。
-k<0或1> 重设硬盘时,保留-dmu参数的设定。
-K<0或1> 重设硬盘时,保留-APSWXZ参数的设定。
-m<磁区数> 设定硬盘多重分区存取的分区数。
-n<0或1> 忽略硬盘写⼊时所发⽣的错误。
-p<PIO模式> 设定硬盘的PIO模式。
-P<磁区数> 设定硬盘内部快取的分区数。
-q 在执⾏后续的参数时,不在屏幕上显⽰任何信息。
-r<0或1> 设定硬盘的读写模式。
-S<时间> 设定硬盘进⼊省电模式前的等待时间。
-t 评估硬盘的读取效率。
-T 评估硬盘快取的读取效率。
-u<0或1> 在硬盘存取时,允许其他中断要求同时执⾏。
-v 显⽰硬盘的相关设定。
-W<0或1> 设定硬盘的写⼊快取。
-X<传输模式> 设定硬盘的传输模式。
-y 使IDE硬盘进⼊省电模式。
-Y 使IDE硬盘进⼊睡眠模式。
-Z 关闭某些Seagate硬盘的⾃动省电功能。