|
|
硬盘数据恢复学习心得1 b" a! i7 x/ d; v; I" A3 u
2 q+ e/ V: {/ g( K+ V/ K
硬盘的数据结构
0 m& a& `! t& H0 G0 ?; \5 m& A- q8 {: T% E
初买来一块硬盘,我们是没有办法使用的,你需要将它分区、格式化,然后再安装上操作系统才可以使用。一个完整硬盘的数据应该包括五部分:MBR,DBR,FAT,DIR区和DATA区。其中只有主引导扇区是唯一的,其它的随你的分区数的增加而增加。
( p& x+ W9 d- e1 m# q% {+ p- i, D
主引导扇区) e+ h9 [- ^) E0 Q ~
3 Z1 |) q) V% @# G% K# s* Y: q 主引导扇区位于整个硬盘的0磁道0柱面1扇区,包括硬盘主引导记录MBR(Main Boot Record)和分区表DPT(Disk Partition Table)。其中主引导记录的作用就是检查分区表是否正确以及确定哪个分区为引导分区,并在程序结束时把该分区的启动程序(也就是操作系统引导扇区)调入内存加以执行。至于分区表,很多人都知道,以80H或00H为开始标志,以55AAH为结束标志,共64字节,位于本扇区的最末端。值得一提的是,MBR是由分区程序(例如DOS 的Fdisk.exe)产生的,不同的操作系统可能这个扇区是不尽相同。如果你有这个意向也可以自己去编写一个,只要它能完成前述的任务即可,这也是为什么能实现多系统启动的原因(说句题外话:正因为这个主引导记录容易编写,所以才出现了很多的引导区病毒)。
" Z- X3 M+ A N% L. V1 V: S( {3 c& H0 o7 R+ \
操作系统引导扇区& W- r* N3 M5 l1 M- V$ g
/ K3 T( Y) {6 ?% b6 ~( ]6 u, Y OBR(OS Boot Record)即操作系统引导扇区,通常位于硬盘的0磁道1柱面1扇区(这是对于DOS来说的,对于那些以多重引导方式启动的系统则位于相应的主分区/扩展分区的第一个扇区),是操作系统可直接访问的第一个扇区,它也包括一个引导程序和一个被称为BPB(BIOS Parameter Block)的本分区参数记录表。其实每个逻辑分区都有一个OBR,其参数视分区的大小、操作系统的类别而有所不同。引导程序的主要任务是判断本分区根目录前两个文件是否为操作系统的引导文件(例如MSDOS或者起源于MSDOS的Win9x/Me的IO.SYS和MSDOS.SYS)。如是,就把第一个文件读入内存,并把控制权交予该文件。BPB参数块记录着本分区的起始扇区、结束扇区、文件存储格式、硬盘介质描述符、根目录大小、FAT个数、分配单元(Allocation Unit,以前也称之为簇)的大小等重要参数。OBR由高级格式化程序产生(例如DOS 的Format.com)。$ x3 w3 R9 H3 R+ r( B$ G
+ z1 ~7 ]4 z3 e, G' x2 |" C
文件分配表1 J( g9 x! K# x5 d3 e- y
e& N: i6 o3 t9 F1 A4 }
FAT(File Allocation Table)即文件分配表,是DOS/Win9x系统的文件寻址系统,为了数据安全起见,FAT一般做两个,第二FAT为第一FAT的备份, FAT区紧接在OBR之后,其大小由本分区的大小及文件分配单元的大小决定。关于FAT的格式历来有很多选择,Microsoft 的DOS及Windows采用我们所熟悉的FAT12、FAT16和FAT32格式,但除此以外并非没有其它格式的FAT,像Windows NT、OS/2、UNIX/Linux、Novell等都有自己的文件管理方式。1 c4 |3 s# m( {1 d' I
) v5 @3 y* A6 ?' G 目录区. f/ i8 T* K3 m! m) Z, D* A- Q
$ I" J) I' p! D# T& G
DIR是Directory即根目录区的简写,DIR紧接在第二FAT表之后,只有FAT还不能定位文件在磁盘中的位置,FAT还必须和DIR配合才能准确定位文件的位置。DIR记录着每个文件(目录)的起始单元(这是最重要的)、文件的属性等。定位文件位置时,操作系统根据DIR中的起始单元,结合FAT表就可以知道文件在磁盘的具体位置及大小了。在DIR区之后,才是真正意义上的数据存储区,即DATA区。( O- n+ z0 n$ H$ O
# v8 `; H' \: [6 x G1 V
数据区
( p1 z& H/ j" F) d$ _6 o% k, q+ \) z+ P: A% R6 C/ T2 T Y0 P) F4 C
DATA虽然占据了硬盘的绝大部分空间,但没有了前面的各部分,它对于我们来说,也只能是一些枯燥的二进制代码,没有任何意义。在这里有一点要说明的是,我们通常所说的格式化程序(指高级格式化,例如DOS下的Format程序),并没有把DATA区的数据清除,只是重写了FAT表而已,至于分区硬盘,也只是修改了MBR和OBR,绝大部分的DATA区的数据并没有被改变,这也是许多硬盘数据能够得以修复的原因。但即便如此,如MBR/OBR/FAT/DIR之一被破坏的话,也足够咱们那些所谓的DIY老鸟们忙乎半天了……需要提醒大家的是,如果你经常整理磁盘,那么你的数据区的数据可能是连续的,这样即使MBR/FAT/DIR全部坏了,我们也可以使用磁盘编辑软件(比如DOS下的DiskEdit),只要找到一个文件的起始保存位置,那么这个文件就有可能被恢复(当然了,这需要一个前提,那就是你没有覆盖这个文件……)。$ Y1 V5 [; ~9 A( G+ Q/ A
4 S1 ^5 b' ]2 `. w y; S! a g6 _+ i 硬盘分区方式
' N/ E; y4 I, a; {: z) e6 o$ y: P: z) `! T5 J
我们平时说到的分区概念,不外乎三种:主分区、扩展分区和逻辑分区。主分区是一个比较单纯的分区,通常位于硬盘的最前面一块区域中,构成逻辑C磁盘。在主分区中,不允许再建立其它逻辑磁盘。! t2 |& p; k7 b: ]
( z# K! x, Z) J: Z' \7 H 扩展分区的概念则比较复杂,也是造成分区和逻辑磁盘混淆的主要原因。由于硬盘仅仅为分区表保留了64个字节的存储空间,而每个分区的参数占据16个字节,故主引导扇区中总计可以存储4个分区的数据。操作系统只允许存储4个分区的数据,如果说逻辑磁盘就是分区,则系统最多只允许4个逻辑磁盘。对于具体的应用,4个逻辑磁盘往往不能满足实际需求。为了建立更多的逻辑磁盘供操作系统使用,系统引入了扩展分区的概念。2 L4 Y6 b2 D9 Z- a8 B: }; ~
; C4 e: q: R+ ?& w$ e0 \' x 所谓扩展分区,严格地讲它不是一个实际意义的分区,它仅仅是一个指向下一个分区的指针,这种指针结构将形成一个单向链表。这样在主引导扇区中除了主分区外,仅需要存储一个被称为扩展分区的分区数据,通过这个扩展分区的数据可以找到下一个分区(实际上也就是下一个逻辑磁盘)的起始位置,以此起始位置类推可以找到所有的分区。无论系统中建立多少个逻辑磁盘,在主引导扇区中通过一个扩展分区的参数就可以逐个找到每一个逻辑磁盘。
' R. Z0 _# h2 V8 F/ n; I
0 G/ o! Q: K6 q 需要特别注意的是,由于主分区之后的各个分区是通过一种单向链表的结构来实现链接的,因此,若单向链表发生问题,将导致逻辑磁盘的丢失。
9 S. u* O& c$ ~& B) f- I5 u8 l' J7 `5 g5 |) Q
既然要进行数据的恢复,当然数据的存储原理我们不能不提,在这之中,我们还要介绍一下数据的删除和硬盘的格式化相关问题……" p' b1 M( F: U) Y! W8 y
& L0 z( p2 G, x9 d$ Z 文件的读取
" X5 W6 x4 ~" d8 N5 o! I' F9 I! H! N, U1 Q( V$ @
操作系统从目录区中读取文件信息(包括文件名、后缀名、文件大小、修改日期和文件在数据区保存的第一个簇的簇号),我们这里假设第一个簇号是0023。
7 z8 R% ^. }% r3 W/ `
3 G0 l e: U( c" }1 R4 o 操作系统从0023簇读取相应的数据,然后再找到FAT的0023单元,如果内容是文件结束标志(FF),则表示文件结束,否则内容保存数据的下一个簇的簇号,这样重复下去直到遇到文件结束标志。8 V* K& Q: i& _# o6 O @
5 r1 |& V0 j9 Q- M/ K5 D1 P
文件的写入
5 A8 Q: f3 o; q
9 F7 z% x9 y, i h& b% N8 \% \ 当我们要保存文件时,操作系统首先在DIR区中找到空区写入文件名、大小和创建时间等相应信息,然后在Data区找到闲置空间将文件保存,并将Data区的第一个簇写入DIR区,其余的动作和上边的读取动作差不多。
- e9 r& S6 }, F4 ?, Y: W+ m
- J2 @: Y/ p. s& z' [/ ]) y, z 文件的删除9 u; I( W0 R% ]& |3 m
# H/ h( o% F1 b6 K$ I8 r Win9x的文件删除工作却是很简单的,简单到只在目录区做了一点小改动——将目录区的文件的第一个字符改成了E5就表示将改文件删除了.# `' P8 c C; Y/ H0 E$ A# ?5 F
' `6 v3 m# F: q4 @$ v7 A
硬盘数据丢失后的解决方法
: ?" J U9 _% O
* u/ L! y5 z' R: ^$ r0 ]+ J2 l伴随着科技的发展,80G、120G的硬盘在普通用户中都已经屡见不鲜了。但是,在长时间的使用硬盘过程中,我们也在承受着硬盘随时也会出错的风险,轻则硬盘的数据丢失,重则整个硬盘报废,造成不可预料的严重后果。采用什么办法,才能解决常见的硬盘数据丢失故障,成为用户十分关注的问题。
+ b: [) Y0 o) M# U& k: J6 w: A) r
( N0 T& {: h% R2 V一、硬盘的分区' z% V+ O' g$ `2 G& v @
8 c2 h C; b$ l. Z( N* S9 c/ ^
对于你手中硬盘来说,首先要做的事情就是分区了。硬盘分区是否合理直接影响到以后工作的便利性和数据的安全性。我们最常见到的分区表错误也是硬盘的最严重错误,不同错误的程度会造成不同的损失。4 q: K6 x' {( }3 Y4 _5 t. {
! G" u7 k9 ^/ @! h) @/ _0 I
如果是没有活动分区标志,则计算机无法启动。但从软驱或光驱引导系统后可对硬盘读写,可通过fdisk重置活动分区可进行修复。如果是某一分区类型错误,会造成某一分区的丢失。
0 M1 s% t1 d1 p* `" N9 b. i" ^! p2 X% f7 W6 [# M
在一般情况下完成硬盘分区之后,会形成3种形式的分区状态;即主分区、扩展分区和非DOS分区。
& O- b4 y; X4 M/ W- V+ a2 i3 ~' V* |/ y! S% Q! p/ H
在硬盘中非DOS分区(Non-DOS Partition)是一种特殊的分区形式,它是将硬盘中的一块区域单独划分出来供另一个操作系统使用,对主分区的操作系统来讲,是一块被划分出去的存储空间。只有非DOS分区内的操作系统才能管理和使用这块存储区域,非DOS分区之外的系统一般不能对该分区内的数据进行访问。# ~+ f- Y2 C! D& i \ g5 B
- H! Z8 l4 I0 h0 J7 X; g/ ^; @. _5 h
主分区则是一个比较单纯的分区,通常位于硬盘的最前面一块区域中,构成逻辑C磁盘。其中的主引导程序是它的一部分,此段程序主要用于检测硬盘分区的正确性,并确定活动分区,负责把引导权移交给活动分区的DOS或其他操作系统。此段程序损坏将无法从硬盘引导,但从软区或光区之后可对硬盘进行读写。# q8 i( z9 R+ C; U" W/ r
- N/ S3 x- n: ~( O
而扩展分区的概念是比较复杂的,极容易造成硬盘分区与逻辑磁盘混淆;分区表的第四个字节为分区类型值,正常的可引导的大于32mb的基本DOS分区值为06,扩展的DOS分区值是05。如果把基本DOS分区类型改为05则无法启动系统 ,并且不能读写其中的数据。
( X. [! @5 y! ?. v) d1 J6 E* C8 s w, F- o# M( n7 S. s- N
如果把06改为DOS不识别的类型如efh,则DOS认为改分区不是DOS分区,当然无法读写。很多人利用此类型值实现单个分区的加密技术,恢复原来的正确类型值即可使该分区恢复正常。" N5 X+ A! i2 ^
% h6 F! b- R$ ^0 @ [ 分区表中还有其他数据用于纪录分区的起始或终止地址。这些数据的损坏将造成该分区的混乱或丢失,一般无法进行手工恢复 ,唯一的方法是用备份的分区表数据重新写回,或者从其他的相同类型的并且分区状况相同的硬盘上获取分区表数据,否则将导致其他的数据永久的丢失。" J$ d+ {" L( v* J! }! E( H3 x- F+ n
5 e7 k+ S* S8 n K. B 由于微机操作系统仅仅为分区表保留了64个字节的存储空间,而每个分区的参数占据16个字节,所以操作系统只允许存储4个分区的数据,实际使用中4个逻辑磁盘往往不能满足需求;我们常说的硬盘扩展分区,它只是一个指向下一个分区的指针,这种指针结构将形成一个单向链表。所以一旦单向链表发生问题,将会导致逻辑磁盘的丢失。
5 D! D( S/ r5 D" w/ F( P4 r7 a a. t! @; w0 F% m, n+ ?
二、硬盘的数据恢复' y5 K5 A9 X$ v" [+ N0 I
+ x$ r0 X* M" c5 c+ ^9 \
1、误格式化硬盘数据的恢复; H* \: ?" e8 }9 C/ o; P/ S, U: K: E
- B( `. T% i, z2 ^2 W
在DOS高版本状态下,格式化操作format在缺省状态下都建立了用于恢复格式化的磁盘信息,实际上是把磁盘的DOS引导扇区,fat分区表及目录表的所有内容复制到了磁盘的最后几个扇区中(因为后面的扇区很少使用),而数据区中的内容根本没有改变 。
( W/ D( A- p4 D, E* t! b# N1 Y: k& S1 L( j* n
我们可以使用多种恢复软件来进行数据恢复,比如使用Easyrecovery 6.0和Finaldata2.0等恢复软件均可以方便的进行数据恢复工作。另外DOS还提供了一个miror命令用于纪录当前的磁盘的信息 ,供格式化或删除之后的恢复使用,此方法也比较有效。
2 A8 s- f) }& o- j# A' H* K
: X9 o! \" c' }. L3 Q3 x* H2、零磁道损坏时的数据恢复
1 ^0 f& S; Q$ s" J$ Y! k& p! E% ]* t q, ~
硬盘的主引导记录区(MBR)在零磁道上。MBR位于硬盘的0磁道0柱面1扇区,其中存放着硬盘主引导程序和硬盘分区表。在总共512字节的硬盘主引导记录扇区中,446字节属于硬盘主引导程序,64字节属于硬盘分区表(DPT),两个字节(55 AA)属于分区结束标志。9 n6 J5 z* A( |" ~: v) s' o
9 l) Y7 ?0 k% p9 K 零磁道一旦受损,将使硬盘的主引导程序和分区表信息将遭到严重破坏,从而导致硬盘无法引导。0磁道损坏判断:系统自检能通过,但启动时,分区丢失或者C盘目录丢失,硬盘出现有规律的“咯吱……咯吱”的寻道声,运行SCANDISK扫描C盘,在第一簇出现一个红色的“B”,或者Fdisk找不到硬盘、DM死在0磁道上,此种情况即为零磁道损坏!$ M4 E U6 r+ H" b
' I8 V6 h5 ~' x# q; x 零磁道损坏属于硬盘坏道之一,只不过它的位置相当重要,因而一旦遭到破坏,就会产生严重的后果。通常0磁道损坏的硬盘,可以通过PCTOOLS的DE磁盘编辑器(或者DiskMan)来使0磁道偏转一个扇区,使用1磁道来作为0磁道来进行使用。而数据可以通过Easyrecovery来按照簇进行恢复,但数据无法保证得到完全恢复。
( k( u/ v( E7 V. _/ V& I
: I7 a! } i' i3、分区表损坏时的数据修复
$ S2 e2 O {/ N* k9 m9 o* ^) X9 X
硬盘主引导记录(MBR)所在的扇区也是病毒重点攻击的地方,通过破坏主引导扇区中的DPT(分区表),就可以轻易地损毁硬盘分区信息,达到对资料的破坏目的。分区表的损坏是分区数据被破坏而使记录被破坏的。所以,我们可以使用软件来进行修复。
* Y/ i, n4 W0 F' r
/ H# \# H2 L/ H$ y 硬盘分区之后,要备份一份分区表至软盘、光盘或者移动存储活动盘上。
, V2 G* T7 s/ q4 U1 h7 b4 o4 z8 G3 R$ X
在恢复分区上,诺顿磁盘医生NDD是绝对强劲的工具,可以自动修复分区丢失等情况,可以抢救软盘坏区中的数据,强制读出后搬移到其它空白扇区。在硬盘崩溃或异常的情况下,它可能带给用户一线希望。在出现问题后,用启动盘启动,运行NDD,选择Diagnose进行诊断。NDD会对硬盘进行全面扫描,如果有错误的话,它会向你提示,然后只要根据软件的提示选择修复项目即可,而且这些问题它都能轻轻松松地解决。
9 E( e. [4 h) ]. U
- c& q) O/ m e* H3 i6 X 另外,大家非常熟悉的中文磁盘工具DiskMan,在重建分区表方面具有非常实用的功能,用于修复分区表的损坏是最合适不过了。* j) b+ n2 W Z& c b J
" |% U; D# X: ^. e7 o 但是,重建分区表功能也不能保证做到百分之百的修复好硬盘分区表。所以要记住“求谁也不如求自己”还是保护好自己的硬盘吧!尽量避免硬件损伤以及病毒的侵扰,一定要做好分区表的备份工作;如果没有做备份的话,请下载一个DiskMan软件,然后在工具选项中,选备份分区表,一般默认是备份到软驱上面的。然后你应该把这个备份文件刻录到光盘或者是拷贝到U盘里,千万不要放到硬盘里,那样就与没有备份的效果一个样了!
2 e2 Y& u. E2 h. g6 W3 i2 i# `3 j+ v# B9 j1 H0 W
4、误删除之后的数据恢复
3 x/ e' m0 F- t
( A3 f: A. }. |7 {0 E; l; C 在计算机使用过程中我们最常见的数据恢复就是误删除之后的数据恢复了,但是在这个时候一定要记住,千万不要再向该分区或者磁盘写入信息,因为刚被删除的文件被恢复的可能性最大。$ x! N) k V& K: b2 m" _1 X
$ X; a3 Z/ O7 T7 @ 实际上当用fdisk删除了硬盘分区之后,表面现象是硬盘中的数据已经完全消失,在未格式化时进入硬盘会显示无效驱动器。具体说就是删除了硬盘分区表信息,而硬盘中的任何分区的数据均没有改变。
7 n6 N, Y- u. t) ^) k, E/ ?/ J' j2 K: ?
由于删除与格式化操作对于文件的数据部分实质上丝毫未动,这样,就给文件恢复提供了可能性。我们只要利用一些反删除软件(它的工作原理是通过对照分区表来恢复文件的),用户可以轻松地实现文件恢复的目的。. ~: X0 f) p N0 ?
( C# k4 b8 ^5 x4 g 同时误格式化同误删除的恢复方法在使用上基本上没有大的区别,只要没有用Fdisk命令打乱分区的硬盘(利用FDISK命令对于40G以内的硬盘进行分区,还是很方便实用的,所有启动盘上都有,主板支持也没有任何问题),要恢复的文件所占用的簇不被其他文件占用,这样,格式化前的大部分数据仍是可以被恢复的。
2 ^, j9 b5 Q4 {' x$ `* M( ~+ g) g' g$ P( c; J2 ]2 E8 Y0 r g
如果你的Windows系统还可以正常使用的话,那么最简单的恢复方法就是用Windows版EasyRecovery软件,它恢复硬盘数据的功能十分强大,不仅能恢复被从回收站清除的文件,而且还能恢复被格式化的FAT16、FAT32或NTFS分区中的文件。' k2 d* M. |1 e d
5 M5 C, x2 K* [2 Q A% W 以上是当我们遇到硬盘数据丢失后如何进行数据恢复的几种方法,相信这些对于电脑高手的朋友们来说真的不算什么,但还有不少初学电脑的朋友在为硬盘数据的丢失而苦恼啊!通过今天简单介绍的几种方法,衷心希望能对大家有点帮助
3 f9 d% E6 C# g6 R1 N( J& @# p) B+ o! X
- n! R$ ~3 ^6 j+ G) ? c
[ 本帖最后由 鬓微霜 于 2007-8-20 22:42 编辑 ] |
评分
-
1
查看全部评分
-
|