分区表的概念

磁盘分区表(Partition Table)是一种描述磁盘分区信息的数据结构,它记录了磁盘上各个分区的起始位置、大小、类型等关键信息,操作系统通过读取分区表来识别磁盘上的分区,进而对各个分区进行访问和管理。目前,比较常用的两种分区表,分别是:

  • MBR(主引导记录)分区表:存储在磁盘的第一个扇区(0 号扇区),这个扇区被称为主引导扇区(MBR 扇区)。主引导扇区共 512 字节,其中前 446 字节是主引导程序(MBR),用于引导操作系统;紧接着的 64 字节就是分区表,用来记录磁盘的分区信息,每个分区表项占用 16 字节,所以最多能记录 4 个主分区的信息;最后的 2 字节是分区有效标志(签名),固定值为 0x55AA,用于标识该扇区是一个有效的主引导扇区。
  • GPT(全局分区表分区表:GPT 分区表在磁盘上的存储位置相对复杂。它主要存储在磁盘开头的一个 GPT 头结构之后,GPT 头之后是分区表项数组,一般情况下,GPT 分区表的第一个备份存储在磁盘的末尾。GPT 分区表的起始位置由磁盘的第一个扇区(保护 MBR 所在扇区)中的信息来指示,GPT 头中包含了分区表的大小、位置、校验和等关键信息,用于操作系统正确读取和验证分区表的内容。

MBR分区表

MBR 位于磁盘的第一个扇区(0 号扇区),共 512 字节。其中 446 字节是主引导程序,用于启动计算机时执行硬件检测、初始化等操作,并负责查找可引导的分区。主引导程序后面的 64 字节存放的是分区表,分为 4 个 16 字节的分区表项,每个表项描述一个主分区或扩展分区的相关信息。最后的 2 字节是签名(值为 0x55AA),用于标识该扇区是有效的 MBR 扇区。

每个分区表项16个字节大小,包含分区的启动标志(用来指示该分区是否为可引导分区)、起始磁头、扇区、柱面、分区类型(如 FAT32、NTFS 等)、结束磁头、扇区、柱面、分区相对扇区数(从磁盘开始到该分区的起始位置的扇区数)、分区总扇区数等信息。操作系统通过读取这些信息,确定每个分区在磁盘上的位置和大小等关键属性。

计算机启动时,BIOS 首先加载 MBR 中的主引导程序。主引导程序会扫描 MBR 分区表,寻找标记为可引导的分区(启动标志为活动)。找到后,主引导程序将控制权交给该分区的引导扇区,由引导扇区进一步加载操作系统。如果有扩展分区,主引导程序会将扩展分区的相关信息传递给后续处理程序,以便识别和访问扩展分区内的逻辑分区。

扩展分区的概念

扩展分区是计算机磁盘分区的一种类型,在 MBR(主引导记录)分区方式中较为常见。

由于 MBR 分区表最多只能容纳 4 个主分区表项,如果用户需要创建多于 4 个的分区,就需要使用扩展分区。扩展分区本身不能直接使用,它是一个容器,用于容纳多个逻辑分区。通过创建扩展分区,突破了主分区数量的限制,从而可以在磁盘上划分出更多的分区来满足不同的存储需求,比如区分系统文件存储区和个人数据存储区等。

扩展分区在 MBR 分区表中占据一个分区表项,其本质上是一个链接列表。在扩展分区的第一个扇区(引导扇区)中,存储着下一个逻辑分区的起始位置等信息,依此类推,通过这种链式结构可以管理多个逻辑分区。每个逻辑分区都有自己独立的文件系统,并且可以像主分区一样进行格式化、存储数据等操作。

逻辑分区的概念

逻辑分区是建立在扩展分区之上的。一个扩展分区可以划分出多个逻辑分区,逻辑分区是扩展分区的具体表现形式,用户实际使用的就是这些逻辑分区来存储数据。例如,当用户在磁盘管理工具中创建一个逻辑分区时,实际上是在扩展分区的空间内划分出一部分空间,并为其分配文件系统等属性。

扩展分区虽然解决了 MBR 分区表主分区数量有限的问题,但也存在一定的局限性。比如,由于其链式结构的特点,如果扩展分区的引导扇区损坏,可能会导致后续所有逻辑分区无法访问;而且在某些操作系统或工具中,对扩展分区和逻辑分区的管理和操作可能相对复杂。

随着 GPT 分区方式的出现,由于 GPT 分区表对分区数量限制大大放宽,扩展分区的概念在 GPT 分区中就不再使用了,GPT 可以直接支持较多数量的主分区,使用起来更加灵活方便。

GPT分区表

GPT 分区表在磁盘的开头部分有一个 GPT 头,记录了 GPT 分区表的位置、大小、校验和等关键信息。GPT 头之后是分区表项数组,每个分区表项大小固定(通常为 128 字节),最多可包含 128 个分区表项。为了提高数据的可靠性,GPT 分区表在磁盘的末尾还存储了一份备份

每个GPT 分区表项包含:分区的唯一标识符(GUID)、分区类型 GUID、分区名称、起始 LBA(逻辑块地址)、结束 LBA、属性标志(如只读、隐藏等)以及分区的创建和修改时间等信息。操作系统通过这些详细信息,精确地定位和管理每个分区。

在基于 UEFI 的系统中,UEFI 固件首先读取磁盘的 GPT 头,验证 GPT 的完整性和有效性。然后,UEFI 根据 GPT 头中的信息找到分区表,扫描分区表项,查找包含操作系统引导文件的分区(通常是 EFI 系统分区)。找到后,UEFI 从该分区加载引导加载程序,进而启动操作系统。

GPT头

GPT头一共512个字节,描述了GPT分区表的地址、大小等关键信息:

保护MBR

保护 MBR(Protective MBR)是 GPT(全局唯一标识分区表)磁盘中的一个重要组成部分,主要用于兼容不支持 GPT 的系统和软件。
保护 MBR 位于 GPT 磁盘的第一个扇区(LBA 0),大小为 512 字节。它本质上是一个特殊的 MBR 分区表,其中只有一个分区表项,该分区表项将整个磁盘标记为一个扩展分区,分区类型一般为 0x0F(表示扩展分区)。这个分区表项的起始和结束地址覆盖了整个磁盘的范围,使得不支持 GPT 的系统认为整个磁盘是一个大的分区,而不是多个独立的 GPT 分区。

有了保护MBR,就可以防止不支持 GPT 的磁盘工具对 GPT 磁盘进行误操作。在不支持 GPT 的系统中,这些系统会认为磁盘只有一个巨大的扩展分区,从而避免对磁盘进行格式化、分区等可能破坏 GPT 分区表的操作。因为如果不支持 GPT 的工具直接对 GPT 磁盘进行操作,可能会导致 GPT 分区表损坏,进而使磁盘上的数据丢失。

保护 MBR 和 GPT 头(位于 LBA 1)共同构成了 GPT 磁盘的基础结构。保护 MBR 在前,主要负责向下兼容旧系统;GPT 头则包含了 GPT 分区表的关键信息,如分区表的位置、大小、校验和等,用于支持 GPT 的系统和工具识别和管理 GPT 分区表。两者相互配合,既保证了对旧系统的兼容性,又能让新系统充分利用 GPT 分区表的优势,如支持大容量磁盘、更多的分区数量等。
保护 MBR 在 GPT 磁盘中起到了重要的兼容性和保护作用,确保了 GPT 磁盘在不同环境下的安全性和稳定性。