3.2.4 分区工具使用(fdisk、parted、gdisk)

3.2.4 分区工具使用(fdisk、parted、gdisk)#

适用场景与工具选择
- fdisk:经典交互式工具,适合MBR分区;可读GPT但不推荐写入。
- gdisk:GPT分区首选,命令风格与fdisk类似。
- parted:支持MBR/GPT,适合脚本化与大于2TB磁盘。


原理草图:分区表写入与内核识别流程#

文章图片

安装与环境准备#

安装

# Debian/Ubuntu
apt-get update
apt-get install -y util-linux gdisk parted

# RHEL/CentOS/Rocky
yum install -y util-linux gdisk parted

确认设备与备份分区表

# 查看磁盘与分区
lsblk -o NAME,SIZE,TYPE,MOUNTPOINT
fdisk -l /dev/sdx

# 备份分区表(MBR/GPT均可)
sfdisk -d /dev/sdx > /root/sdx.pt

# 确保目标分区未挂载
umount /dev/sdxN

fdisk 常用流程(MBR)#

操作示例:创建一个 20GiB 主分区

fdisk /dev/sdx

交互命令说明:
- m:显示帮助
- p:打印分区表
- n:新建分区(主分区/逻辑分区)
- t:修改分区类型(如 83 Linux)
- w:写入并退出
- q:退出不保存

完整交互示例(关键步骤)

Command (m for help): p
Command (m for help): n
Partition type: p
Partition number: 1
First sector: 2048
Last sector: +20G
Command (m for help): t
Hex code: 83
Command (m for help): w

使内核重读分区表

partprobe /dev/sdx
# 或
blockdev --rereadpt /dev/sdx

gdisk 常用流程(GPT)#

操作示例:创建一个 50GiB GPT 分区并设置类型

gdisk /dev/sdx

交互命令说明:
- p:打印分区表
- n:新建分区
- t:修改分区类型(如 8300 Linux)
- w:写入并退出
- q:退出不保存

完整交互示例(关键步骤)

Command (? for help): n
Partition number: 1
First sector: 2048
Last sector: +50G
Hex code or GUID: 8300
Command (? for help): w

备份与恢复 GPT

# 备份
sgdisk -b /root/gpt.bak /dev/sdx
# 恢复
sgdisk -l /root/gpt.bak /dev/sdx

parted 常用流程(MBR/GPT)#

交互示例:创建 GPT 并划分两个分区

parted /dev/sdx

交互命令说明:
- print:显示分区表
- mklabel gpt:创建GPT分区表
- mkpart:创建分区
- align-check optimal N:检查分区N对齐
- quit:退出

完整交互示例(关键步骤)

(parted) mklabel gpt
(parted) mkpart primary ext4 1MiB 50GiB
(parted) mkpart primary xfs 50GiB 100%
(parted) align-check optimal 1
(parted) align-check optimal 2
(parted) quit

脚本化示例

parted -s /dev/sdx \
  mklabel gpt \
  mkpart primary ext4 1MiB 50GiB \
  mkpart primary xfs 50GiB 100%
partprobe /dev/sdx

分区后验证与格式化示例#

# 查看分区
lsblk /dev/sdx

# 格式化
mkfs.ext4 /dev/sdx1
mkfs.xfs /dev/sdx2

# 挂载验证
mkdir -p /data1 /data2
mount /dev/sdx1 /data1
mount /dev/sdx2 /data2
df -h | grep /data

常见故障与排错#

1)分区表未刷新

partprobe /dev/sdx
dmesg | tail -n 20

2)设备忙无法卸载

lsof /dev/sdx1
fuser -m /dev/sdx1

3)GPT/MBR混乱导致无法识别

gdisk /dev/sdx
# 如果提示混乱,可选择修复并写入

4)误操作分区表

# 使用备份恢复
sfdisk /dev/sdx < /root/sdx.pt
partprobe /dev/sdx

练习与实操题#

  1. 使用 parted 在测试盘 /dev/sdb 上创建 GPT,划分 2 个分区(20GiB 与剩余空间),并对齐检查。
  2. 使用 gdisk 备份 /dev/sdb 的 GPT,删除分区后再恢复。
  3. 使用 fdisk 在 MBR 测试盘 /dev/sdc 创建一个 5GiB 主分区,并通过 mkfs.ext4 格式化。
  4. 模拟“分区表未刷新”场景,使用 partprobe 使内核重读并验证。

安全与变更建议#

  • 写入分区表前再次确认设备名,避免操作系统盘。
  • 生产环境分区变更需维护窗口与变更记录。
  • 关键设备建议先备份分区表并验证恢复流程。