搜档网
当前位置:搜档网 › 硬盘MBR和GPT分区详解

硬盘MBR和GPT分区详解

硬盘MBR和GPT分区详解
硬盘MBR和GPT分区详解

硬盘MBR和GPT分区详解

目前磁盘分区有两种形式:GPT分区和MBR分区。MBR相比而言比较常见,大多数磁盘都是采用这种分区形式。MBR分区和GPT分区的区别在于:MBR最多只支持4个主分区,GPT能够支持128个主分区。然而GPT分区形式在重装系统需要主板的EFI支持,所以导致出现上面的这种情况。因此解决的办法就是将分区形式转换为MBR分区形式。但是在转换之前必须要做好数据备份,将磁盘里重要的东西全部拷出来,因为只有整个磁盘全部为空时,才能够进行转换。

传统的分区方案(称为MBR分区方案)是将分区信息保存到磁盘的第一个扇区(MBR 扇区)中的64个字节中,每个分区项占用16个字节,这16个字节中存有活动状态标志、文件系统标识、起止柱面号、磁头号、扇区号、隐含扇区数目(4个字节)、分区总扇区数目(4个字节)等内容。由于MBR扇区只有64个字节用于分区表,所以只能记录4个分区的信息。这就是硬盘主分区数目不能超过4个的原因。后来为了支持更多的分区,引入了扩展分区及逻辑分区的概念。但每个分区项仍用16个字节存储。GPT磁盘是指使用GUID分区表的磁盘,是源自EFI标准的一种较新的磁盘分区表结构的标准。与普遍使用的主引导记录(MBR)分区方案相比,GPT提供了更加灵活的磁盘分区机制。

MBR的全称是Master Boot Record(主引导记录),MBR早在1983年

IBM PC DOS 2.0中就已经提出。之所以叫“主引导记录”,是因为它是存在于驱动器开始部分的一个特殊的启动扇区。这个扇区包含了已安装的操作系统的启动加载器和驱动器的逻辑分区信息。

主引导扇区是硬盘的第一扇区。它由三个部分组成,主引导记录MBR、硬盘分区表DPT和硬盘有效标志。在总共512字节的主引导扇区里MBR占446个字节,偏移地址0000H--0088H),它负责从活动分区中装载,并运行系统引导程序;第二部分是Partition table区(DPT分区表),占64个字节;第三部分是Magic number,占2个字节。

MBR扇区代码

在DPT共64个字节中,以16个字节为分区表项单位描述一个分区的属性。也就是说,第一个分区表项描述一个分区的属性,一般为基本分区。第二个分区表项描述除基本分区外的其余空间,一般而言,就是我们所说的扩展分区。这部分的大体说明见表1。

DPT代码分析

注:上表中的超过1字节的数据都以实际数据显示,就是按高位到地位的方式显示。存储时是按低位到高位存储的。两者表现不同,请仔细看清楚。以后出现的表,图均同。

也可以在winhex中看到这些参数的意义:

说明:每个分区表项占用16个字节,假定偏移地址从0开始。如图3的分区表项3。分区表项4同分区表项3。

1、0H偏移为活动分区是否标志,只能选00H和80H。80H为活动,00H为非活动。其余值对microsoft而言为非法值。

2、重新说明一下(这个非常重要):大于1个字节的数被以低字节在前的存储格式格式(little endian format)或称反字节顺序保存下来。低字节在前的格式是一种保存数的方法,这样,最低位的字节最先出现在十六进制数符号中。例如,相对扇区数字段的值0x3F000000的低字节在前表示为0x0000003F。这个低字节在前的格式数的十进制数为63。

3、系统在分区时,各分区都不允许跨柱面,即均以柱面为单位,这就是通常所说的分区粒度。有时候我们分区是输入分区的大小为7000M,分出来却是6997M,就是这个原因。偏移2H和偏移6H的扇区和柱面参数中,扇区占6位(bit),柱面占10位(bit),以偏移6H为例,其低6位用作扇区数的二进制表示。其高两位做柱面数10位中的高两位,偏移7H组成的8位做柱面数10位中的低8位。由此可知,实际上用这种方式表示的分区容量是有限的,柱面和磁头从0开始编号,扇区从1开始编号,所以最多只能表示1024个柱面×63个扇区×256个磁头×512byte=8455716864byte。即通常的8.4GB(实际上应该是7.8GB左右)限制。实际上磁头数通常只用到255个(由汇编语言的寻址寄存器决定),即使把这3个字节按线性寻址,依然力不从心。在后来的操作系统中,超过8.4GB 的分区其实已经不通过C/H/S的方式寻址了。而是通过偏移CH~偏移FH共4个字节32位线性扇区地址来表示分区所占用的扇区总数。可知通过4个字节可以表示2^32个扇区,即2TB=2048GB,目前对于大多数计算机而言,这已经是个天文数字了。在未超过8.4GB的分区上,C/H/S的表示方法和线性扇区的表示方法所表示的分区大小是一致的。也就是说,两种表示方法是协调的。即使不协调,也以线性寻址为准。(可能在某些系统中会提示出错)。超过8.4GB的分区结束C/H/S一般填充为FEH FFH FFH。即C/H/S所能表示的最大值。有时候也会用柱面对1024的模来填充。不过这几个字节是什么其实都无关紧要了。

虽然现在的系统均采用线性寻址的方式来处理分区的大小。但不可跨柱面的原则依然没变。本分区的扇区总数加上与前一分区之间的保留扇区数目依然必须是柱面容量的整数倍。(保留扇区中的第一个扇区就是存放分区表的MBR或虚拟MBR的扇区,分区的扇区总数在线性表示方式上是不计入保留扇区的。如果是第一个分区,保留扇区是本分区前的所有扇区。

附:分区表类型标志如图4

3.2 扩展分区

扩展分区中的每个逻辑驱动器都存在一个类似于MBR的扩展引导记录( Extended Boot Record, EBR),也有人称之为虚拟mbr或扩展mbr,意思是一样的。扩展引导记录包括一个扩展分区表和该扇区的标签。扩展引导记录将记录只包含扩展分区中每个逻辑驱动器的第一个柱面的第一面的信息。一个逻辑驱动器中的引导扇区一般位于相对扇区32或63。但是,如果磁盘上没有扩展分区,那么就不会有扩展引导记录和逻辑驱动器。第一个逻辑驱动器的扩展分区表中的第一项指向它自身的引导扇区。第二项指向下一个逻辑驱动器的EBR。如果不存在进一步的逻辑驱动器,第二项就不会使用,而且被记录成一系列零。如果有附加的逻辑驱动器,那么第二个逻辑驱动器的扩展分区表的第一项会指向它本身的引导扇区。第二个逻辑驱动器的扩展分区表的第二项指向下一个逻辑驱动器的EBR。扩展分区表的第三项和第四项永远都不会被使用。

通过一幅4分区的磁盘结构图可以看到磁盘的大致组织形式。如图5

关于扩展分区,如图6所示,扩展分区中逻辑驱动器的扩展引导记录是一个连接表。该图显示了一个扩展分区上的三个逻辑驱动器,说明了前面的逻辑驱动器和最后一个逻辑驱动器之间在扩展分区表中的差异。

除了扩展分区上最后一个逻辑驱动器外,表2中所描述的扩展分区表的格式在每个逻辑驱动器中都是重复的:第一个项标识了逻辑驱动器本身的引导扇区,第二个项标识了下一个逻辑驱动器的EBR。最后一个逻辑驱动器的扩展分区表只会列出它本身的分区项。最后一个扩展分区表的第二个项到第四个项被使用。

扩展分区表项中的相对扇区数字段所显示的是从扩展分区开始到逻辑驱动器中第一个扇区的位

移的字节数。总扇区数字段中的数是指组成该逻辑驱动器的扇区数目。总扇区数字段的值等于从扩展分区表项所定义的引导扇区到逻辑驱动器末尾的扇区数。

MBR分区表系统

所谓启动加载器,是一小段代码,用于加载驱动器上其他分区上更大的加载器。如果你安装了Windows,Windows启动加载器的初始信息就放在这个区域里——如果MBR 的信息被覆盖导致Windows不能启动,你就需要使用Windows的MBR修复功能来使其恢复正常。如果你安装了Linux,则位于MBR里的通常会是GRUB加载器。

分区表偏移地址为01BEH--01FDH,每个分区表项长16个字节,共64字节为分区项1、分区项2、分区项3、分区项4,分别对应MBR的四个主分区。

Magic number也就是结束标志字,偏移地址01FE--01FF的2个字节,固定为55AA,如果该标志错误系统就不能启动。

1、MBR区

MBR(Main Boot Record 主引导记录区)位于整个硬盘的0磁道0柱面1扇区。不过,在总共512字节的主引导扇区中,MBR只占用了其中的446个字节,另外的64个字节交给了DPT(Disk Partition Table硬盘分区表),最后两个字节“55,AA”是分区的结束标志。这个整体构成了硬盘的主引导扇区。

主引导记录中包含了硬盘的一系列参数和一段引导程序。其中的硬盘引导程序的主要作用是检查分区表是否正确并且在系统硬件完成自检以后引导具有激活标志的分区上的操作系统,并将控制权交给启动程序。MBR是由分区程序(如Fdisk.exe)所产生的,它不依赖任何操作系统,而且硬盘引导程序也是可以改变的,从而实现多系统共存。

下面,我们以一个实例让大家更直观地来了解主引导记录:

例:80 01 01 00 0B FE BF FC 3F 00 00 00 7E 86 BB 00在这里我们可以看到,最前面的“80”是一个分区的激活标志,表示系统可引导;“01 01 00”表示分区开始的磁头号为01,开始的扇区号为01,开始的柱面号为00;“0B”表示分区的系统类型是FAT32,其他比较常用的有04(FAT16)、07(NTFS);“FE BF FC”表示分区结束的磁头号为254,分区结束的扇区号为63、分区结束的柱面号为764;“3F 00 00 00”表示首扇区的相对扇区号为63;“7E 86 BB 00”表示总扇区数为12289622。

2、DBR区

DBR(Dos Boot Record)是操作系统引导记录区的意思。它通常位于硬盘的0磁道1柱面1扇区,是操作系统可以直接访问的第一个扇区,它包括一个引导程序和一个被称为BPB(Bios Parameter Block)的本分区参数记录表。引导程序的主要任务是当MBR将系统控制权交给它时,判断本分区跟目录前两个文件是不是操作系统的引导文件(以DOS为例,即是Io.sys和Msdos.sys)。如果确定存在,就把它读入内存,并把控制权交给该文件。BPB参数块记录着本分区的起始扇区、结束扇区、文件存储格式、硬盘介质描述符、根目录大小、FAT个数,分配单元的大小等重要参数。DBR 是由高级格式化程序(即Format.com等程序)所产生的。

3、FAT区

在DBR之后的是我们比较熟悉的FAT(File Allocation Table文件分配表)区。在解释文件分配表的概念之前,我们先来谈谈簇(Cluster)的概念。文件占用磁盘空间时,基本单位不是字节而是簇。一般情况下,软盘每簇是1个扇区,硬盘每簇的扇区数与硬盘的总容量大小有关,可能是4、8、16、32、64…… 同一个文件的数据并不一定完整地存放在磁盘的一个连续的区域内,而往往会分成若干段,像一条链子一样存放。这种存储方式称为文件的链式存储。由于硬盘上保存着段与段之间的连接信息(即FAT),操作系统在读取文件时,总是能够准确地找到各段的位置并正确读出。为了实现文件的链式存储,硬盘上必须准确地记录哪些簇已经被文件占用,还必须为每个已经占用的簇指明存储后继内容的下一个簇的簇号。对一个文件的最后一簇,则要指明本簇无后继簇。这些都是由FAT表来保存的,表中有很多表项,每项记录一个簇的信息。由于FAT对于文件管理的重要性,所以FAT有一个备份,即在原FAT的后面再建一个同样的FAT。初形成的FAT中所有项都标明为“未占用”,但如果磁盘有局部损坏,那么格式化程序会检测出损坏的簇,在相应的项中标为“坏簇”,以后存文件时就不会再使用这个簇了。FAT的项数与硬盘上的总簇数相当,每一项占用的字节数也要与总簇数相适应,因为其中需要存放簇号。FAT的格式有多种,最为常见的是FAT16和FAT32。

4、DIR区

DIR(Directory)是根目录区,紧接着第二FAT表(即备份的FAT表)之后,记录着根目录下每个文件(目录)的起始单元,文件的属性等。定位文件位置时,操作系统根据DIR中的起始单元,结合FAT表就可以知道文件在硬盘中的具体位置和大小了。

5、数据(DATA)区

数据区是真正意义上的数据存储的地方,位于DIR区之后,占据硬盘上的大部分数据空间。

MBR最大支持2.2TB磁盘,它无法处理大于2.2TB容量的磁盘。MBR还只支持最多4个主分区——如果你想要更多分区,你需要创建所谓“扩展分区”,并在其中创建逻辑分区。

MBR分区方案不是用得好好的吗?为什么要提出新的方案呢?那就让我们看看MBR分区方案有什么问题。前面已经提到了主分区数目不能超过4个的限制,这是其一,很多时候,4个主分区并不能满足需要。另外最关键的是MBR分区方案无法支持超过2TB容量的磁盘。因为这一方案用4个字节存储分区的总扇区数,最大能表示2的32次方的扇区个数,按每扇区512字节计算,每个分区最大不能超过2TB。磁盘容量超过2TB以后,分区的起始位置也就无法表示了。在硬盘容量突飞猛进的今天,2TB的限制将很快被突破。由此可见,MBR分区方案已经无法满足需要了。

GPT的全称是Globally Unique Identifier Partition Table,意即GUID分区表,它的推出是和UEFI BIOS相辅相成的,鉴于MBR的磁盘容量和分区数量已经不

能满足硬件发展的需求,GPT首要的任务就是突破了2.2T分区的限制,最大支持18EB 的分区。

GPT分区表系统

而在分区数量上,GPT会为每一个分区分配一个全局唯一的标识符,理论上GPT支持无限个磁盘分区,不过在Windows系统上由于系统的限制,最多只能支持128个磁盘分区,基本可以满足所有用户的存储需求。在每一个分区上,这个标识符是一个随机生成的字符串,可以保证为地球上的每一个GPT分区都分配完全唯一的标识符。

而在安全性方面,GPT分区表也进行了全方位改进。在早期的MBR磁盘上,分区和启动信息是保存在一起的。如果这部分数据被覆盖或破坏,事情就麻烦了。相对的,GPT 在整个磁盘上保存多个这部分信息的副本,因此它更为健壮,并可以恢复被破坏的这部分信息。GPT还为这些信息保存了循环冗余校验码(CRC)以保证其完整和正确——如果数据被破坏,GPT会发觉这些破坏,并从磁盘上的其他地方进行恢复。

UEFI BIOS详解

UEFI的全称是Unified Extensible Firmware Interface,意即统一可扩展固件接口,它是基于EFI 1.10标准为基础发展而来,值得注意的是在UEFI正式确立之前,Intel 就开始积极推进传统BIOS的升级方案,并最终确立了过渡方案EFI标准,直到2007年Intel将EFI标准的改进与完善工作交给Unified EFI Form进行全权负责,EFI标准则正式更名为UEFI。

相比传统BIOS,UEFI最大的几个区别在于:

1、编码99%都是由C语言完成;

2、一改之前的中断、硬件端口操作的方法,而采用了Driver/protocol的新方式;

3、将不支持X86实模式,而直接采用Flat mode(也就是不能用DOS了,现在有些 EFI 或 UEFI 能用是因为做了兼容,但实际上这部分不属于UEFI的定义了);

4、输出也不再是单纯的二进制code,改为Removable Binary Drivers;

5、OS启动不再是调用Int19,而是直接利用protocol/device Path;

6、对于第三方的开发,前者基本上做不到,除非参与BIOS的设计,但是还要受到ROM的大小限制,而后者就便利多了。

7、弥补BIOS对新硬件的支持不足的问题。

UEFI和GPT是相辅相成的,二者缺一不可,要想使用GPT分区表则必须是UEFI BIOS 环境。UEFI于用户而言最典型的特征就是使用了图形化界面,虽然还未达到操作系统界面的图形交互功能,但人性化的界面、鼠标的操作,已经将BIOS变得非常易用,对于不少电脑初级用户来说也可以很好的查看和设置BIOS的相关选项和功能。

除了图形化界面,UEFI相比传统BIOS,还提供了文件系统的支持,它能够直接读取FAT、FAT32分区中的文件,例如华硕、华擎等主板在UEFI BIOS环境下更新BIOS就可以直接读取U盘中的BIOS及其他文件,另外新的UEFI主板基本都提供了截屏功能,这些截屏图片都可以存储在U盘当中。

UEFI还有一个重要特性就是在UEFI下运行应用程序,这类程序文件通常以efi结尾。利用UEFI可以直接识别FAT分区中的文件,又有可直接在其中运行应用程序。我们就可以将Windows安装程序做成efi类型应用程序,然后把它放到任意FATA分区中直接运行即可。

GPT分区表

GUID分区表(简称GPT。使用GUID分区表的磁盘称为GPT磁盘)是源自EFI标准的一种较新的磁盘分区表结构的标准。与普遍使用的主引导记录(MBR)分区方案相比,GPT 提供了更加灵活的磁盘分区机制。它具有如下优点:

1、支持2TB以上的大硬盘。

2、每个磁盘的分区个数几乎没有限制。为什么说"几乎"呢?是因为Windows系统最多只允许划分128个分区。不过也完全够用了。

3、分区大小几乎没有限制。又是一个"几乎"。因为它用64位的整数表示扇区号。夸张一点说,一个64位整数能代表的分区大小已经是个"天文数字"了,若干年内你都无法见[1] 到这样大小的硬盘,更不用说分区了。

4、分区表自带备份。在磁盘的首尾部分分别保存了一份相同的分区表。其中一份被破坏后,可以通过另一份恢复。

5、每个分区可以有一个名称(不同于卷标)。

既然GUID分区方案具有如此多的优点,在分区时是不是可以全部采用这种方案呢?不是的。并不是所有的Windows系统都支持这种分区方案。请看下表:

多数的个人电脑系统还无法完美支持GPT磁盘。但是这并不意味着我们不需要了解GUID分区方案。别忘了,硬件的发展速度总是令人吃惊的。1.5TB的硬盘已经大量上市,2TB以上容量的硬盘很快就会普及,基于EFI的主板也正在销售。GUID分区方案终将成为主流。

Microsoft 保留分区 (MSR)

Microsoft 保留分区 (MSR) 在每个磁盘驱动器上保留空间以供以后的操作系统软件使用。GPT 磁盘不支持隐藏的扇区。以前使用隐藏扇区的软件组件现在为特定于组件的分区分配部分 MSR。例如,将基本磁盘转换为动态磁盘会导致该磁盘的 MSR 减少,由新创建的分区保留动态磁盘数据库。

每个 GPT 磁盘都必须包含一个 MSR。磁盘上分区的顺序应该为 ESP(如果有)、OEM(如果有)、MSR,后跟主数据分区。非常重要的一点是:一定要在主数据分区之前创建 MSR。必须在磁盘分区信息第一次写入驱动器的时候创建 MSR。如果分区由制造商进行,那么制造商必须同时创建 MSR。如果分区由 Windows 进行,那么在安装时创建 MSR。

保护MBR包含一个DOS分区表(LBA0),只包含一个类型值为0xEE的分区项,在小于2TB的磁盘上,大小为整个磁盘;在更大的磁盘上,它的大小固定为2TB。它的作用是阻止不能识别GPT分区的磁盘工具试图对其进行分区或格式化等操作,所以该扇区被称为“保护MBR”。实际上,EFI根本不使用这个分区表。

ESP系统分区

在可扩展固件接口 (EFI) 和 UEFI 系统上,这也可称为 EFI 系统分区或 ESP。该分区通常存储在主硬盘驱动器上。电脑启动到该分区。

该分区的最小规格为 100 MB,必须使用 FAT32 文件格式进行格式化。

该分区由操作系统加以管理,不应含有任何其他文件,包括 Windows RE 工具。

Microsoft?保留分区 (MSR)

MSR 大小为 128 MB。

建议将MSR添加到每个驱动器以进行驱动器管理。MSR是不能接收分区ID的保留分区。它无法存储用户数据。

其他实用程序分区

任何其他实用程序分区必须位于 Windows、数据和恢复映像分区之前。这可允许最终用户执行调整 Windows 分区大小或回收恢复映像分区等操作,而不影响系统实用程序。

Windows 分区和其他数据分区

对于 64 位版本,该分区的驱动器空间必须至少为 20 千兆字节 (GB),对于32 位版本,则为 16 GB。

该分区必须采用 NTFS 文件格式进行格式化。

用户完成全新安装体验 (OOBE) 后,该分区必须有足够的可用空间,即是 10 GB。

若要使用一键重置的“恢复电脑”功能,分区可能需要额外的可用空间。

恢复映像分区

如使用,该分区包含 Windows 恢复映像 (install.wim)。

该分区的大小必须包含 Windows 恢复映像(至少为 2 GB)的空间,此外,还要有足够的可用空间以便备份实用程序捕获到该分区:

它必须至少有 320 MB 的可用空间。

我们建议应至少具有 1 GB 的可用空间。

建议你将该分区放置在所有三个其他分区之后。这可让最终用户回收恢复映像分区使用的空间,而不影响其他系统实用程序。

EFI部分

EFI部分又可以分为4个区域:EFI信息区(GPT头)、分区表、GPT分区、备份区域。

分区表头

分区表头定义了硬盘的可用空间以及组成分区表的项的大小和数量。在使用64位Windows Server 2003的机器上,最多可以创建128个分区,即分区表中保留了128个项,其中每个都是128字节。(EFI标准要求分区表最小要有16,384字节,即128个分区项的大小)

分区表头还记录了这块硬盘的GUID,记录了分区表头本身的位置和大小(位置总是在LBA 1)以及备份分区表头和分区表的位置和大小(在硬盘的最后)。它还储存着它本身和分区表的CRC32校验。固件、引导程序和操作系统在启动时可以根据这个校验值来判断分区表是否出错,如果出错了,可以使用软件从硬盘最后的备份GPT中恢复整个分区表,如果备份GPT也校验错误,硬盘将不可使用。所以GPT硬盘的分区表不可以直接使用16进制编辑器修改。

起始于磁盘的LBA1,通常也只占用这个单一扇区。其作用是定义分区表的位置和大小。GPT头还包含头和分区表的校验和,这样就可以及时发现错误。

EFI信息区数据结构(分区表头)

EFI信息区位于磁盘的1号扇区(LBA1),也称为GPT头。其具体结构如下表所示

相关主题