首页 > 代码库 > linux工具类之硬盘检测

linux工具类之硬盘检测

软raid
mount /dev/md0 /opt                
[root@localhost root]# cp /usr/share/doc/raidtools-1.00.3/raid*.conf.* /etc
[root@localhost root]# ls -l /etc/ |grep raid
[root@localhost root]# vi /etc/raid0.conf.sample  
mkraid /dev/md0
mkfs.ext3 /dev/md0
lsraid -A -a /dev/md0
[root@localhost root]# more /proc/mdstat
不使用的时候请直接删除/etc/raidtab文件. # rm /etc/raidtab  

有时想知道服务器上有几块磁盘,如果没有做raid,则可以简单使用fdisk -l就可以看到。但是做了raid呢,这样就看不出来了。那么如何查看服务器上做了raid?
windows:RAID卡厂商都有RAID安装程序与驱动的。在配置完RAID后,进WINDOWS系统,下载相应的RAID安装程序并安装。比如 LSI 1064E 在官网上就可以下载到。 或者HD tune可以查看基本的raid信息
linux:分软与硬
软件raid:只能通过Linux系统本身来查看cat /proc/mdstat,可以看到raid级别,状态等信息。
硬件raid:最佳的办法是通过已安装的raid厂商的管理工具来查看,有cmdline,也有图形界面。如Adaptec公司的硬件卡就可以通过下面的命令进行查看:
# /usr/dpt/raidutil -L all可以看到非常详细的信息。
当然更多情况是没有安装相应的管理工具,只能依靠Linux本身,一般有两种方式:
# dmesg |grep -i raid
# cat /proc/scsi/scsi
显示的信息差不多,raid的厂商,型号,级别,但无法查看各块硬盘的信息。

[root@coreserv log]# cat /proc/scsi/scsi
Attached devices:
Host: scsi6 Channel: 02 Id: 00 Lun: 00
  Vendor: IBM      Model: ServeRAID M1015  Rev: 2.13
  Type:   Direct-Access                    ANSI  SCSI revision: 05
Host: scsi7 Channel: 00 Id: 00 Lun: 00
  Vendor: IBM SATA Model:  DEVICE 81Y3672  Rev: SA81
  Type:   CD-ROM                           ANSI  SCSI revision: 00

# fdisk -l
Disk /dev/sda: 145.9 GB, 145999527936 bytes
255 heads, 63 sectors/track, 17750 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          13      104391   83  Linux
/dev/sda2              14       17750   142472452+  8e  Linux LVM
# cat /proc/scsi/scsi
Attached devices:
Host: scsi0 Channel: 00 Id: 00 Lun: 00
  Vendor: SEAGATE  Model: ST3146356SS      Rev: HS09
  Type:   Direct-Access                    ANSI SCSI revision: 05
Host: scsi0 Channel: 00 Id: 01 Lun: 00
  Vendor: SEAGATE  Model: ST3146356SS      Rev: HS09
  Type:   Direct-Access                    ANSI SCSI revision: 05
Host: scsi0 Channel: 01 Id: 00 Lun: 00
  Vendor: Dell     Model: VIRTUAL DISK     Rev: 1028
  Type:   Direct-Access                    ANSI SCSI revision: 05
通过以上信息可以看出,该服务器有两块磁盘。品牌是希捷的,磁盘代号为 ST3146356SS,如果你熟悉细节磁盘的代号命名规则,你会轻易判定该磁盘大小为146G 。再根据fdisk 得出的结果可以判定,该服务器是拿两块146G的硬盘做的raid1.

不同的文件系统(xfs,reiserfs,ext3)都有自己的检测和修复工具。检测之前可以先使用dmesg命令查看有没有硬件I/O故障的日志,如果有,先用fsck看看是不是文件系统有问题,如果不是则可以使用下面介绍硬盘检测和优化方法来修复它。 grep "error" /va/log/messages*

[root@coreserv log]# rpm -qf /usr/sbin/smartctl
smartmontools-5.42-2.el6.x86_64
[root@coreserv log]# rpm -ql smartmontools
/etc/rc.d/init.d/smartd
/etc/smartd.conf
/etc/sysconfig/smartmontools
/usr/sbin/smartctl
/usr/sbin/smartd
/usr/sbin/update-smart-drivedb

使用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体系使得硬盘能监视并汇报自己的运行状况.它的一个重要特性是能够预测失败,使得系统管理员能避免数据丢失。

使用badblocks检测硬盘坏块
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

linux工具类之硬盘检测