linux磁盘分区fdisk和gdisk介绍

一、fdisk 与 gdisk 的共性

项目 说明
功能 都是交互式磁盘分区工具,可新建、删除、查看、修改分区
操作方式 都支持命令行交互 (m 查看帮助),支持非交互式脚本操作
使用权限 都需要 root 权限操作块设备
常用场景 安装系统、初始化新磁盘、调整磁盘分区结构
替代工具 都可以被 partedcfdisksgdisk 等替代

二、核心差异一览

项目 fdisk gdisk
分区表类型 MBR (Master Boot Record) GPT (GUID Partition Table)
兼容性 传统 BIOS 模式 支持 UEFI 启动(也可用于 BIOS+GPT 场景)
磁盘大小支持 ≤ 2TB(MBR 限制) 理论可支持 ZB 级(2⁶⁴ 扇区)
分区数量 最多 4 个主分区(或 3 主 + 1 扩展 + 逻辑分区) 默认支持 128 个分区(可扩展)
数据结构 基于 CHS/LBA 的 32-bit 地址 使用 64-bit LBA 地址
安全性 分区表单一,损坏易导致丢盘 主/备份分区表双副本,容灾能力强
校验机制 无校验 CRC32 校验,可检测分区表损坏
工具包来源 util-linux gdisk (GPT fdisk 工具集)
对应非交互式命令 sgdisk(脚本化强)

三、应用场景建议

场景 推荐工具 原因
新服务器、UEFI 启动、NVMe SSD gdisk 支持 GPT,安全可靠
老旧 BIOS 机器、系统盘 < 2TB fdisk 简单兼容
数据盘初始化(现代系统) gdisk GPT 分区结构更优
混合分区表环境(BIOS+GPT) gdisk 可生成 hybrid GPT
自动化批量分区 sgdisk 非交互式自动化命令支持强

四、核心命令对照表

操作 fdisk 示例 gdisk 示例
查看磁盘 fdisk -l /dev/sda gdisk -l /dev/sda
进入交互 fdisk /dev/sda gdisk /dev/sda
创建新分区 n → 输入分区号和范围 n → 同理
删除分区 d d
打印分区表 p p
保存更改 w w
不保存退出 q q
转换分区类型 无法直接支持 t 修改 GPT 类型 GUID
修复分区表 手工或第三方工具 内置修复功能 (v 校验 + w 写入)

五、使用技巧与进阶建议

5.1. 快速从 MBR 转 GPT

1
2
3
4
5
6
7
# 备份分区表
sfdisk -d /dev/sda > sda-mbr-backup.txt

# 转换 (非破坏性)
gdisk /dev/sda
# 输入: r → g → w
# r=恢复模式, g=convert MBR→GPT, w=写入保存

5.2. 自动化分区脚本(gdisk 替代:sgdisk)

1
2
3
4
5
# 清空分区表并新建两个分区
sgdisk --zap-all /dev/sdb
sgdisk --new=1:0:+100G --typecode=1:8300 --change-name=1:'root' /dev/sdb
sgdisk --new=2:0:0 --typecode=2:8200 --change-name=2:'swap' /dev/sdb
sgdisk --print /dev/sdb

5.3. 将 GPT 磁盘写入保护区修复(保护性 MBR)

1
2
gdisk /dev/sdb
# 输入: r → n → w

5.4. 校验分区表一致性

1
2
3
gdisk /dev/sda
# 输入: v
# 输出:如果 “No problems found”,说明表一致且健康

5.5. 将 GPT 转换为 MBR(用于旧 BIOS 启动)

1
2
3
gdisk /dev/sda
# 输入:r → g → w
# 注意:若分区超过 4 个或 >2TB,会丢失数据

⚠️:分区类型转换,请提前备份数据。


六、前瞻与实践建议

建议 原因
默认新盘统一使用 GPT UEFI / NVMe / 云盘默认支持 GPT,易迁移
运维脚本统一用 sgdisk 可声明式定义分区表,自动化更可靠
监控磁盘健康 + 分区结构校验 smartctl + gdisk -v 可提前发现问题
注意 hybrid GPT 的风险 混合 MBR+GPT 仅为兼容,破坏性大,不推荐
自动化安装 PXE/Cloud-Init 时 优先用 GPT + parted / sgdisk 自动脚本

总结

项目 fdisk gdisk
时代 传统 MBR 时代 现代 GPT 时代
限制 分区 ≤ 4 个, 容量 ≤ 2TB 分区数多, 容量超大
推荐使用场景 旧系统维护 新系统 / 云原生 / UEFI 启动
现代替代工具 parted, sfdisk sgdisk, parted