MBR分区表

目前来说,比较主流的两种硬盘的分区表是MBR和GPT(GUID)。今天小七带大家了解一下比较旧一点的MBR分区表(相对于GPT)。

本文越往后的部分难度越大,各位看官老爷可根据自己的实际需要阅读。

1、简介

MBR这个概念首次出现,是在1983年的IBM PC DOS 2.0操作系统当中,因此也被称为DOS分区结构。实际上,MBR分区结构是一种应用非常广泛的硬盘分区结构,不仅仅是DOS,包括windows系列操作系统、Linux以及基于X86架构的UNIX操作系统等平台均有使用。

MBR的英文全称是Main Boot Record(一说Master Boot Record),翻译过来的中文名称是主引导记录。

它主要有以下几个特点:

1、在我们常见的电脑中,一般是BIOS+MBR、(U)efi+GPT的组合;

2、MBR分区表中单个分区最大仅支持2TB,而整个分区表最大也是仅支持2TB的硬盘;

3、MBR分区表最大只支持四个主分区(可少不可多),如果觉得四个不够用,可以使用三个主分区+一个扩展分区的组合(扩展分区仅能存在一个,但扩展分区下可以分出无数个逻辑分区);

▲图为MBR分区常见的两种组成

2、结构

MBR分区表占用一个扇区,位于硬盘的0磁头、0柱面、1扇区。

这里需要引用一下度娘百科对于磁头柱面扇区这三个概念的解释。

磁头(Heads):每张磁片的正反两面各有一个磁头,一个磁头对应一张磁片的一个面。因此,用第几磁 头就可以表示数据在哪个磁面。

柱面(Cylinder):所有磁片中半径相同的同心磁道构成“柱面”,意思是这一系列的磁道垂直叠在一起,就形成一个柱面的形状。简单地理解,柱面数=磁道数。

扇区(Sector):将磁道划分为若干个小的区段,就是扇区。虽然很小,但实际是一个扇子的形状,故称为扇区。

▲图为磁头、柱面、扇区示意图

①不管是CHS寻址还是LBA寻址,都需要知道磁头柱面和扇区来对数据进行定位;

②通常来说,一个扇区的大小为512字节(Byte);

③该扇区为隐藏扇区,实际上,0磁头0柱面的扇区均为隐藏扇区,一般的硬盘访问命令无法访问,因此MBR分区表放在此处比较安全,不容易遭到破坏,同理,许多病毒也会隐藏在这里,不容易被查杀。

由于MBR扇区中大部分都被MBR所占领,因此这个扇区就被称为MBR扇区。而MBR扇区主要是由MBR、DPT和结束标识三个部分组成。

▲图为标准MBR结构

3、工作原理

MBR的产生并不依赖于任何一个操作系统,在电脑开机通电后,BIOS进行自检,自检完成后就开始执行MBR中的启动代码(Bootloader),通过读取启动代码来确定需要引导的系统。因此,双系统或者是多系统安装完成之后,需要修改引导启动项,即为修改此处的启动代码(Bootloader)。

执行完启动代码之后,系统下一步就会读取MBR扇区中的最后两个字节,如果是55AA,则继续读取磁盘分区表DPT来确定是否有活动分区,从而启动系统;如果不是55AA,系统会认为该MBR为非法MBR,系统将停止操作并报错。

▲图为MBR分区表的硬盘开机过程

这里再额外提一下。

MBR中的选用磁盘标识,这个在MBR分区中比较重要。如果安装的是windows操作系统的话,系统在启动时需要依赖该磁盘签名来识别硬盘并确定该磁盘是否初始化。

而DPT的作用其实非常简单,就是管理磁盘的分区信息。如果DPT被破坏,那么系统将无法识别该磁盘上的所有分区,并且有可能会提示需要格式化磁盘。

一般小白遇到这种情况会比较无奈,只能格式化,对磁盘中宝贵的数据说拜拜,但是,其实只要修复DPT,就可以读取分区,找回数据,实际上,硬盘的数据一直都在那里。那怕是对硬盘进行一般的格式化操作,也只是将DPT中对应的分区的数据清空,并没有影响到原来的在其他扇区的数据,此时只要不进行数据的读写操作(防止覆盖原有数据),还是有可能找回丢失的数据的。

4、DPT

DPT其实有挺多可以讲的地方,这里拿一个分区(16Byte)为例,讲解一下MBR分区最大只能识别2TB硬盘的原因。

5、分区项表内容及含义

注:1 Byte=8 bit

▲图为MBR中的DPT的分区项表的内容及含义

再对其作进一步的解释:

第1字节的引导标识:如果该分区内安装了操作系统,则该分区必须为活动分区,方可成功引导该分区内的操作系统(即为80H);

第5字节的分区类型符:记录该分区的类型,每一种类型都有一个对应的值,如00H——表示该分区未用(即没有指定,DOS和win不识别该类型分区)、06H——FAT16分区;0BH——FAT32分区、 07H——NTFS分区等;

第2、3、4、6、7、8字节:记录了这个分区的起始和结束磁头、扇区、柱面,即可确定该分区在硬盘中的位置以及该分区的容量;

最后的8个字节就是MBR分区为何最大只能识别2TB容量的原因了。

前提知识背景:

① 计算机中采用2进制,bit是最小的大小计量单位;

② 1 Byte=8 bit;

③ 一个扇区的大小是512Byte;

④ Byte、KB、MB、GB、TB、PB这六者按照从小到大的顺序排列,且相邻两者间差1024倍(即2^10);

⑤ 在上面的缩写中,大写的B表示Byte,小写的b表示bit,两者相差8倍;

由于只有4 Byte来记录本分区的总扇区数,4 Byte=32 bit,在2进制即有2^32种状态,假设全部为1,则最多有2^32个扇区。即

所以MBR分区中单个分区最多只能识别2TB容量,而由于记录已使用的扇区的字节数也是4,所以整个分区最多也只能识别2TB容量。

6、扩展分区

前面我们已经提到了当四个主分区无法满足需求的时候,可以使用三个主分区+一个扩展分区的方法,在扩展分区下,理论上可以分出无数个分区(实际还要看操作系统的限制等其他因素)。

这里还要介绍一个概念——EBR(Extended Boot Record),即扩展分区引导记录。其原理和工作模式与MBR非常相似,但它是链式的,也就是说一个EBR不够用,可以再增加一个,新增加的EBR链接在旧的EBR之后,一个链接着一个,就像链条一样。理论上就可以实现无数个分区。

MBR分区表的内容介绍到这里就结束了,如果对它还有兴趣的话,或者觉得这里的介绍太过简单的话,可以去查询一些相关书籍和论坛。另外,如果文中有任何错误,还望不吝赐教。