Linux检测硬盘坏道

yum install smartmontools

使用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 检查该设备是否已经打开SMART技术。 smartctl -s on 如果没有打开SMART技术,使用该命令打开SMART技术。 smartctl -t short 后台检测硬盘,消耗时间短; smartctl -t long 后台检测硬盘,消耗时间长; smartctl -C -t short 前台检测硬盘,消耗时间短; smartctl -C -t long 前台检测硬盘,消耗时间长。其实就是利用硬盘SMART的自检程序。 smartctl -X 中断后台检测硬盘。 smartctl -l selftest 显示硬盘检测日志。 smartctl -l error 显示硬盘错误汇总。
首先通过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 test@test123123.com //监控磁盘的健康状态,当SMART中报告PASSED的时候不理睬。一旦出现Failure,立刻用邮件通知用户指定的邮箱
/dev/sda -a -m admin@example.com,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相关的配置可参见:
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硬盘的自动省电功能。

shell入门的拦路虎:syntax error: unexpected end of file

之所以称作拦路虎,是因为这个问题困扰了一天。

决定开始学习shell,在windows上用虚拟机装好redhat linux,完成网络配置,能与我的windows交互了。其它也不需要配。

开始学习bash,每次测试代码都在windows下写好,然后传到linux上执行。

在学习到if 等流程控制的语法的时候,我遇见了第一个难题写的 if 的测试总是不正确:“if.sh: line 11: syntax error: unexpected end of file ”。

—————————————————————————-

这个问题解决方案如下:学shell还是用vi或vim吧!

—————————————————————————-

 

syntax error: unexpected end of file问题的解决办法

dos文件转换成 unix 文件格式
dos 格式 文件 传输到 unix 系统时 , 会在每行的结尾多一个 ^M , 当然也有可能看不到 , 但是在 vi 的时候 , 会在下面显示此文件的格式 , 比如   “dos.txt” [dos] 120L, 2532C 字样 , 表示是一个 [dos] 格式文件 , 如果是 MAC 系统的 , 会显示 [MAC] , 因为文件格式的原因有时会导致我们的 unix 程序 , 或者 shell 程序出现错误 , 那么需要把这些 dos 文件格式转换成 unix 格式 , 方法是
     vi   dos.txt          
     :set fileformat=unix 
     :w    

这样文件就转换成 unix 格式 文件了 ,一般在 windows 机器上编写好了文件传到 unix 下就可能会出现这样的情况 , 而一般我们使用ftp 命令, 常常会加上 bin 参数表示二进制传输, 可是试一下不加 bin 参数 , 可能传到 unix 下就是 unix 格式

    最后解决方法是用了UltraEdit软件,在文件菜单下有转换选择DOS转Unix,错误就解决了。

2003的备份

如果是2003的话
在开始 运行中输入 ntbackup
或者在开始-程序-附件-系统工具-备份 中运行备份程序
备份有几种类型 分别是
1常规(正常)备份:这种备份方式将备份所有选定的文件,并将其标记为已备份状态.常规备份时,用户仅需要备份文件的最近副本就可以用于恢复所有的文件.
2增量备份:这种备份方式只备份那些被标识为:”未备份”的文件,通常用于新建立的文件或上次增量备份后被修改的文件,也可能是被修改过但只做过差异备份、副本备份和每日备份的文件。增量备份完成后会将文件标记为已备份;即备份标记将被清除。如果用户将常规备份与增量备份结合起来使用,则需要最后一次常规备份集合和所有的增量备份集合来恢复数据。增量备份每次只会备份过去没有备份过的内容,所以备份速度很快,但恢复时则比较麻烦。

如果以每周为一个备份单元,可以在周一做一次常规备份,然后每天做一次增量备份。周一常规备份会备份所有文件,而周二至周五如果当天产生了新的文件或者修改了现有文件,增量备份会备份这些新增的文件和修改过的文件。如果从上一次备份到现在没有产生变化,那么增量备份将不会备份任何数据。

3差异备份:与增量备份一样,这种备份方式将备份那些标记为“未备份”的文件。但差异备份不将文件标记为已备份。而是保持备份标记的原由状态,如果用户结合使用常规备份和差异备份,那么在数据恢复时需要最后一次常规备份集合和最后一次差异备份集合来恢复数据。

如果以每周为一个备份单元,可以在周一做一次常规备份,然后每天做一次差异备份。周一常规备份会备份所有文件,而周二至周五差异备份会备份从周一常规备份湖这些新增的文件和修改过的文件,也就是如果周三至周五每天都有数据变化,那么每天的差异备份都包含前一天的差异备份内容。

说简单点,增量备份就是只备份没有备份过的东西.而差异备份会包含前一次差异备份的内容