linux 扫坏轨工具,linux下利用badblocks程序在线修复坏道

新的硬盘修复方法,请看这个文章:

http://anheng.com/news/html/net_admin_blog/hdparm_repair_hd_bad_blocks.html

现在的硬盘,在内部会有一保留区域,来替换出现坏块的扇区,这对于磁盘外的系统来说是透明的,

如果已经存在了坏道,硬盘会在写入的时候将它替换到别的位置, 注意, 只有在写入的时候,才进行重定位。

我們完全不必要使用上层的文件系统的坏道表功能, 只要对坏块位置进行写入,就可以修复了。

使用badblocks 可以查出坏块,然后badblocks本是具有写测试功能,我們只需要用badblocks就可以了,

因为不用向上层的文件系统提供坏道表, 所以我們在扫描坏道时,不用设置块大小参数(-b),

首先扫描坏道

badblocks -b 4096 -o /root/sdb.bad /etc/sdb

经过慢长的时间,我們得到了一个文件/root/sdb.bad :

16435904

sdb 有1个坏块

先用dd尽量备份坏块

dd if=/dev/sdb bs=4096 skip=16435904 of=/tmp/15435904.dat count=1

如果显示读取字节数是0就多试几次, 不行就可能丢失此块数据, 倒是不用担心,一般不会有太大问题.

用badblocks的写测试功能,对这些坏块进行重写(注意! -w写测试会覆盖数据):

badblocks -w -f /dev/sdb5 16435904 16435904

如果前面的操作有成功的备份/tmp/15435904.dat, 就把它写回:

dd if=/tmp/15435904.dat of=/dev/sdb seek=15435904 bs=4096 count=1

其实我們不需要等待badblocks扫描完成, 就可以进行修复。

badblocks是对块设备进行处理, 所以可以实现对挂载中的系统进行处理。

数据比硬盘值钱, 这只可以作为临时措施,出现坏道, 还是应该换硬盘,现在硬盘不贵。

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

在debian的新发行版中, 已经没有dd_rescue  换成了myrescue  用法一样

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值