Linux硬盘的检测(原创)

http://czmmiao.iteye.com/blog/1058215

概述

随着硬盘容量、速度的快速发展,硬盘的可靠性问题越来越重要,今天的单块硬盘存储容量可轻松达到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, http://smartmontools.sourceforge.net

=== 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, http://smartmontools.sourceforge.net

=== 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, http://smartmontools.sourceforge.net

=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED

请注意result后边的结果:PASSED,这表示硬盘健康状态良好;如果这里显示Failure,那么最好立刻给服务器更换硬盘。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  [email protected]


//
监控磁盘的健康状态,当SMART中报告
PASSED的时候不理睬。一旦出现
Failure,立刻用邮件通知用户指定的邮箱

/dev/sda -a -m  [email protected],[email protected]

//
监控磁盘的所有属性,当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相关的配置可参见:

http://smartmontools.sourceforge.net/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硬盘的自动省电功能。

参考至:http://hi.baidu.com/dmkj2008/blog/item/df3b031bb514abc1ac6e757f.html

http://smartmontools.sourceforge.net/man/smartd.conf.5.html

http://www.bsdlover.cn/html/32/n-5332.html

本文原创,转载请注明作者、出处

如有错误,欢迎指正

邮箱:[email protected]

时间: 2024-12-16 00:07:04

Linux硬盘的检测(原创)的相关文章

Linux硬盘性能检测

对于现在的计算机来讲,整个计算机的性能主要受磁盘IO速度的影响,内存.CPU包括主板总线的速度已经很快了. 基础检测方法 1.dd命令 dd命令功能很简单,就是从一个源读取数据以bit级的形式写到一个目标地址,通过这种方式我们就可以检测我们实际磁盘在linux系统中的读写性能,不需要经过任何检测软件而就是去读取数据,一般来讲用dd来检测磁盘的性能也被认为是最接近真实情况. 用法:dd if[数据从哪里读取,一般来讲从dev下的zero设备,这个设备不断返回0作为数据源]  of[把读取的文件写入

linux硬盘分区格式化及挂载

linux硬盘分区格式化及挂载 1.硬盘的接口类型 硬盘的接口一般分为两种,一种是IDE并行接口,一种是SATA串行接口, 在linux上面IDE接口的硬盘被识别为/dev/hd[a-z]这样的设备,其中hdc表示光驱设备,这是因为主板上面一般有两个IDE插槽,一个IDE插槽可以接两个硬盘,而光驱是接着IDE的第二个插槽上面的第一个接口上面.其他诸如SCSI,SAS,SATA,USB等接口的设备在linux识别为/dev/sd[a-z]. 2.linux硬盘的分区 磁盘的分区分为: primar

SMART 硬盘状态检测

SMART 简介 S.M.A.R.T.,全称为"Self-Monitoring Analysis and Reporting Technology",即"自我监测.分析及报告技术".是一种自动的硬盘状态检测与预警系统和规范.通过在硬盘硬件内的检测指令对硬盘的硬件如磁头.盘片.马达.电路的运行情况进行监控.记录并与厂商所设定的预设安全值进行比较,若监控情况将或已超出预设安全值的安全范围,就可以通过主机的监控硬件或软件自动向用户作出警告并进行轻微的自动修复,以提前保障硬

Linux 常用 性能 检测 命令 解释

1.uptime [[email protected] ~]# uptime 15:08:15 up 98 days,  4:19,  2 users,  load average: 0.07, 0.29, 0.14 当前时间   系统运行至今的时间   多少用户登录当前系统   分别是1分钟,5分钟,15分钟前至今的负载情况 load average是队列平均长度,在队列中等待执行的进程数量 该值越低,说明进程更有可能立即被CPU处理,相反越高,说明进程更有可能阻塞 该命令可以检查服务器负载是

Linux硬盘安装步骤

Linux硬盘安装步骤 网上找了许多用DVD镜像硬盘安装FC5的文章,可是都不系统,为了全中国的广大菜鸟们,兄弟连Linux云计算架构师 抽了很多时间来写这篇详细的安装文章,希望对初次接触LINUX或者刚刚入门的朋友有所帮助. 一.预备知识: 1. 理解LINUX的分区,我们平时用的WINDOWS操作系统一般是FAT32或者NTFS分区,而LINUX要用不同的分区结构,现在一般都用EXT3,而且比WINDOWS要多分一个交换分区,也就是SWAP分区.也就是说如果你想安装LINUX,至少要有两个分

VMware 下扩展linux硬盘空间

linux下扩展硬盘有很多种方式,在扩展之前,尽量看看自己的空间存在的有哪些盘,然后再进行扩展.如果是扩展的话,磁盘的符号和已经有的符号一样,比如都是sda的设备,知识分区不同,可能是sda3 sda4 如果是添加的话,相对于一个新的硬盘,可能是sdb  sdc 很多人在学习Nutch.Hadoop或者熟悉Linux操作系统时都会选择在VMWare上安装Linux虚拟机,而又往往不想分配给Linux虚拟机足够大的硬盘空间,这就容易导致使用Linux一段时间后,发现虚拟机上的硬盘空间不够了,此时怎

企业生产场景下如何对Linux硬盘分区

生产环境: 硬件:华硕PC机,4 Intel(R) Core(TM) i5-6400 CPU @ 2.70GHz,内存4G: 任务:生产场景下如何对Linux硬盘分区,安装CentOS6.9版本,搭建公网环境: 技巧:U盘安装.生产场景分区 1.背景   添加一台新电脑,目前该主机是裸机,没有安装任何操作系统.在安装操作系统之前,先要分区,在这里作者是按企业生产场景环境来分区的,对硬盘分区之前,我们先梳理磁盘分区的相关知识. 2.磁盘分区知识:    为什么硬盘要分区,因为我们要告诉操作系统,从

给EXSI虚拟机中linux硬盘扩容

给EXSI虚拟机中linux硬盘扩容 post by rocdk890 / 2015-5-18 14:45 Monday linux技术 发表评论 今天公司同事过来给我说要求把公司的exsi服务器上的一台虚拟机硬盘扩大,好吧,连上exsi后,直接在原来的硬盘40G上加了20G,等我添加完后,同事才告诉我那台是linux的系统,好吧,只能连上ssh来更改了.下面就是我用另外一台虚拟机来做的实验.   系统:centos 5.x1.exsi扩容图扩容前:扩容后:2.分区前准备yum -y insta

Linux如何批量检测端口连通性、端口是否开放

有没有批量检测的方法?有的.我们用nc就可以快速检测端口的开放性. nc检测端口的用法 nc -z -w 10  -u%IP% %PORT% -z表示检测或者扫描端口-w表示超时时间-u表示使用UDP协议,此参数为空,则为tcp协议 例如: [@s136.ipcpu.com ~]# nc -z -w 10 -u 8.8.8.8 53 Connection to 8.8.8.8 53 port [udp/domain] succeeded! [@s136.ipcpu.com ~]# nc -z -