最可靠方法是用 parted -l 查 Partition Table 字段:显示 gpt 或 msdos(即MBR),该字段在磁盘级信息中;若为 unknown,需用 gdisk -l 进一步验证——GPT: present 且含 protective MBR 为真 GPT,MBR: MBR only 为真 MBR,均 not present 则分区表损坏。

用 parted -l 看 Partition Table 字段最可靠
这是 Linux 下判断分区表类型最通用、最不易误判的方法。parted 原生支持两种格式,输出明确,不依赖磁盘是否挂载或是否存在保护性 MBR。
执行命令后,在每块磁盘的输出块里找这一行:
Partition Table: gpt 或 Partition Table: msdos
其中 msdos 就是 MBR 的代称,不是指 DOS 操作系统;gpt 即 GPT。注意:这个字段出现在磁盘级信息中,不是某个分区下面。
- 如果某块盘没显示该字段,说明
parted无法识别其分区表(可能已损坏或非常规格式) - 同一台机器上不同盘可能混用:比如系统盘是 GPT,而旧数据盘是 MBR
- 输出中若出现
Partition Table: unknown,别急着下结论,换gdisk -l再试
gdisk -l /dev/sdX 能直接告诉你“有没有有效 GPT”
gdisk 是专为 GPT 设计的工具,它对 MBR 的识别逻辑更“较真”——不满足 GPT 结构完整性就不认,因此特别适合验证 GPT 是否真实有效,而非仅靠保护性 MBR 伪装。
关键看输出开头的 Partition table scan 区域:
- 看到
GPT: present且紧跟着Found valid GPT with protective MBR→ 真 GPT - 看到
MBR: MBR only和Found invalid GPT and valid MBR→ 真 MBR(gdisk会提示“要不要转成 GPT”,此时按q退出即可,别输w) - 看到
GPT: not present且MBR: not present→ 分区表损坏,parted通常也读不出来
注意:gdisk -l 对 NVMe 盘(如 /dev/nvme0n1)同样适用,只需把设备名换对。
fdisk -l 的 “Disk label type” 只能当辅助参考
fdisk 默认以 MBR 模式解析磁盘,对 GPT 支持有限。它输出里的 Disk label type: dos 表示它认为这是 MBR,但这个判断容易被保护性 MBR 干扰——GPT 磁盘也会带一个兼容性的 MBR 头,fdisk 就可能只看到那个,误报为 MBR。
所以不能单靠这一条下结论,要交叉验证:
- 如果
fdisk -l显示Disk label type: gpt→ 基本可确认是 GPT(现代内核 + 新版 fdisk 才支持该字段) - 如果出现警告
GPT PMBR size mismatch→ 这反而是 GPT 存在的强信号,说明fdisk发现了 GPT 结构,但保护性 MBR 不匹配 - 如果分区编号出现
/dev/sda5或更高 → 这是 MBR 扩展分区下的逻辑分区特征,基本排除纯 GPT(GPT 分区编号就是 1~128,无“逻辑”概念)
别忽略 /sys/block/ 下的 PARTTYPE 和 uevent
内核在识别分区时,会把解析出的分区类型写入 sysfs。这对脚本化判断或 Live 环境排查特别有用,而且不依赖用户态工具是否安装。
例如检查第一块 SATA 盘的第一个分区:
cat /sys/block/sda/sda1/parttype
输出可能是:
c12a7328-f81f-11d2-ba4b-00a0c93ec93b(EFI System 分区,GPT 特有)
e3c9e316-0b5c-4db8-817d-f92df00215ae(Microsoft Basic Data,GPT)
而 MBR 分区一般没有 parttype 文件,或内容为空。也可以看 /sys/block/sda/uevent 里是否有 TYPE=disk 和 GPT 相关字段。
- 这个方法快、轻量,但只对已由内核识别的分区有效;未识别的损坏分区不会生成对应 entry
- 需要 root 权限读取部分路径,普通用户可能权限不足
- 它反映的是“内核怎么理解这块盘”,和
parted的结果应一致;如果不一致,说明内核模块或分区表本身有问题
真正容易被忽略的点是:一块盘可以同时存在 MBR 和 GPT 结构(即“混合模式”),比如人为写坏了 GPT 头但保留了保护性 MBR,或者旧工具误操作残留。这时候不同命令会给出矛盾结果——parted 可能报 unknown,gdisk 报 invalid GPT,而 fdisk 坚称是 dos。遇到这种情形,优先信任 parted -l 和 gdisk -l 的组合输出,并检查磁盘是否物理异常或分区表已被破坏。


















