linux下利用badblocks程序在线修复坏道

转载于:http://hi.baidu.com/liheng_2009/item/a1fbb3f62eacb2d66225d26a

btw
在修复前后,利用smartctl  对磁盘进行long测试的2次结果如下:
web:~# smartctl -l selftest /dev/sdb
smartctl version 5.38 [x86_64-unknown-linux-gnu] Copyright (C) 2002-8 Bruce Allen
Home page is http://smartmontools.sourceforge.net/

=== START OF READ SMART DATA SECTION ===
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%      8308         -
# 2  Short offline       Completed: read failure       10%      8292         234908935

#2是修复前的测试 在234908935处出现读错误。
#1是修复后的情况没有错误

上面是对硬盘的坏块逐块进行修复的方式
当然可以写一个脚本把这些命令联起来, badblocks 也可以连续覆盖修复坏块 ,2个块号的参数, 后面一个是要覆盖的开始块数,前面一个是结束块数.

用smartctl对硬盘进行测试的方法如下
在线快速测试: 大约2分钟
smartctl -t short /dev/sdb
在线长测试: (1T大约4小时)
smartctl -t long /dev/sdb
此外还有几种测试模式:offline, short, long, conveyance, select,M-N, pending,N, afterselect,[on|off], scttempint,N[,p]

终止正在进行的测试
smartctl -X /dev/sdb

在测试结束后获取测试结果:
smatrctl -l selftest /dev/sdb




备份坏硬盘的整盘数据:
如果用dd来备份坏硬盘的整盘数据, 千万记住要增加 conv=noerror,sync 参数, noerror是遇到读错误继续, sync是用0填充错误的数据, 否则会造成数据错位, 硬盘映像就毁了。
最好是用dd_rescue来做硬盘的dump, 能显示当前的dump速度和平均速度。据说它还可以随时终止, 并再次继续,可以反向的做数据dump, 从磁盘的尾部向前dump。
在debian下,安装ddrescue软件包, 就可以执行dd_rescue了:
dd_rescue  /dev/sdb /home/sdb.dump

你可能感兴趣的:(dd,badblocks, ,smatrctl)