下载中心 | 网站地图 | 站内搜索 | 加入收藏

安恒公司 / 技术文章 / 安恒公司网管员手记 / linux下利用badblocks程序在线修复坏道

2008-12-26 刘世伟  阅:    下页:
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  用法一样

下页:   

相关文章
linux下使用ssd - 11-03-10 - 阅读: 213815
关于EtherScope II系列网络通Linux系统的几个常见问题(ES2-LAN,ES2-WLAN,ES2-PRO,ES2-LAN-SX/I,ES2-PRO-SX - 10-02-25 - 阅读: 172122
在linux下用bt协议修复远程的文件 - 09-03-13 - 阅读: 137417
Hp 激光打印机 P1008在linux下的驱动 - 08-01-16 - 阅读: 204246
linux下的视频设备的复用 - 07-12-21 - 阅读: 127748
多款设备采用Qtopia软件,奇趣科技统领VoIP设备Linux开发平台 - 07-12-17 - 阅读: 192558
debian下的无盘linux系统安装要点 - 07-12-09 - 阅读: 171479
linux下的后门检查程序rkhunter和杀毒程序clamav - 07-04-22 - 阅读: 249574
linux下读写ntfs分区中文编码问题 - 07-03-11 - 阅读: 183623
linux下的DV磁带视频采集和dvd刻录 - 07-02-13 - 阅读: 192861
linux内核虚拟机 kvm - 07-01-05 - 阅读: 251943
linux下raid5磁盘阵列实施 - 06-03-13 - 阅读: 245293
linux在安恒公司的应用 ---安恒网管员手记 - 06-01-16 - 阅读: 294477
打印机共享器跟linux的连接 --安恒网管员手记 - 05-04-20 - 阅读: 277854
Tcpdump命令的使用与示例——linux下的网络分析 - 05-04-08 - 阅读: 412064
Linux下的网络协议分析工具-tcpdump快速入门手册 - 05-04-07 - 阅读: 349263
e680i手机嵌入式linux 研究 --安恒网管员手记 - 05-03-13 - 阅读: 230255
linux下vcd刻录 --安恒网管员手记 - 04-11-06 - 阅读: 323984
安恒网管员手记:linux服务器文件备份 - 04-10-29 - 阅读: 247352
安恒网管员手记:用php在linux下连接mssql2000 - 04-08-21 - 阅读: 205018

Email给朋友 打印本文
版权所有·安恒公司 Copyright © 2004   tcpdump.anheng.com.cn   All Rights Reserved    
北京市海淀区首体南路9号 主语国际商务中心4号楼8层 (邮编100048) 电话:010-88018877