数据恢复是一个比较复杂的工作,需要实际操练和借鉴别人的经验,在这里我先开个头,分享自己的一些粗浅经验。
碰到丢数据的硬盘,首先要求用户提供基本信息。根据这些信息对症下药,这样才能更快更好的恢复数据,一般说来,要求的信息应该包含下面的信息:
1。数据怎么丢失的?(删除/格式化/删除分区/重建分区/分区类型转换/分区大小调整合并/分区表破坏/ghost失误)等,还要问问破坏后写入了多少数据了,这样能初步判断是否有救。
2。数据丢失的分区类型,分区的使用情况。一般说来,只有分区表破坏/ntfs删除/ntfs格式化/FAT32格式化成NTFS等少部分情况能完全恢复,其它情况大多不能做到完全恢复。
3。文件的删除方式只对FAT32有影响。因为FAT32分区如果直接点中文件删除,系统会把文件开始簇号的高16字节置0,这样用软件找到这些文件后恢复出来,很多时候文劲头都不正确,就是因为开始簇号不正确。这种情况需要手工尝试组合开始簇号恢复了,要么用按文件内容恢复,只是这样就没有文件名。
4。分区表问题。一般分区表出问题的情况是比较容易恢复的。平时多留心观察对重建分区表有很大帮助。
随心所写,以后再补充。
1.一个分区表的问题
根据63扇区的信息,计算出下一个分区的位置,判断出2个分区都是主分区.如果能熟练编辑分区表的话,修改0扇区就应该能完全恢复.但我还是建议用户不要乱写分区表.
63(NTFS)扇区得出的扇区数目是10239999,这样下一个分区应该大约在63+10239999,63+10239999+1,63+10239999+63,63+10239999+63+1这4个位置上,分别读出看看参数是否正确。其中,如果下一个是主分区,那应该在63+10239999或63+10239999+1上,如果下一个是扩展分区,应该在63+10239999+63或63+10239999+63+1上(因为中间多了个虚拟分区表63个扇区)
一般正常分区的开始(dbr)里面的每扇区字节数是512
2. 一个快速计算分区的办法
有次碰到一个1T的raid5阵列的分区表坏了,里面5个200G的NTFS分区。客户用分区表重建工具进行到10%就死。
根据NTFS分区的特征,DBR备份放在分区的最后一个扇区。这样如果搜索到最后一个分区的DBR备份,就能轻易计算出前面分区的准确位置,而最后一个NTFS分区的DBR备份一般放在物理扇区的末尾。
在物理硬盘(阵列)的末尾10000内发现一个55AA标志,具体位置忘记了,此扇区标志成 A 。
根据这个DBR备份扇区 A 内的信息,得到这个NTFS分区的扇区总数 B . 这样就能计算出最后一个分区的开始扇区 C=A-B . 这样就能推出倒数第2个分区的DBR备份的位置 D=C-64(扩展分区) 或 D=C-1(主分区). 到此又可以倒推出前面分区来.
一般分区表问题都可以用工具扫描自动重建.只是这样有时候效率不高,很常见的分区表问题是硬盘前100扇区内没有任何有用的信息,这样就要全盘扫描很费时间. 如果平时能多留意分区表的一些特征,就能用最短时间恢复这类问题
3. 一个U盘的例子
128M的U盘,前面一个90多M的FAT16分区,剩余的是加密区。用户重装系统时,不小心删除了前面的FAT16分区,然后又重建了一个FAT16分区。
我让用户做成镜像文件后分析,发现分区标指向第一个分区是63扇区,分区大小为87M,在磁盘管理里面显示这个U盘也是87M。我用软件把里面的数据导出来,发现好几个文件存放的位置大于这个分区的容量,就再次察看前63扇区。发现在32扇区有个DBR标志,接下来的FAT很明显是正常的。手工编辑MBR,修改了分区表,使之指向32扇区,大小也改成128M,结果用浏览器就能访问里面的数据。安全起见,我让用户把里面的数据备份后,重新分区和重新调整加密区。
这个例子让我觉得操作系统认U盘和硬盘是有一定区别的。似乎操作系统认一个U盘大小时是根据MBR里面的信息的,后来我试验,把这个U盘MBR里面分区大小改成2G,在磁盘管理里面看到的U盘也是2G。
4.一个文件删除的例子.
在qq里碰到一个朋友说media play删除一个文件,DataExplore找到了,只是文件长度是0,我看看开始簇号和开始扇区号,似乎是正确的,就让他在属性里改这个文件的长度,大于原来实际的文件长度,导出后居然能播放.他说别的软件没找到我想可能是文件长度为0不显示吧.
奇怪的是,为什么文件长度会变成0了.
5.一个word文件恢复的经验。
一个U盘,提示格式化。我得到镜像文件后看了看,里面的数据已经很乱了。分析后能恢复大部分word文件,但是有几个文件打不开(文件头都不对,怀疑数据已经写到别的地方去了)。只能用关键字搜索的方法。在文件名中取出几个比较特别的汉子比如揭牌仪式 ,以unicode的方式搜索,查到几个纪录,发现居然这些关键字跑到别的文件去了。用WORD修复工具修复一下,可以看到里面的文本,正是用户要的内容。一般说来,WORD文件是用UNICOUDE方式编码的,很多公司的WORD文件标题在文件内容中都有,所以用关键字方法来搜索,应该能恢复的,只是比较花时间。这次经历是用DataExplore软件恢复的.
用别的软件恢复方法: 首先可以用Finaldata,easyrecory等找到文件,一般大部分能打开,只有少数打不开。根据打不开的文件名,挑出特别的关键字,用winhex来搜索,注意要以UNICODE方式编码哦,找到这些关键字所在的扇区(比如33222扇区),就从该扇区前面的若干扇区(自己手工察看调节,因为关键字在文件内容的中间,不是开始)比如33200扇区开始复制出若干连续扇区成文件,要保证文件内容都复制出来,最好存放成DOC扩展名。再用WORD文件修复工具(比如WordRepaire/DocRepaire)来修复保存的文件,就能看到里面的文本了。若这些修复工具要求文件要有文件头,可以自己手工加上文件头。
忘了说,这种情况和不连续存放的情况很类似。如果碰到不连续存放的word,可以用这种方法试试看。
6. 一个FAT32的分区
一个做数据恢复的朋友说160G硬盘,4个分区,C,D各10G,被破坏后,C,E,F都完全恢复,就是D区,怎么都找不到。我帮他看了下,用脚本方式搜索D区附近的区域,居然都没有发现55AA或者FAT的标志,看来是不能完全恢复了。用我的软件,以硬盘的方式分析这个硬盘的10-20G区域,10多分钟就看到里面的目录了。后来他还是用别的工具恢复的,花了6钟头,因为他把我的软件的注册码丢了也没和我说~~~~~
象这种FAT32分区,不能重建,没有DBR,没有FAT的,只能靠里面残留的文件目录信息,推算出这个分区的参数。这是不可能用手工方式恢复的。需要软件自动分析大量的目录计算出来。各种不同的软件,恢复的速度和效果不同。要想少花时间来恢复数据,就要学会计算分区的范围。让软件分析的时候,只分析你要的数据所在的范围,这样就能省很多时间。
来说说FAT32提示为格式化的情况。
FAT32分区,在提示为格式化的时候,千万不要格式化,不然有些文件无法恢复。提示格式化的原因很多的,常见的是1.DBR坏了。可以用WINHEX之类的磁盘编辑工具,来看看这个分区的第6个扇区(这是DBR备份扇区),如果DBR备份正常,可以用DBR备份替换。2.FAT或根目录坏,这基本上手工方法不能恢复。一般就按连续存放的方式恢复这些文件。须用软件来恢复。如果FAT1/FAT2部分正确,可以让软件按FAT来读出里面的文件。
7.一个GHOST的恢复
今天一个mm把C盘GHOST到E去了,要恢复E盘的数据,主要是WORD文档.ghost前后都是FAT32分区.我让她用DataExplore在专业模式下以硬盘方式加载这个分区,在分析前,配置里面勾上搜索DOC文件,分析后,得到2个FAT32分区,在第2个FAT32分区里面找到她要的文档.恢复了一些,也碰到能修复但是打不开的文档.因为该文档不连续存放的原因.具体的恢复步骤是:运行DataExplore1.91,切换到专业模式,选硬盘,下一步,驱动器里填入这个分区的盘符 E: ,按完成.工具条上有个配置按钮,点出来后勾上搜索DOC文件,按确定.点工具条上的分析按钮,在弹出的窗口中按确定.分析后,在文件夹栏中出现2个FAT32节点,第2个FAT32节点是ghost前的目录.文档恢复了一部分,mm说不会被炒鱿鱼了~~~
至于为什么要勾上搜索DOC文件,为什么出现了2个FAT32节点,我在后面的帖子解析.
8.GHOST后的恢复方法.
很多人认为GHOST后无法恢复,这只是不能恢复覆盖掉的,没有覆盖的是可以恢复的.GHOST的情况分2种.
1.GHOST后只剩下一个分区,其他分区都丢失.这种情况下,后面的其他分区基本上100%恢复.第一个分区要看情况恢复,恢复原理看2.
2.分区对分区.如果原来的数据比ghost后的多,那还是有部分可以恢复.NTFS分区可能无法恢复出文件名.FAT32分区可以恢复部分文件名.因为一般分区大小不同的FAT32分区,根据文件目录计算出来的分区参数不一样,这样就可以区分出GHOST前后的文件目录.一般情况下是可以得到2个FAT32分区的,第2个FAT32分区里面的文件就是原来的文件目录.如果GHOST前后的分区类型不一样,那需要让软件按原来的分区格式来分析才可以恢复.
*****强烈要说明一点是,GHOST后的恢复,一定要做按文件内容来恢复,因为文件目录名称和文件内容是分开存放的,可能文件目录名称部分被覆盖了,那就找不到该文件,但是文件内容部分不一定覆盖到,按文件内容来恢复是可以多恢复出来一部分文件的.*****
9. 一个RAID0的案例
先说说RAID0的读写方式:RAID0就是把2个硬盘串起来,让系统看到的硬盘/分区的容量是2块硬盘的容量和,并且提高读写速度。一般阵列可以从单个硬盘的物理0扇区开始,也可以重物理硬盘的某个扇区开始,在本帖中将阵列的位置标为S1,S2。阵列是以块为单位进行读写的,一般每个块是64K,本帖中把块标志为B。块的意思是在每个硬盘上的存取单位,比如系统要写256K数据到阵列中,阵列把0-64K数据写到第一个硬盘,64-128K写到第二个硬盘,128-192K写到第一个硬盘,192-256K写到第二个硬盘。这样在硬盘上数据就是“条带“型的。决定一个RAID0的恢复,最重要的是3个参数,即阵列的在物理硬盘的起始位置,和块的大小,S1,S2,B。
一个朋友接到2个160G的串口硬盘,组成320G的阵列,其中一个硬盘摔了一下,阵列卡认不到这个硬盘了。阵列分7个区,都是NTFS,分别是10,10,60,60,60,60,60G。只要第3和第6个分区数据,视频文件。这位朋友用一些阵列恢复软件进行参数检查,没有发现明显的有效参数,遂找我看看。我只有一个80G硬盘(惨啊~)只能复制出这个阵列的前3个分区。80G的硬盘我创建2个均分的分区,然后把这2个阵列硬盘的前40G分别复制到这个80G硬盘的2个分区上,带回家恢复。下面说的阵列硬盘,其实已经对应到我镜像的分区,特此说明。
经过一个晚上的分析后,晕倒了。发现其中一个阵列硬盘肯定数据有问题。因为我根据第一个分区里面的MFT手工计算出来的文件存放位置的附近,没有找到匹配的文件,故断定一个硬盘部分数据乱了。
拼凑出来的S1=0,S2=1000,B=64K,用DataExplore能读出第一个和第2个分区,里面过半的文件能打开。但是在做第3个分区时,就不正确了。里面的视频文件无法定位到文件头。所以怀疑S1,S2应该有问题。就比对一下第3个分区的位置,发现在第一个物理硬盘上A扇区发现一个NTFS分区的DBR备份(是第2个分区的),在第二个物理硬盘的B扇区发现一个NTFS分区的DBR(是第3个分区的),我根据DBR里面的参数,知道DBR属于哪些分区。找到的DBR发现B-A=64。这正好是一个扩展分区间的间隔。遂怀疑这2个硬盘的阵列开始扇区是相同的。将S1=0,S2=0,B=64K,用DataExplore设置好了阵列后,用虚拟卷里一个个分区的推算出这3个分区的位置(具体的看2。一个快速计算分区方法),可以看到第三个分区,以NTFS文件系统虚拟加载第3个分区,发现里面的文件目录完好,导出的视频都可以播放,兴奋ing...朋友的招牌保住了^^
计算文件/分区的绝对物理位置时候,需要将该位置除以2,然后在2个阵列硬盘上分别寻找。因为数据是被平分到这2个阵列硬盘上的。
本案例花了我一天的时间,究其原因,是经验不足,以为先恢复出第一个分区的数据就也能恢复全部分区,没想到其中一个硬盘的数据乱了,在乱的数据上计算出来的参数,无法恢复出下一个分区。
不知道各位有没有碰到这样的情况,就是2个硬盘组成的阵列,在第一个分区和后面其他分区的阵列参数不相同?
后来我试验了一个分区,花了几个钟头,把一个60G的NTFS分区复制到另外一个硬盘上的NTFS分区(类型ghost),复制后重起,用浏览器就可以直接看到里面的文件.
10.一个软盘的例子
在QQ里面的数据恢复群中有人说一个软盘提示要格式化,用winhex做不出来镜像,提示插入磁盘,晕啊。
我让他用DataExplore的镜像功能,把这个软盘做成镜像文件。察看了一下,应该是在FAT1上有坏道(1扇区全是0,第3个扇区有数据),而FAT2是完好的。用DataExplore,在配置里面勾上使用第二个文件分配表,虚拟加载这个镜像文件,就可以看到里面的完整目录和所有文件了,文件能完全恢复的。
对于这些FAT1/FAT2损坏的情况。可以使用另一个FAT来替换损坏的。在这个例子中,如果用FAT2(10-18扇区)覆盖FAT1(1-9扇区),修改了镜像文件后写到另一张软盘里,浏览器应该能直接看到里面的文件的。
FAT分区的DBR里面存放了这个分区的重要参数。一般软盘是FAT12格式,里面的几个参数是: 保留扇区数1,每FAT扇区数9,FAT备份数2,根目录项数224,这样FAT1位于1-9扇区,FAT2位于9-18扇区,根目录位于19-32扇区,数据区从33扇区开始。相应公式:
FAT1 = 保留扇区数
FAT2 = 保留扇区数+每FAT扇区数
根目录 = 保留扇区数+ 2 * 每FAT扇区数
数据区 = 保留扇区数+ 2 * 每FAT扇区数 + 根目录项数/16
因为一个扇区512字节,一个目录项是32字节,所以一个扇区只能放16个目录项数。对于正常的FAT来说,FA1,FAT2都是以 0xF8 FF FF 开头的。F8表示磁盘介质。判断FAT是否正常,可以通过检查这些标志。
11. 一种恢复EXCEL文件的方法
碰到一个案例,网管在杀毒的时候,把用户的文件夹删除,原来里面的EXCEL文件基本上打不开。我帮看了一下最近修改的EXCEL文件,发现文件头也有问题,怀疑被破坏过。导出来的文件用工具修复也看不到原来的数据,故采用手工方式。因为这个文件找到了10多个相同文件名称的文件(天知道这小妹妹这么喜欢建立/删除文件),只是开始簇号和文件长度不一样,我让她找到修改日期是最近的文件,在DataExplore软件里面的列表视图,右键点中这个文件,菜单选属性,在属性窗口中把文件的开始位置改小一些,把文件的长度改大一些,按确定后,把这个文件导出来,用Excel的文件修复工具修复后,可以看到里面的数据。基本完整。我让她按显示的数据重新输入一次.
这个案例原理非常简单,就是把文件存放的实际扇区附近的连续一片扇区复制出来(我复制了1M左右,前后位置都进行了扩展,目的是保证原来文件内容所在的扇区上都能复制出来。然后用文件修复工具进行恢复。
对于那些做数据恢复的朋友,经常会碰到恢复出来的文件打不开,用修复工具也恢复不出原来的内容,这说明导出的文件里面没有原来的内容,这需要用另外的方法来进行恢复了,用手工方式计算文件的实际存贮区域,将其附近的扇区复制出来进行修复,应该就能看到里面的内容。
12. 一个修改分区表的例子,比较简单的找回一个主分区。
13.一个RAID5的案例
这个案例算得上马后炮,因为这个单子是一个朋友4月份接的,当时DataExplore软件还不支持RAID5呢,现在讲的案例是用镜像文件来做的。
RAID5相关知识:(RAID5是从RAID0扩展来的,故有些概念用RAID0示例)
块:块是阵列中对单个磁盘存取的单位。比如块大小64K,那么系统把0-63K数据写入第一个硬盘;64-127K数据写入第二个硬盘,128-255K数据写入第三个硬盘。块从0开始编号。我们观察下面的RAID0,3个磁盘:
磁盘1 磁盘2 磁盘3
0-63K 64-127K 128-191K (条带0)
191-255K 256-319K 320-383K (条带1)
384-447K 448-511K 512-575K (条带2)
条带:在RAID0中的平行块中组成一组条带,比如上面的条带0-条带2,是不是很简单啊?再看下面的块(1,2,3,...)组成的条带:
1 2 3 4 (条带0)
5 6 7 8 (条带1)
9 10 11 12 (条带2)
13 14 15 16 (条带3)
冗余(奇偶校验)块:RAID5中在同一个条带中用一个块来存放冗余信息,冗余信息示其他块的"异或"值,这样在同一条带中就只有(n-1)个块是实际的数据,所以RAID5中阵列容量是(n-1)块单盘容量。看看下面的一个条带,其中用1表示数据,用0表示冗余:
1 1 1 0
旋转: RAID5中条带中的冗余块并不是固定写在同一个硬盘上的(这样会造成性能低下),它用一种"旋转"的方式来循环存放冗余块,这样每个硬盘都有机会存放冗余块避免了IO瓶颈。根据循环的方式,我们称为"左循环"和"右循环"。观察下面的例子(0是冗余块)
1 2 3 0 (左循环)
4 5 0 6
7 0 8 9
0 10 11 12
--------------------
0 1 2 3 (右循环)
4 0 5 6
7 8 0 9
10 11 12 0
同步/异步: 在同一条带中,块的存放顺序也不一样,我们称为同步/异步。
4月份一个朋友接到3块SCSI盘组成的RAID5阵列,每个盘34G。因为坏了一个盘,卡也不认出阵列,故送修。朋友当时用别的阵列软件做了好些天,均不成功,单子让别人给做了。5月份拿到这2个磁盘的镜像文件,用DataExplore1.93的阵列功能,在输入了这2个镜像文件和一个X(表示缺盘)后,用自动检测参数,很快就看到里面的4个分区,加载这个分区后,直接看到里面的全部完整的目录,文件导出均正确。
这个阵列是右旋转+同步的,块大小为128K。朋友用的软件是老外的,只能设置参数,做镜像到别的磁盘上,故花了很多时间也没有搞定。我察看了一下,发现我软件里面的磁盘顺序和块大小和那个软件一样,那就是那个软件的问题了。另外在另一个朋友那边得知该软件不支持右旋转/同步。
具体的案例和恢复过程,可以参考DataExplore软件里面的联机帮助,可以到我主页下载1.93的版本,在压缩包里面的DataExplor.chm文件就是联机帮助,里面的"阵列设置"。
DataExplore软件刚刚加入RAID5的,希望朋友们帮忙看看。谢谢咯~~~
14.一个坏道盘的例子。
QQ上一个朋友说硬盘有坏道,系统挂上去后很慢,分区表破坏,c盘打不开。软件恢复读到1.5%就不动了。我让他到dos下用ddcopy看看,他说不行(不知道他试过了没有?)。那我只好尝试读取硬盘中间,看看是否能读出来。原来分区是这样的C(NTFS,10G),D(FAT32,5G),E(FAT32,5G)。
我告诉他用DataExplore,专业模式-〉硬盘,下一步,驱动器填这个硬盘(HD1),开始扇区填了19531250,数目填了9765625,按完成,分析后,出现了完整的FAT32分区,加载这个分区后,里面的目录都在。
参数计算是这样的。1G=1*1000*1000*1000字节,每个扇区512字节,因为C大约10G,所以D的开始扇区是大约在物理扇区10G的位置,即19531250=10*1000*1000*1000/512。因为D是5G,所以分析5G就可以了。9765625=5*1000*1000*1000/512。
可能有些人说1G=1*1024*1024*1024。这也对,但是如果这样算,可能D的位置就超过原来实际的位置,我们采取1000的单位,这样计算出来的值小于实际的值,确保能扫描到D的开始扇区。
这个硬盘应该是普通的坏道。我觉得ddcopy应该能搞定的,只是不知道他是否使用正确。
做数据恢复,当碰到坏道时候,可以尝试读取硬盘的不同位置,应该有部分位置是可以读取的,把能读的先做出镜像再修。
15. 一个NTFS修复DBR的例子
一个移动硬盘,40G,里面只有一个NTFS分区,在装系统的时候不小心删除了分区。在用DataExplore扫描硬盘后,出现一个A扇区发现NTFS分区,具体的扇区号忘记了,大约在硬盘的最后面(应该是NTFS分区的DBR备份)。这朋友说把目录导出来没有这么多的空间存放,我就帮他尝试修改分区表。
得到NTFS的DBR备份后,我让他把硬盘的前100扇区和A扇区做成文件给我。令我惊讶的是,这个DBR里面的NTFS分区扇区数目也是A.这说明这个分区的开始扇区是0而不是常见的63扇区。在抱着试试看的疑问,我指导他用A扇区复制到0扇区上,重新插拔移动硬盘后,系统能访问里面的目录了。
这个案例我第一次见到。一般U盘经常出现FAT16分区的开始扇区是0扇区,但是NTFS分区一般是63扇区。这个移动硬盘没有分区表,只有一个40G的NTFS分区就在物理0扇区上,比较少见。
一般WINDOWS删除分区后,可能会把NTFS分区的DBR也清0了,我们可以通过复制DBR备份来恢复,并且修改一下分区表。