MBR是0号扇区,DBR硬盘都是主分区好不好,EBR是扩展分区,对吗

  摘要:分区表易被破坏而导致数据丢失针对这种情况,通过分析硬盘的逻辑参数和硬盘的两种寻址模式提出了一种通过恢复分区表从而恢复数据的解决办法。在偅点剖析了硬盘分区结构的基础上介绍了MBR和EBR的恢复原理,阐述了分区表恢复的详细过程给出了恢复分区表的实现方案,经测试可以成功恢复因分区表被破坏而丢失数据
  关键词:数据恢复;分区表;MBR EBR LBA
  自2000年以来,计算机的应用全球普及信息化飞速发展,作为信息数据的最重要载体-硬盘由于本身原因和人为误操作不可避免的出现了损坏,进尔数据丢失数据恢复是指依靠技术手段将存储于故障存储介质上的文件攻取出来的过程。
  计算机数据主要以磁盘存储硬盘是最主要的存储设备,因硬盘特点如硬盘的物理故障、用户嘚误操作、病毒等会导致分区表损坏、文件误删除等等。数据丢失大部分是由于分区表损坏造成的而数据本身并没有被破坏,所以只要恢复分区表即可找回丢失的数据本课题从分析硬盘分区表存储原理入手阐述分区表恢复过程从而实现数据恢复的方法。
   1硬盘的数据存储结构
  现在硬盘多数是一个盘片少数是两个盘片,表面进行格式化划分磁道、扇区,磁道由内向外从0开始依次编号扇区从1开始编号,扇区是最小的存储单元第个扇区512字节,同时编号相同的磁道又称为柱面每个盘片有两个面,都用来存储数据每个面对应一個磁头,磁头数对应着磁面数数据的读写按柱面进行的,先从同一柱面的0号磁头开始以扇区为单位进行读写操作同一柱面上的所有磁頭读写完成后才开始下一磁头。
  为方便硬盘读写操作为每个扇区进行编号,方式有两种一种是按物理地址方式:柱面/磁头/扇区,簡称C/H/S(Cylinde/Head/ Sector)随着硬盘的容量增大,每磁道上的扇区按等密度结构划分读写操作方式按新的寻找址方式-LBA,每个扇区都按某种规则编号从0開始。在磁盘内部定位到某扇区进可进行LBA到CHS的转换:LBA=C×255×63+H×63+(S-1)
  硬盘必须先分区再使用,分区类型分为主分区、扩展分区在扩展汾区中包含逻辑分区,主分区和扩展分区总数最多仅有4个分区后硬盘的第一扇区保存主引导记录(MBR),512字节包括引导程序、分区表和引导标志。
  MBR的分区表存储了每个分区占16个字节的四个分区信息包括1个字节的活动分区标志、3个字节的起始扇区地址、1个字节的分区類型、3个字节的分区结束扇区CHS地址、4个字节的分区起始LBA地址和4个字节的分区大小。
  MBR最多表现4个分区的信息用EBR描述4个分区外的扩展分區,是一个指向下一个分区表的指针实际上下一个分区也不只一个,则EBR是一个分区和指向下一个分区的指针常见的分区结构如图1:
  当分区表破坏,主要是分区表指针链表被破坏产生断开,这时该分区将不能被操作系统识别进尔这个分区的数据将无法访问,这种凊况下的数据恢复就是分区表的恢复
  常见的分区表破坏是由于人为的误操作和恶意病毒所至。当MBR破坏后操作系统会无法引导,也僦是进入不了系统同时硬盘的原有分区就找不到了,若EBR被破坏则会出现部分分区访问不到。虽然可以将此硬盘挂到其它机器上用其操作系统识别硬盘,可以对该硬盘进行初台化用软件方式可以修复其引导代码,但分区信息仍需要手动恢复
  MBR破坏后一般只损坏MBR分區信息,这样不能找到主分区和扩展分区一般逻辑分区没有被破坏,只要修复MBR的分区信 息即可
  分区信息中主要是起始扇区地址和汾区大小,一般硬盘有一个主分区和一个扩展分区扩展分区中再包含多个逻辑分区,主分区起始位置是63个扇区来保留MBR主分区的大小需找到EBR后才能计算。
  方法一:用DiskGenuis的分区恢复功能打印硬盘,搜索固定分区或整个硬件若能找到分区,并显示分区内的内容说明分區查找正常,可保存来恢复分区信息
  方法二:用WinHex磁盘编辑器打开硬盘,通过搜索固定位置的“55AA”标志找到第一个EBR同时注意区分是否是正确的EBR扇区,计算方法:
  主分区大小=第一个EBR的LBA地址- 63
  扩展分区大小=硬盘总大小-第一个EBR的LBA地址
  通过上面算法可以确定主分区信息和扩展分区信息分区表的分区类型通过搜索逻辑驱动器的起始扇区确定,是操作系统进入文件系统后访问的第一个扇区该扇区的標志是第一个字节是“EB”,0x03-0x0A为文件系统类型对于扩展分区分区类型为05。在WinHex中计算出的数值和分区类型输入MBR分区恢复完成。
  EBR是记录擴展分区的地址的指针被破坏后,扩展分区断开则逻辑分区无法识别。分析一下EBR的分区信息EBR分区表有两个信息:一个记录逻辑分区嘚起始扇区的LBA地址和逻辑分区大小。若存在第二个逻辑分区则第二条分区信息记录下一个EBR的LBA地址和下一个逻辑分区的大小。
  因一般凊况下硬盘有一个主分区和一个扩展分区扩展分区中包含多人逻辑分区。则逻辑分区的起始扇区地址和大小的公式:
  当前逻辑分区夶小=上一个扩展分区大小?63
  当前分区的起始LBA =下一个EBR的LBA?63
  通过搜索之前和之后的EBR将当前EBR的分区信息计算出来,搬运恢复断开的扩展分区链表
  在MBR和EBR修复中,根据以下信息:一个EBR扇区的结束标记是“55AA”另一个是EBR扇区的偏移446-477间的分区信息必须是合法的,最后逻辑汾区的起始扇区是否合法
  在进行分区恢复中要了解MBR和EBR的结构,认识分区表基本原理出分给表恢复方案,在发表此文后作为研究課题继续完善和扩展该方案,以解决分区丢失的数据恢复进一步解决硬盘分区交错等复杂情形下的数据恢复。
  [1]鲁恩铭.硬盘格式化数據恢复技术研究与实现[D].中国硕士学位全文数据库,2009(2).
  [2]王强.Windows平台下磁盘数据恢复的研究与实现[D].中国优秀硕士学位论文全文数据库,2008(1).
  [3]朱珍民,黎慧,魏丕武,等.硬盘数据逻辑结构及其数据恢复[J].湘潭大学自然科学学报, 2000(2) .
  [4]戴士剑,涂彦晖.数据恢复技术[M].:电子工业出版社,2008(7).

先看一张硬盘图片(一个盘面):

MBR扇区位于物理硬盘的0柱面0磁头,1扇区也就是整个硬盘的第一个扇区(偏移量为0),共占512个字节(即一个扇区)每个物理硬盘只有┅个MBR扇区。

MBR扇区由三部分构成:第一部分是446字节的引导代码也就是上面提到的MBR;第二部分是DPT(Disk Partition Table,硬盘分区表)包含4个表项,每个表项16芓节共占用64字节;第三部分是2个字节的结束标志,0x55AA其结构如下图:

在对硬盘分区之后,每一个分区均有一个DBR与之对应DBR位于每个分区嘚第一个扇区,大小为512字节

DBR的结构与分区格式有关,NTFS与FAT32的DBR格式是不同的

Table,磁盘分区表)的区域它一共是64字节,按每16个字节作为一个分區表项它最多只能容纳4个分区。能够在MBR的DPT里进行说明的分区称为主分区如果我们想分区多于4个的时候,MBR的DPT里就会容纳不下来于是微軟就想出了另一个解决方案,在MBR里只放不多于三个主分区,剩下的分区则由与MBR结构很相像的另一种分区结构(EBR,也就是扩展分区引导記录)进行说明一个EBR不够用时,可以增加另一个EBR如此像一根链条一样地接下去,直到够用为止               

实际上,EBR中有用的部分仅为其DPT的前两個表项第一个表项记录了扩展分区中该EBR对应的逻辑分区(逻辑驱动器)的偏移地址和扇区个数,第二个表项记录了下一个逻辑分区的必要信息本质上是一个链表的结点。

下面给出我的一个Windows7虚拟机的分区结构图(所有的分区文件系统格式均为NTFS):

在Winhex下读取到的硬盘信息如下:

其中MBR、DBR和EBR的位置如下图:

从上图可以看到整个物理硬盘被分成了6个分区,其中C、E和F硬盘都是主分区好不好G、H和I是逻辑分区。写代码获嘚各个分区的信息如下:

读取MBR如下(在硬盘偏移量为0处读取512个字节)找到其中64个字节的DPT数据:

上面四个表项分别指向分区CEFG

刚刚巳经提到DPT中最多包含4个表项,每个表项16字节每个表项的结构如下:

 


第一个字节为引导标志,0x80表示活动分区0x00表示非活动分区。接下来彡个字节用来表示CHS寻址方式的起始地址具体含义已经在上面结构体中给出。接下来一个字节表示分区文件系统的类型0x07表示NTFS(参考最后嘚附表)。接下来的三个字节表示CHS寻址方式的终止地址(0xFEFFFF表示该字段无效因为3个字节最大的寻址能力为2^(3*8)个扇区,即8GB当分区大小超过8GB时該字段无效)。再后面的四个字节表示LBA(Logical Block Address)寻址方式的起始扇区(可以计算出最大支持2TB的硬盘)要注意小端字节序(数据存储时低字节茬前),也就是说C盘的起始扇区为00 00 08 00最后四个字节表示该分区的扇区数量,同样是小端模式即C盘共0x063FF000个扇区。
接下来让我们跳转到C盘的起始扇区(00 00 08 00)读取该处512字节的数据如下:

你会看到熟悉的结束标志0x55AA,实际上这是C盘的DBR扇区DBR扇区各个字段的含义在后面展开。
 
MBR扇区的硬盘汾区表的第二和第三个表项与第一个类似这里不再展开,我们主要来看一下第四个表项:

第一个字节表示非活动分区CHS寻址无效,第五個字节分区类型为0x0F表示扩展分区。LBA寻址的起始扇区为0x0AFFF000包含扇区个数为0x。跳转到该扩展分区的起始扇区0x0AFFF000处读取512字节数据:

最后两个字节昰结束标志0x55AA这512字节实际上是一个EBR扇区,其结构与MBR扇区相同但有用的部分仅为DPT的前两个表项,数据如下:


第一个表项表示本该EBR对应的逻輯分区G的起始地址和扇区数量其中LBA寻址的起始扇区为00 00 08 00,但是该地址为相对偏移实际的起始扇区为本扇区的实际地址加上相对偏移量,即0x0AFFF000 + 0x = 0x0AFFF800读取0x0AFFF800扇区的数据如下:

这个扇区实际上是逻辑分区G的DBR扇区,记录了G盘的基本信息
第二个表项记录了下一个逻辑分区 H 的EBR扇区的起始地址和扇区总数量。其中EBR扇区的起始地址为00 21 98 00,同样是一个相对地址实际扇区为0x0AFFF000 + 0x = 0x0B218800,读取0x0B218800扇区的数据如下:

这512字节是逻辑分区H的EBR扇区同样提取DPT的前两个表项:


与上一个EBR扇区类似,第一个表项的LBA寻址的起始扇区(00 00 08 00)仍是一个相对偏移指向该EBR所对应的逻辑分区的起始地址,其實际扇区为:0x0B218800 + 0x = 0x0B219000实际字节偏移为0x0B2字节每扇区 = 0x,从该字节处读取512字节数据可以得到分区H的DBR扇区这里就不再截图。第二个表项的LBA寻址起始扇區(00 2D 58 00)同样是一个相对偏移指向下一个逻辑分区(I:)的EBR扇区,其实际扇区为MBR扇区DPT第四个表项的起始扇区加上该相对偏移即0x0AFFF000 + 0x002D5800 = 0x0B2D4800。该扇区的數据为:

在该EBR扇区中DPT的第一个表项仍使用相对偏移指出本逻辑分区(I:)的起始扇区,这个扇区就是分区I:的DBR扇区第二个表项全0,表示该邏辑分区即是最后一个逻辑分区
总结一下,在Windows系统下如果采用MBR的引导方式当分区个数大于等于4的时候,一般情况下系统会将前三个分區设为主分区第四个作为扩展分区(扩展分区中包含若干个逻辑分区)。MBR扇区的DPT中前三个表项可以直接定位前三个主分区的DBR扇区第四个表項指向第一个逻辑分区的EBR扇区,根据EBR中的DPT前两个表项分别可以定位本逻辑分区的DBR扇区和下一个逻辑分区的EBR扇区由此逻辑分区链接成一条鏈进行管理。
 
下面给出NTFS和FAT32的DBR扇区格式注意一点:NTFS下的备份DBR在分区的最后一个扇区,FAT32下的备份DBR一般在第六个扇区
 
 //可用扇区数 = 总扇区数-保留扇区-FAT表占用扇区
 
下面是一个FAT32分区的DBR扇区数据,具体含义在上述结构体中已做声明这里就不再展开:

下面是一张以前的FAT32分区DBR扇区的数据,部分字段含义做了解释:

附-磁盘分区类型标志表:

我要回帖

更多关于 硬盘都是主分区好不好 的文章

 

随机推荐