4. MBR分区表深度解析
主引导记录(MBR)是传统 BIOS 引导流程中磁盘的第一个扇区(LBA 0),大小为 512 字节。它不仅是启动代码的载体,更是磁盘分区信息的核心存储结构。理解 MBR 的布局,是掌握传统引导架构和向 UEFI 过渡的基础。
4.1 MBR 整体结构(512 字节)
MBR 扇区被严格划分为三个部分:引导代码、分区表、以及结束签名。任何偏移或大小错误都会导致磁盘无法被 BIOS 识别或引导。
| 偏移(十六进制) | 大小(字节) | 内容 | 说明 |
|---|---|---|---|
| 0x0000 – 0x01BD | 446 | 引导代码(Boot Code) | 第一阶段引导程序,负责加载活动分区的 VBR。 |
| 0x01BE – 0x01FD | 64 | 主分区表(Partition Table) | 4 个分区表项,每个 16 字节。 |
| 0x01FE – 0x01FF | 2 | 有效签名(Signature) | 固定值 0x55AA,标识该扇区为有效 MBR。 |
关键约束: 分区表仅占用 64 字节,因此最多只能定义 4 个主分区。这是 MBR 架构最根本的容量和数量限制。
4.2 分区表项结构(16 字节)
每个分区表项精确描述一个分区的起始位置、大小和类型。以下是 16 字节的详细定义:
| 偏移(字节) | 大小(字节) | 字段 | 说明 |
|---|---|---|---|
| 0 | 1 | 引导标志 | 0x80 表示活动(可引导),0x00 表示非活动。 |
| 1-3 | 3 | 起始 CHS 地址 | 磁头/扇区/柱面(旧式寻址,通常用 LBA 替代)。 |
| 4 | 1 | 分区类型 | 标识文件系统或用途(如 0x07 为 NTFS)。 |
| 5-7 | 3 | 结束 CHS 地址 | 分区结束的 CHS 坐标。 |
| 8-11 | 4 | 起始 LBA 地址 | 分区的第一个扇区号(小端序)。 |
| 12-15 | 4 | 分区总扇区数 | 分区包含的扇区总数(小端序)。 |
实践要点: 现代操作系统几乎完全使用 LBA 地址(偏移 8-15 字节)进行寻址,CHS 字段通常被忽略或设置为最大值。LBA 使用 32 位字段,因此单个分区最大支持 2^32 × 512 字节 = 2 TB。
4.3 常见分区类型代码
分区类型字节(偏移 4)是 MBR 识别分区内容的关键。以下是最常用的类型代码:
| 类型代码(十六进制) | 文件系统 / 用途 | 常见操作系统 |
|---|---|---|
0x00 |
空表项(未使用) | — |
0x01 |
FAT12 | DOS / 早期 Windows |
0x04 |
FAT16(小于 32 MB) | DOS / Windows 9x |
0x06 |
FAT16(大于 32 MB) | DOS / Windows 9x |
0x07 |
NTFS / HPFS | Windows NT / 10/11 |
0x0B |
FAT32(CHS 寻址) | Windows 95 OSR2+ |
0x0C |
FAT32(LBA 寻址) | Windows / Linux |
0x82 |
Linux swap | Linux |
0x83 |
Linux native(ext2/3/4) | Linux |
0x05 / 0x0F |
扩展分区 | 所有支持 MBR 的系统 |
4.4 扩展分区与逻辑分区
由于 MBR 主分区表只有 4 个表项,为了突破这一限制,引入了扩展分区和逻辑分区的概念。这是一种通过链表结构在 MBR 框架内创建更多分区的机制。
4.4.1 工作原理
- 主分区: 4 个表项中的一个被标记为“扩展分区”(类型代码
0x05或0x0F)。 - 扩展引导记录(EBR): 扩展分区的第一个扇区是一个类似 MBR 的结构,但它不包含引导代码,只包含一个分区表项(指向下一个逻辑分区)和一个指向自身的链接。
- 逻辑分区: 每个 EBR 定义了一个逻辑分区的起始位置和大小。通过链式 EBR,可以创建任意数量的逻辑分区。
兼容性陷阱: 扩展分区本身不能直接存储数据,它只是一个“容器”。所有数据必须存放在逻辑分区中。此外,逻辑分区的链式结构在磁盘末尾或中间断裂会导致数据丢失,因此不建议在 MBR 磁盘上频繁调整扩展分区大小。
4.5 MBR 的局限性总结
尽管 MBR 在 PC 历史上发挥了重要作用,但其设计缺陷在当今大容量存储时代愈发明显:
- 分区数量限制: 最多 4 个主分区,或 3 个主分区 + 1 个扩展分区(内含多个逻辑分区)。
- 容量上限: 32 位 LBA 寻址最大支持 2 TB 磁盘。超过 2 TB 的部分无法被 MBR 识别。
- 单点故障: MBR 位于磁盘第一个扇区,如果该扇区损坏或被覆盖,整个磁盘数据将无法访问。
- 缺乏冗余: 没有备份机制,也没有校验和来验证分区表完整性。
迁移趋势: 由于上述限制,现代操作系统(Windows 10/11、Linux 发行版)在 UEFI 模式下默认使用 GPT(GUID 分区表)。GPT 支持 128 个主分区、9.4 ZB 容量,并包含备份分区表,彻底解决了 MBR 的架构瓶颈。