恢复硬盘分区表

想必大家都有过数据丢失的糟糕经历,费尽心力收集的数据,由于病毒破坏、误 删除、误格式化、分区软件误操作、存储设备损坏等原因而毁之一旦,真是令人痛心。其实我们只要静下心来学习一点数据恢复方面的浅近知识,遇上这样的倒霉 事,只要不是严重的硬件损坏,就能挽回一部分数据,运气不错的话,找回全部数据也是可能的。       讨论数据恢复,我们先来看看最简单的情况:单纯的硬盘分区表损毁(非硬件损坏),现象——分区丢失。要重建硬盘分区表 ,就得搞清楚硬盘分区是如何组织的,下面先介绍相关的背景知识。   一、硬盘文件系统寻址方式:CHS和LBA   1.CHS寻址方式       CHS是Cylinder(柱面)/Head(磁头)/Sector(扇区)的缩写。       为什么会有这些参数,这要从硬盘的结构说起。硬盘通常是由几个盘片叠加在一起,每个盘面由一个磁头访问,盘面又划分为许多同心圆环,这就是磁道,每条磁道又划分为许多区段,每个区段就称为一个扇区。硬盘的存储单位是扇区,数据就存储在扇区里。       由此产生了所谓的3D参数(Disk Geometry),即磁头数(Heads)、柱面数(Cylinders,所谓柱面是由半径相同分属不同盘面的若干磁道组成)、扇区数(Sectors),以及相应的寻址方式。见附图:       在硬盘文件系统中规定:           磁头数(Heads) 表示硬盘总共有几个磁头,也就是有几面盘片,           最大为 255 (用 8 个二进制位存储);           柱面数(Cylinders) 表示硬盘每一面盘片上有几条磁道,           最大为 1024(用 10 个二进制位存储);           扇区数(Sectors) 表示每一条磁道上有几个扇区,           最大为 63 (用 6个二进制位存储)。           每个扇区一般是 512个字节,理论上讲这不是必须的,但好象没有取别的值的。       所以CHS 方式最大寻址范围为:       255 * 1024 * 63 * 512 / 1000 / 1000 / 1000 = 8.4 GB。                              在 CHS 寻址方式中,磁头,柱面,扇区的取值范围分别为       0到 Heads - 1, 0到 Cylinders - 1,1到Sectors (注意是从1开始)。       当硬盘需要读取某一扇区的数据时,先确定柱面号,再确定磁道(磁头)号,逐级缩小范围,最后确定扇区号,这样就完成了寻址过程。只要确定CHS参数,硬盘就指定相应的磁头到相应的磁道和扇区去读写数据。       需 要说明的是所谓的CHS参数与硬盘真实的柱面号、磁头号、扇区号并不是一一对应的,一般的硬盘磁头也就有几个,不可能到255之多。物理上的柱面号、磁头 号、扇区号与文件系统中的CHS 参数存在一定的转换关系,这由硬盘的固件去完成,我们不必关心,在这里,我们只关注文件系统中的CHS 参数。   2.LBA寻址方式       随 着硬盘技术的不断发展,其容量也不断增大,现在的硬盘早就超过了8G的容量,在硬盘文件系统中采用CHS寻址方式已经满足不了需要了,那么在现代硬盘的文 件系统中又是如何寻址的呢?现在的硬盘文件系统基本都采用线性寻址的方式,即把硬盘上所有可用扇区(假定数目为N)从0到N - 1按序编号,硬盘读写数据时按扇区号寻址,这就是LBA寻址方式(logic block address),扇区编号也就是该扇区的LBA地址。       尽管LBA已经成为硬盘文件系统的主流寻址方式(小于8.4G的分区仍需在分区表 中 标注CHS 参数,在大于8.4G的分区,CHS 参数就没有什么意义了,此时须用LBA 方式寻址),但在Windows 系统中整个硬盘的逻辑结构仍然是以传统上的CHS 方式组织起来的,硬盘文件系统是由整数柱面组成。现代硬盘文件系统的柱面数已经突破了1024的限制,最大磁头数和扇区数仍为255和63。相对于LBA 来说,CHS模式较为直观,所以磁盘编辑器通常采用CHS模式来作为磁盘逻辑结构划分方式。   二、MBR(Master Boot Record)、DPT(Disk Partition Table)、       主分区(Primary Partition)、扩展分区(Extended Partition)        和逻辑分区(Logical Partition)       硬盘的第一个扇区被称为主引导扇区,习惯上称为MBR,CHS参数为0,0,1,LBA参数为0,它包含了硬盘引导程序和硬盘分区表 (DPT),作用十分重要,如果MBR扇区受损,那么系统就无法访问这个磁盘了。   1.MBR引导程序概述       MBR扇区的512字节数据中,前446字节(0 to 0x1BD)存放硬盘引导程序代码。电脑从硬盘启动时,系统从硬盘中首先读取MBR引导代码,其流程大致如下:       (1)   将程序代码由0:7C00H移动到0:0600H(注,BIOS把MBR放在0:7C00H处)       (2)   搜索可引导分区,即80H标志             成功:goto 3             失败:跳入ROM BASIC             无效分区表 :goto 5       (3)   读引导扇区             失败:goto 5             成功:goto 4       (4)   验证引导扇区最后是否为0xAA55H             失败:goto 5             成功:goto 6       (5)   打印错误进入无穷循环       (6)   跳到0:7C00H进行下一步启动工作       然后MBR引导程序就把系统控制权交给操作系统引导程序。       如果MBR损坏硬盘无法访问,可在DOS下输入:       Fdisk /cmbr X(X = 1,第一块硬盘;X = 2,第二块硬盘),重写主引导记录。   2.硬盘分区表 (DPT)       MBR扇区的最后66字节除去末尾的标志0xAA55H(所有引导扇区的标志。由于磁盘编辑器中的显示内容是从低址到高址排列的,所以AA55显示为55AA)外,剩余的64字节被称为硬盘分区表。硬盘分区表包含四个项目,每项16字节,代表四个分区的参数。分区表 项的各字节含义如下:       偏移                            意义       0            自举标志(80为活动分区,00为非活动分区)       1            起始磁头号H       2            起始扇区号S       3            起始柱面号CYL(CYL的高2位存放在S字节的高2位)       4            分区格式标志(05:DOS Extended;06:BIGDOS FAT16;                                  07:NTFS;0B:FAT32;                                  0C: FAT32(对INT 13H指令使用LBA);                                  0E: FAT16(对INT 13H指令使用LBA);                                  0F: Extended(对INT 13H指令使用LBA);                                  82:LINUX Swap;83:LINUX;85:LINUX Extended)       5            终止磁头号H       6            终止扇区号S       7            终止柱面号CYL       8-11       本分区之前已用扇区数(即 该分区的LBA地址,                     当分区表属于扩展分区中的记录时,该值为相对扩展分区首扇区的位置)       12-15     本分区扇区总数   3.主分区(Primary Partition)、扩展分区(Extended Partition)     和逻辑分区(Logical Partition)       DPT中可定义的分区包括主分区和扩展分区。所谓主分区,是指DPT中包含的能够被系统使用的磁盘分区,它是可以设置为活动的,即可以引导操作系统,一个硬盘只能有一个活动分区;而扩展分区并不能被系统使用,它的作用是突破DPT只能定义4个分区的限制。       其做法是:让DPT在定义主分区后,将多余容量定义为扩展分区,指定该分区的起始位置,根据起始位置指向硬盘的某一扇区,称作虚拟MBR,在其中定义下一个分区表。如果只有一个分区,就定义该分区,然后结束;如果不止一个分区,就定义一个基本分区和一个扩展分区,扩展分区再指向下一个分区表,在下一个分区表中继续定义分区,直至结束。这样就形成一个分区链,可以描述所有的分区。       任何分区表中只能有一个扩展分区,扩展分区不能引导操作系统。位于扩展分区中的可被系统使用的磁盘分区称为逻辑分区,逻辑分区不能设置为活动。由于定义了扩展分区和逻辑分区的概念,windows使用的磁盘盘符可以一直到Z,见下图。 Click here to open new window
CTRL+Mouse wheel to zoom in/out   三、硬盘分区结构实例分析       使 用磁盘编辑器可以直接访问硬盘数据,一般磁盘编辑器都是以十六进制显示数据。这里推荐使用数据恢复领域内被广泛使用的软件WinHex,这个软件能在 windows下直接读写磁盘扇区。打开WinHex,点击“工具”菜单,选择“磁盘编辑器”-“物理媒介”-“HD0......”,这样整个硬盘的数 据就以十六进制的方式显示于编辑框之内。本文使用的编辑器是UltraEdit,下面就对本人的硬盘分区情况进行分析。   1.MBR扇区图示       如图所示,MBR扇区的0~1bd区段是MBR引导代码,       1be~1dd一共有32字节代表两个分区表项,末尾0xAA55H是引导扇区的标志。       第一分区各项参数为:       80,01,01,00,0C,FE,FF,FF,3F,00,00,00,F8,93,32,02。                           第一项80,代表该分区是活动的(可以引导操作系统);       起始位置是0柱面、1磁头、1扇区;       0C代表该分区是FAT32格式;FE、FF、FF三项代表终止柱面磁头扇区的序号,       由于该分区大于8G,所以它的CHS参数已经没有意义;       3F,00,00,00是该分区首扇区的LBA地址,为0x3FH,等于63;       F8,93,32,02代表该分区的扇区数      (由于排列是从低址到高址,扇区数应该是0x23293F8H,为36869112个扇区)。       第二分区各项参数为:       00,00,C1,FF,0F,FE,FF,FF,37,94,32,02,49,E8,C9,04。                              第一项00,代表该分区是非活动的;       起始CHS参数柱面号无效,磁头号0,扇区号1;0F代表该分区是扩展分区;       37,94,32,02是该分区首扇区的LBA地址,为0x2329437H,等于36869175;       49,E8,C9,04代表该分区的扇区数,为0x4C9E849H,一共80341065个扇区。   2.扩展分区首扇区(虚拟MBR)图示   (1)第一扩展分区首扇区(虚拟MBR)图示       如前文所述,由于DPT只能记录4个分区的信息,windows通过扩展分区来记录多于4个分区的信息。DPT中的扩展分区称为第一扩展分区,它的首扇区称作虚拟MBR。       从示例图上可以看到扩展分区的首扇区之内没有MBR引导代码,只有分区表,一共有两项记录,表示一个逻辑分区和一个扩展分区。                           第一分区各项参数:       00,01,C1,FF,0B,FE,FF,FF,3F,00,00,00,37,16,71,02。       第一项00,代表该分区是非活动的;       起始CHS参数柱面号无效,磁头号1,扇区号1;0B代表该分区是FAT32文件系统;       3F,00,00,00是该分区首扇区的LBA地址(相对第一扩展分区首扇区),为63;       37,16,71,02代表该分区的扇区数,一共40965687个扇区。                           第二分区各项参数:        00,00,C1,FF,05,FE,FF,FF,76,16,71,02,D3,D1,58,02。       第一项00,代表该分区是非活动的;       起始CHS参数柱面号无效,磁头号0,扇区号1;05代表该分区是扩展分区;       76,16,71,02是该分区首扇区的LBA地址(相对第一扩展分区首扇区);       D3,D1,58,02代表该分区的扇区数,一共39375315个扇区。   (2)第二扩展分区首扇区(虚拟MBR)图示       如图所示,该扩展分区只包含一个逻辑分区,它的分区表各项参数如下:       00,01,C1,FF,07,FE,FF,FF,3F,00,00,00,94,D1,58,02       第一项00,代表该分区是非活动的;       起始CHS参数柱面号无效,磁头号是1,扇区号是1;       07代表该分区是NTFS文件系统;       3F,00,00,00是该分区首扇区的LBA地址(相对第二扩展分区首扇区),为63;       94,D1,58,02代表该分区的扇区数,一共39375252个扇区。       综上所述,该硬盘的分区结构已经搞清楚了,它的主分区表中包括一个主分区(活动的)和第一扩展分区;第一扩展分区中包含一个逻辑分区和第二扩展分区;第二扩展分区包含一个逻辑分区,如图所示。   3.主分区和逻辑分区首扇区图示       如前文所述,该硬盘一共有三个分区,C区为主分区、FAT32格式,D区是逻辑分区、FAT32格式,E区是逻辑分区、NTFS格式。我们就来看看这三个分区的第一扇区各自都有什么特点。   (1)C区首扇区图示       C区首扇区结尾标志是0xAA55H,CHS参数为0,1,1。       扇区第一行出现MSWIN4.1字样(由于文本显示不正确,“M”被省略掉了),       说明该分区是FAT32文件系统,在偏移52~59区段还有FAT32字样。       C区首扇区内保存着该分区的引导代码,这略去不谈,我们只关注1C~23字段。       其中1C~1F字段是3F,00,00,00,这是LBA地址,表示该分区之前有63个扇区;       20~23字段是F8,93,32,02,是该分区的总扇区数。       以上这些信息十分重要,对于我们下面手工恢复磁盘分区结构十分关键。   (2)D区首扇区图示       D区首扇区结尾标志是0xAA55H,CHS参数为X,1,1,扇区第一行出现MSDOS5.0字样       (由于文本显示的问题,“M”被省略掉了),       说明该分区是FAT32文件系统,在偏移52~59区段还有FAT32字样。       1C~1F字段是3F,00,00,00,这是D区的LBA地址,表示该分区之前有63个扇区       (相对于扩展分区首扇区而言),20~23字段是37,16,71,02,是分区的总扇区数。   (3)E区首扇区图示                               E区首扇区结尾标志是0xAA55,CHS参数为X,1,1,扇区第一行出现NTFS字样       (由于文本显示的问题,“N”被省略掉了),说明该分区是NTFS文件系统。       28~2F字段是93,D1,58,02,00,00,00,00,是E区可使用的总扇区数,       与第二扩展分区表中记录的E区总扇区数相差1。为何相差1呢?那是因为NTFS       文件系统的一个特性,它会把分区最后一个扇区用来保存首扇区的备份,这个       扇区是保留的,不能被用户使用。一般保留扇区数目为1,但也有大于1的情况,       这时NTFS分区首扇区中记录的可用扇区数和分区表中记录的总扇区数相差就不是1了。   4.总结        综上所述,有几点经验值得重视:   (1)所有引导扇区的末尾都是0xAA55H。   (2)硬盘MBR扇区的CHS参数是0,0,1;        所有扩展分区首扇区的CHS参数是X,0,1;        主分区、逻辑分区的首扇区CHS参数是X,1,1,        主分区的CHS参数也可以是X,0,1,        主分区、逻辑分区的首扇区也可能不是1号扇区,这个现象是存在的。   (3)所有扩展分区、主分区、逻辑分区终止CHS参数都为:X,254,63。        综合(2)、(3)来看,所有分区的大小都是整数柱面,不能跨柱面存在。   (4)所有扩展分区一般只包含分区表数据和0xAA55H标志,一般不含引导代码。   (5)第一扩展分区的LBA地址是相对于MBR而言,而之后的扩展分区的LBA地址计算        都是以第一扩展分区的位置为基准。   (6)主分区、逻辑分区的首扇区常常带有FAT32、NTFS之类的字符串,        MSWIN4.1、MSDOS5.0是FAT32分区的标志,MSDOS5.0还可能是        FAT16分区的标志。引导扇中保存有该分区的大小数据,对于NTFS        分区来说,引导扇中记录的分区扇区数和分区表中记录的数据相差个位数,        通常是1。这对我们找回丢失的分区十分关键。   (7)似乎第一扩展分区类型是0F,之后的扩展分区为05类型,主分区为FAT32格式,        类型为0C,逻辑分区若为FAT32格式则为0B类型。   四、硬盘分区表恢复实战经历   1.使用工具软件自动恢复硬盘分区       这里选用深山红叶的硬盘分区表管理软件进行操作,演示过程在虚拟机中进行。   (1)首先查看一下硬盘的分区情况,有三个分区,C区是活动的主分区,NTFS格式,D、E是逻辑分区,FAT32格式,为模拟分区丢失的情况,用分区软件把硬盘所有分区删除,如图。   (2)打开硬盘分区表修复与管理软件Partition Table Doctor 3.0,点击“操作”菜单,选“重建分区表”-交互模式,软件自动搜索,找到三个分区,如图。   (3)在“文件”菜单中选择保存,于是丢失的分区又回来了,如图。        能够重建硬盘分区表的工具还有很多,比较常用的还有DiskGenius,使用方法类似。   2.使用磁盘编辑器手工恢复磁盘分区表       有 朋友可能会问,既然有软件能自动恢复,为何还要费时费力地手动恢复呢?其实手动恢复的过程虽然繁琐,却能让我们对磁盘分区的结构有清楚的了解,再说软件虽 好却不够智能,遇到比较复杂的情况就无能为力了,这时只能借助磁盘编辑器手动恢复,我们只要了解了原理,在实际情况中就能游刃有余。   (1)打开硬盘分区表修复与管理软件Partition Table Doctor 3.0,点击“扇区”-“编辑扇区”,弹出十六进制磁盘编辑器,首先显示的是硬盘主引导扇区,CHS:0,0,1,如图。       从图上可以看到,主分区表已经被清空,说明删除分区的操作其实就是清除分区表中的相关项,只要正确地填写出分区表数据,那么丢失的分区就找回来了。   (2)恢复C分区:       移动扇区至0,1,1位置,这是C区的首扇区。       从图上可以看到该分区是NTFS系统,       大小是7F,E2,5D,00,实际大小还要再加上1,为80,E2,5D,00。       移动扇区至0,0,1位置,填写1BE~1CD字段。       由于该分区小于8G,所以CHS参数要填写正确。       起始CHS参数是0,1,1,终止CHS参数是382,254,63。       终止柱面号可以这样计算:       (终止柱面号 + 1)X 255 X 63 = 分区总扇区数 + 分区之前的总扇区数。       于是C分区的分区表参数如下:                 80,01,01,00,07,FE,7F,7E,3F,00,00,00,80,E2,5D,00,       填写完毕,保存。   (3)恢复第一扩展分区:       第一扩展分区首扇区的LBA地址应为63 + C分区扇区总数,       为BF,E2,5D,00(6152895)。       起始CHS参数应为:383,0,1,终止CHS参数为1043,254,63       (此处柱面号大于1023,填写分区表时按1023计)。       扩展分区大小为10618965个扇区,换算为十六进制为55,08,A2,00。       再移至硬盘主引导扇区,编辑1CE~1DD字段,输入:       00,00,41,7F,0F,FE,FF,FF,BF,E2,5D,00,55,08,A2,00,保存。   (4)恢复D分区:       把磁盘编辑器移动至383,1,1扇区,这就是D区首扇区。       由图可知该分区是FAT32格式,大小是80,E2,5D,00。       移动扇区至383,0,1位置,此处为第一扩展分区首扇区。先在末尾填上55AA标志。       起始CHS参数为383,1,1,终止CHS参数为765,254,63。       于是D分区的分区表参数如下:            00,01,41,7F,0B,FE,BF,FD,3F,00,00,00,80,E2,5D,00,       填写1BE~1CD字段,保存。   (5)恢复E分区:       第二扩展分区首扇区位于766,0,1;       LBA地址为D区扇区数 + 63,等于BF,E2,5D,00。       把磁盘编辑器的当前扇区移到这里,发现分区表依然完好,如图所示。       这样的话剩下的过程就很容易了,从分区表中可以获知E区大小是57,25,44,00,       由此可知第二扩展分区大小为E区扇区数 + 63,等于96,25,44,00。       把磁盘编辑器移至383,0,1,即第一扩展分区首扇区,       编辑1CE~1DD:       00,00,81,FE,05,FE,FF,FF,BF,E2,5D,00,96,25,44,00,保存。       至此大功告成,如图所示,丢失的分区已经全部找回。       以上便是我新近学到的磁盘分区恢复方面的一点入门知识,绝对业余,不值高手一哂。辛苦整理成文,只是希望能对感兴趣的新手朋友有所帮助。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1.准备好工具diskedit和引导盘。 2.检查CMOS配置是否正确。 检查硬盘设置,在CMOS中记下 CYLINDER,SECTOR和 HEAD参数. 此处只考虑有多个逻辑硬盘硬盘分区情况: 如果不知道各个逻辑硬盘的具体情况,用DISKEDIT 中的Find菜单寻找字符串00 00 00 55 AA,并判断是否为EXTEND分区分区信息,如果找到,即可知道Extend分区的起始位置,并可推算DOS主分区的起始和结束位置,并推算相关的参数,由于备逻辑盘是连续的,由 EXTEND分区信息,可找到各逻辑硬盘分区信息,并推算出EXTEND分区的结束位 置及相关参数,将推算出的相关信息写入主分区表中,即可恢复分区表。 注意:EXTEND分区为05,DOS分区为04或06。 对FAT32则为0B和0C.用DISKEDIT中的OBJECT菜单选择PHYSICAL SECTOR,键入0,0,1,即可进入主引导区。用VIEW菜单中的AS PARTITION TABLE项可看分区结构。一般情况下主引导区的起始位置SIDE=1 SECTOR=1 ,EXTEND分区的起始位置SIDE=0 SECTOR=1,而ENDING LOCATION处SIDE和 SECTOR必然是最大值。可直接在该分区表中修改数据。光标移至任意处回车, 可显示该数据处的分区结构,并可通过F2和F6切换。后一个分区的STARTING LOCATION必然是前一个分区ENDING LOCATION的下一个扇区。NUMBER OF SECTORS可通过分区的ENDINGLOCATION和STARTING LOCATION计算出,例 如,STARTING LOCATION的SIDE=1, CYLINDER=0,SECTOR=1,ENDING LOCATION 的SIDE=7,CYLINDER=262, SECTOR=39则通过以下式子计算: 主引导区的RELATIVE SECTORS 是SECTOR的最 大值。 EXTEND分区的RELATIVE SECTORS=主引导区的 RELATIVE SECTORS+主引导区的NUMBER OF SECTORS。 EXTEND分区的NUMBER OF SECTORS=本分区的 ENDING LOCATION (换算为SECTORS)-本分区的RELATIVE SECTORS。 下面是某116M硬盘(参数为CYLINDER=760 HEAD=8 SECTOR=39)共分有: C盘(DOS引导盘)大小为40M,DOS扩充盘 大小为76M,DOS扩充盘上的逻辑驱动器为: D: 32M E: 3M F: 4M G:6M H:7M I:7M J:17M     Starting Location Ending Location Relative Number of System Boot Side Cylinder Sector Side Cylinder Sertor Sertors Sertors BIGDOS Yes 1 0 1 7 262 39 39 82017     h1 c1 s1 h2 c2 s2 r1 n1 EXTEND No 0 263 1 7 760 39 82056 155376     h3 c3 s3 h4 c4 s4 r2 n2 unused No 0 0 0 0 0 0 0 0             unused No 0 0 0 0 0 0 0 0            

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值