最准方式是执行sudo parted -l,直接查看每块磁盘下“Partition Table”字段:msdos即MBR,gpt即GPT;该方法不依赖磁盘状态,权限不足或分区表严重损坏时会显示unknown。

直接看 parted -l 输出里的 Partition Table 字段,msdos 就是 MBR,gpt 就是 GPT —— 这是最准、最不依赖上下文的判断方式。
用 parted -l 一眼识别分区表类型
它不挑磁盘状态,不管有没有分区、是否挂载、甚至损坏轻微也能读出表头信息。输出中每块磁盘下方都会明确标出 Partition Table: gpt 或 Partition Table: msdos。
- 必须加
sudo,否则部分磁盘可能无权限读取分区表头 - 若看到
Partition Table: unknown,说明分区表严重损坏或设备不可读(比如 NVMe 盘未正确识别) - 注意区分“磁盘”和“分区”:
/dev/sda是磁盘,/dev/sda1是分区;判断对象是前者
当 fdisk -l 显示模糊时,别信它的“Disk label type”
fdisk 是 MBR 时代的工具,对 GPT 属于“尽力而为”解析。它可能把 GPT 磁盘显示为 Disk label type: dos,但同时又报错 GPT PMBR size mismatch —— 这种矛盾信号恰恰说明它已经力不从心。
- 只要看到
GPT PMBR size mismatch或Invalid partition table,立刻转向parted -l或gdisk -l -
fdisk中出现编号 ≥5 的分区(如/dev/sda5),基本可反推是 MBR 扩展分区结构 - 它不显示“Partition Table”字段,靠
Disk label type推断容易误判,尤其在混合写入场景下
用 gdisk -l /dev/xxx 验证 GPT 完整性
这是专为 GPT 设计的工具,对 GPT 头部校验更严格。它不只告诉你“是不是 GPT”,还会告诉你“GPT 是否有效”。
- 输出含
Found valid GPT with protective MBR→ 确认为健康 GPT - 输出含
Found invalid GPT and valid MBR→ 实际是 MBR,GPT 区域被覆盖或未初始化 - 输出含
Found invalid GPT and invalid MBR→ 分区表已损毁,/proc/partitions和内核识别可能也不可靠 - 不要对未确认的磁盘执行
gdisk写操作,交互模式下误按w会重写保护性 MBR
绕过工具链,直查内核视角:cat /proc/partitions
这个文件由内核实时维护,不经过任何用户态解析逻辑,适合交叉验证。但它不直接写明 MBR/GPT,需结合设备名和分区编号规律辅助判断。
- 若看到
nvme0n1p1、nvme0n1p2这类带p编号的条目,且无nvme0n1p5及以后,大概率是 GPT(NVMe 默认 GPT) - 若看到
sda1~sda4后还有sda5,基本锁定为 MBR 扩展分区结构 - 该文件不体现分区表格式本身,仅反映内核是否成功加载了分区信息;空输出或缺失设备名,说明底层驱动或识别失败
真正容易被忽略的是:同一块磁盘上可能出现 MBR 和 GPT 混存(比如 GPT 磁盘被 Windows 工具误操作写入 MBR 头)。此时 parted 和 gdisk 的结论冲突,就不是工具问题,而是分区表本身处于中间态 —— 这种情况必须先备份再处理,不能仅靠“哪个命令输出更顺眼”来决定。


















