May 19

[原]使用dd命令协助拯救0磁道损坏的硬盘 晴

linuxing , 11:16 , 基础知识 » 故障处理 , 评论(0) , 引用(0) , 阅读(25230) , Via 本站原创 | |
    dd 是Linux下面常见的一个按块大小操作数据拷贝的命令,在拷贝的同时还可以进行指定的转换工作。不过,我今天要说明的不是其转换的用法,而是用它来协助拯救0磁道损坏的硬盘。
    大概的情况是这样的:有块硬盘,分了两个分区,分区一是系统分区,安装了Windows XP;分区二是数据分区,存放了大量的数据文件。几天前,突然报硬盘0磁道损坏,MBR不能读取,由于MBR损坏,导致分区表一同丢失,后使用坏道检测、分区表修复等工具尝试修复,均不成功。
    解决过程:分区一基本是恢复无望了(坏道太多),而且数据不重要。考虑到硬盘存放数据的结构,分区二的数据应该还是正常的,但MBR不能正常读写,为此,我利用dd,把其上的数据拷贝到另一个硬盘上,然后通过修复分区表,最后成功恢复了分区二的所有数据。

一、原理
硬盘的逻辑结构可见: 这里
简单来说,就是MBR是负责管理分区信息的,但实际数据,如文件名、目录信息、文件内容等都是放在分区地址后的实际磁盘扇区下面的。这就是分区表损坏,修复后数据不会丢失的原因。
这次,我的分区二是找到了,但写不进MBR里面,所以必须借助另一个硬盘。

二、解决过程
1、坏硬盘的情况
在修复前,需要确认该硬盘到底坏在那里。既然,BIOS里面可以识别到它,也就是硬盘主板是正常的。
※ 修复的前提:为保证不会损坏数据,在修复时,务必需要小心,不要覆盖实际数据,对原实际数据不要进行任何写操作。

使用深山红叶工具光盘启动,运行PQMagic工具,报如下的错误:
点击在新窗口中浏览此图片
点击在新窗口中浏览此图片
忽略后,看到下面的硬盘信息,由于无法准确判断原分区的大小,为保证不会影响实际数据,不能采取重建分区的方式。

然后,我尝试运行“Partition Table Doctor”工具,提示无法读取MBR:
点击在新窗口中浏览此图片
进入后,点击“重建分区”,进入“交互模式”查找以前的分区:
点击在新窗口中浏览此图片
点击在新窗口中浏览此图片
可以找到分区二,但无法保存MBR表信息:
点击在新窗口中浏览此图片
至此,常规的方法基本无法把分区二的数据拿出来。

2、修复过程
考虑到分区二已经可以找到,并且实际数据也应该是正常的。(因为坏的仅是硬盘的前面一部分),所以,我想到了一个解决办法。
引用
a、找一个比这个坏硬盘更大的硬盘A,然后用dd跳开坏的扇区,并拷贝剩余的数据到好的硬盘B上;
b、使用Partition Table Doctor修复硬盘B上的分区表。

把两个硬盘都接到一台机器上,使用光盘启动,例如linux rescue进入光盘拯救模式,并运行:
引用
# dd if=/dev/hdc of=/dev/hda bs=1024 skip=80480 seek=80480
15621042424+0 records in
15621042424+0 records out
159959474176 bytes (160GB) copied,67808.1 seconds,2.4MB/s

其中,hdc是坏硬盘A,hda是好硬盘B,并跳过80480个块,每个块1K。这是为安全,我仅按每个块1K的大小来拷贝,所以速度非常慢。如果您想提高速度,可以加大每个块的大小,并计算跳过的块数量即可。
skip和seek分别表示跳过输入的和输出的块数量。

操作完成后,把坏硬盘A拿走,使用深山红叶上的“Partition Table Doctor”重建分区表:
点击在新窗口中浏览此图片
保存后,使用PQMagic可看到分区二已经恢复:
点击在新窗口中浏览此图片
重启后(需要重启才能刷新Windows PE的分区表信息),访问该硬盘的数据正常,工作完成。

三、其他
基于同样的原理,在某个项目中,也遇到一个盘柜,因用户误操作,导致盘柜的分区被更改为Sun OS格式。
但分区后,并没有进行格式化的工作。这时,盘柜中的实际数据一般也是没有丢失的。
所以,可以使用dd 先保存部分需要修改的数据信息:

# dd if=/dev/sdb of=/mnt/usb/databackup.dd bs=1024k count=1024

也就是备份1个GB的数据,万一出现问题,可以恢复。

然后,使用dd 删除Sun Label:

# dd if=/dev/zero of=/dev/sdb bs=512 count=1

最后,使用fdisk /dev/sdb按原来的大小重建分区表,保存后挂载,数据恢复。
Tags: ,
发表评论
表情
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
打开HTML
打开UBB
打开表情
隐藏
记住我
昵称   密码   游客无需密码
网址   电邮   [注册]