磁盘分区表介绍

引述

常见的硬盘分区表有两种,分别是

GPT GUID磁盘分区表(GUID Partition Table,缩写:GPT)

MBR 主引导记录(MBR,Main Boot Record)

不同的硬盘分区表要配合不同的BIOS引导方式以进入操作系统。

MBR分区表介绍

MBR,Master Boot Record。一般位于磁盘的0柱面,0磁头,1扇区。其中包括主引导程序,(446Byte),DPT(Disk Partition Table,即分区表,其中记录着电脑中有多少分区,分区的起始位置,大小及其文件系统)(64Byte),和硬盘有效标识(55AA)(2Byte)(结束标识)。

由MBR结构可知,MBR只能存储64字节的分区表,而记录每个分区信息需要16字节。所以使用MBR型分区结构的磁盘,最多只能有四个主分区。

DPT由最多4个16字节的主分区构成。每个16字节的分区信息又由1字节的激活标识符,3字节的分区物理起始位置信息,1字节的分区类型,3字节的物理结束位置信息,4字节的逻辑起始位置信息,以及4字节的分区扇区总数组成。

在这里举一个分区表的例子。

如果某一分区在DPT中数据如下:

80 01 01 00 07 FE BF FC 3F 00 00 00 7E 86 BB 00

那么该字段含义(16转10进制方法自行百度):

80:该分区为磁盘上的活动分区,80是这个分区的激活标志,表示该分区上有系统可引导。

01 01 00:表示分区开始的磁头号为1,开始的扇区号为1,开始的柱面号为0。即分区起始位置。

07表示该分区的文件系统为NTFS,另外还有常用的04(FAT16),0B(FAT32)等。

FE BF FC:表示分区结束的磁头号为254,扇区号为63,柱面号为764,即分区结束位置。

3F 00 00 00:表示首扇区的的相对扇区号为63。

7E 86 BB 00表示总扇区数为12289662。

看了DPT的数据我们可知,4字节32bit,那么一个主分区的扇区总数就不能超出232个。每个扇区大小为512字节,那么单分区最大容量即为2,199,023,255,552‬字节。即为2TB。这也是为什么MBR最多支持单分区2TB容量的原因。

所以MBR重装系统的时候,一般分区的时候,一般最多4个主分区,每个最大2TB,也就是说我们的MBR仓储盘最多8TB

(PS:啥家庭啊买个8TB机械当仓储盘,家里有矿啊)

那么如果你真的买了一个8TB的机械硬盘当仓储盘,系统还是采用MBR引导方式,那么你就只能分四个单分区2TB的分区了。因为其他方案已经不被MBR支持了。

根据以上对MBR的分析,MBR引导方式的操作系统所在的磁盘分区上,是要有0x80可引导标识的。带有该标识的分区,我们将其称之为活动分区。

设置活动分区的方法也非常简单,使用Diskgenius(DG)工具,选中你想激活的分区,右键,将此分区设置为活动分区,保存更改。

一般Windows系统的主引导程序为Windows NT引导程序。XP,2003及以下系统使用NT5.0引导程序。(特征为系统盘根目录的Boot.ini和NTLDR),Win7以后使用NT 6.0引导程序(特征为系统盘下的Bootmgr和Boot文件夹及里面的BCD文件),该主引导记录可使用BOOTICE小工具来更改。

GPT分区表介绍

全局唯一标识分区表(GUID Partition Table,别名GUID分区表,缩写GPT)是一个1实体磁盘分区表的结构布局标准。为可扩展固件接口(Extensible Firmware Interface,缩写EFI)标准的一部分。作用就是替代那32bit来存储逻辑位置大小信息的MBR分区表。GPT可以分配64Bits给逻辑块地址,所以对于单扇区大小512Byte的磁盘,GPT的最大单分区容量可以达到恐怖的264字节,也就是8,589,934,592‬TB。(我觉得有生之年我看不到这么大的硬盘。。。)

以下为GPT的结构。

与传统MBR一样,GPT也使用LBA取代了CHS。传统MBR信息存储于LBA 0,GPT头文件存储于LBA1,接下来才是分区表。64位操作系统使用32扇区作为GPT分区表,接下来的LBA 3.4是硬盘上第一个扇区的开始。为了减少分区表损坏的风险,GPT在磁盘最后还保存了一份分区表的副本。另外GPT并不使用CHS,所以CHS问题并不会存在。与MBR 1字节的分区标识不同,GPT提供了16字节的全局唯一标识符(GUID)来标识分区类型。这使分区类型发生冲突的概率更小。

介绍这么多,GPT磁盘没有活动分区,那么它是怎么找到的启动分区呢。其实很简单,16字节的GUID就可以解决这个问题。EFI引导分区有自己唯一的GUID:C12A7328-F81F-11D2-BA4B-00A0C93EC93B。Windows将会识别带有该GUID的分区为EFI引导分区,并从里面读取引导数据并加载BCD启动菜单。

与MBR不同,该方式的系统引导将需要多建立一个256MB左右的EFI分区来存储引导数据。然后再在cmd下执行以下指令

1
bcdboot C:\Windows /s X: /f uefi /l zh-cn

其中:

C:\Windows 硬盘系统目录

/s X: 指定ESP分区所在磁盘,根据实际情况修改(一般PE挂载出来都是X盘)

/f uefi 指定启动方式为uefi

/l zh-cn 指定uefi启动界面语言为简体中文。

别忘了在BIOS里将启动类型从Legacy改成UEFI并开启Secure Boot!

别忘了在BIOS里将启动类型从Legacy改成UEFI并开启Secure Boot!

别忘了在BIOS里将启动类型从Legacy改成UEFI并开启Secure Boot!

不然会不开机!Legacy模式下的BIOS是识别不了GPT磁盘的!!

具体更改随各家主板BIOS设计而定,一般都在Boot那个选项卡下。

区分硬盘分区表类型方法

可以使用分区助手看你的C盘后面或前面是否有一个几百MB的分区,新版本分区助手似乎可以直接显示是否是GPT分区。

其实最直观的看GPT分区的方法我认为,一般只要是UEFI启动类型的电脑都是GPT。(比如开机不是win10祖传小窗户而是主板logo,这种是UEFI启动的比较直观的表现。)

GUID附表

引导相关(公用)

分区类型 GUID
EFI文件系统(标准) C12A7328-F81F-11D2-BA4B-00A0C93EC93B

Windows

分区类型 GUID
微软保留分区 E3C9E316-0B5C-4DB8-817D-F92DF00215AE
基本数据分区 EBD0A0A2-B9E5-4433-87C0-68B6B72699C7
逻辑软盘管理工具元数据分区 5808C8AA-7E8F-42E0-85D2-E1E90434CFB3
逻辑软盘管理工具数据分区 AF9B60A0-1431-4F62-BC68-3311714A69AD

Mac OS X

分区类型 GUID
HFS+分区 48465300-0000-11AA-AA11-00306543ECAC
UFS 55465300-0000-11AA-AA11-00306543ECAC
启动分区 426F6F74-0000-11AA-AA11-00306543ECAC
RAID分区 52414944-0000-11AA-AA11-00306543ECAC
RAID分区(Offline) 52414944-5F4F-11AA-AA11-00306543ECAC
标签 4C616265-6C00-11AA-AA11-00306543ECAC

ChromeOS

分区类型 GUID
Linux数据(标准) EBD0A0A2-B9E5-4433-87C0-68B6B72699C7
ChromeOS内核 FE3A2A5D-4F32-41A7-B725-ACCC3285A309
ChromeOS根文件系统 3CB8E202-3B7E-47DD-8A3C-7FF2A13CFCEC
ChromeOS固件 CAB6E88E-ABF3-4102-A07A-D4BB9BE3C1D3
ChromeOS将来使用 2E0A753D-9E48-43B0-8337-B15192CB1B5E

HP-UX

分区类型 GUID
数据分区 75894C1E-3AEB-11D3-B7C1-7B03A0000000
服务分区 E2A1E728-32E3-11D6-A682-7B03A0000000

Linux

分区类型 GUID
数据分区 EBD0A0A2-B9E5-4433-87C0-68B6B72699C7
RAID分区 A19D880F-05FC-4D3B-A006-743F0F84911E
交换分区 0657FD6D-A4AB-43C4-84E5-0933C84B4F4F
逻辑卷管理员(LVM)分区 E6D6D379-F507-44C2-A23C-238F2A3DF928
保留 8DA63339-0007-60C0-C436-083AC8230908

FreeBSD

分区类型 GUID
启动分区 83BD6B9D-7F41-11DC-BE0B-001560B84F0F
数据分区 516E7CB4-6ECF-11D6-8FF8-00022D09712B
交换分区 516E7CB5-6ECF-11D6-8FF8-00022D09712B
UFS分区 516E7CB6-6ECF-11D6-8FF8-00022D09712B
Vinum volume manager分区 516E7CB8-6ECF-11D6-8FF8-00022D09712B
ZFS分区 516E7CBA-6ECF-11D6-8FF8-00022D09712B

/Author: Skrshadow/

/2020.02.18/