3.2.2 分区表类型与选择(MBR/GPT)

3.2.2 分区表类型与选择(MBR/GPT)#

MBR(Master Boot Record)与 GPT(GUID Partition Table)是最常见的分区表类型。MBR 兼容性强,但存在容量与分区数量限制;GPT 适配现代硬件,支持大容量与更多分区,并具备更高可靠性。本节将给出原理草图、选择建议、完整命令示例与排错方法。

原理草图(结构对比)

文章图片

MBR 特点
- 最大支持约 2TB 磁盘(受 32 位地址限制)
- 最多 4 个主分区(或 3 主分区 + 1 扩展分区)
- 引导信息与分区表位于磁盘起始扇区,单点损坏风险较高
- 兼容 BIOS 传统启动方式

GPT 特点
- 支持超大容量磁盘(理论上可达 8ZB)
- 支持最多 128 个分区(可配置)
- 分区表有主副本,具备 CRC 校验,可靠性更强
- 支持 UEFI 启动(也可在部分场景与 BIOS 共存)

选择建议
- 小容量、兼容旧系统或旧硬件:优先 MBR
- 大容量磁盘、服务器与虚拟化环境:优先 GPT
- 需要 UEFI 启动或更高可靠性:选择 GPT
- 多系统双启动需考虑引导方式与兼容性

命令示例:查看磁盘分区表类型

# 查看整盘分区表类型(GPT/MBR)
sudo parted -s /dev/sdb print

# 仅列出块设备与分区表类型
lsblk -o NAME,SIZE,TYPE,PTTYPE,MODEL

# 查看磁盘UUID与分区UUID
sudo blkid /dev/sdb

预期效果:PTTYPE 显示 gptdos(MBR)。

命令示例:初始化为 GPT(新盘,谨慎执行)

# 1) 备份确认:此操作会清空分区表
sudo sgdisk --zap-all /dev/sdb

# 2) 创建 GPT 分区表
sudo parted -s /dev/sdb mklabel gpt

# 3) 创建一个 1GiB 分区用于示例
sudo parted -s /dev/sdb mkpart primary ext4 1MiB 1025MiB

# 4) 查看结果
sudo parted -s /dev/sdb print

关键解释:
- --zap-all 清除现有分区表与元数据
- mklabel gpt 设置 GPT 分区表
- mkpart 创建分区(范围起止)

命令示例:初始化为 MBR(新盘,谨慎执行)

# 1) 清理元数据
sudo sgdisk --zap-all /dev/sdb

# 2) 创建 MBR(parted 中为 msdos)
sudo parted -s /dev/sdb mklabel msdos

# 3) 创建主分区
sudo parted -s /dev/sdb mkpart primary ext4 1MiB 1025MiB

# 4) 查看结果
sudo parted -s /dev/sdb print

关键解释:
- mklabel msdos 等价于 MBR
- 传统 BIOS 启动常配合 MBR

排错与注意事项
- 分区表识别异常:
- lsblk 显示空 PTTYPE,说明可能无分区表或损坏
- 处理:parted -s /dev/sdb print 检查并重建
- 2TB 以上磁盘创建 MBR 失败或容量异常:
- 处理:改用 GPT(mklabel gpt
- BIOS 启动 + GPT 无法引导:
- 需创建 BIOS Boot 分区(通常 1~2MiB),或改用 MBR
- 误用 mklabel/--zap-all 导致数据丢失:
- 处理:第一时间停止写入,使用 testdisk 尝试恢复

练习
1. 新建虚拟磁盘 /dev/sdb,分别初始化为 MBR 与 GPT,并对比 lsblk -o PTTYPE 输出。
2. 在 GPT 磁盘上创建 3 个分区,记录 parted print 输出中的起止范围。
3. 设计一个场景:UEFI + 2TB 磁盘,写出选择 GPT 的理由与验证命令。