场景说明

天翼云数据盘 /dev/vdb 原有容量 150GB,有两个 GPT 分区:

分区 原大小 挂载点
/dev/vdb1 100GB /mnt/sdc
/dev/vdb2 50GB /mnt/test

将数据盘扩容至 230GB(新增 80GB),全部划分到末尾分区 /dev/vdb2

⚠️ 注意:

  • 扩容不会删除数据,但需要 umount 卸载分区,会影响线上业务
  • 新增存储空间添加在磁盘末尾,只能将新增容量划分到排在末尾的分区

操作步骤

1. 查看当前磁盘分区

lsblk

输出示例:

NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
vda    253:0    0   40G  0 disk
└─vda1 253:1    0   40G  0 part /
vdb    253:16   0  230G  0 disk
├─vdb1 253:17   0  100G  0 part /mnt/sdc
└─vdb2 253:18   0   50G  0 part /mnt/test

2. 卸载目标分区

umount /dev/vdb2

3. 进入 parted 工具

parted /dev/vdb

4. 设置单位为扇区,查看分区表

(parted) unit s
(parted) p

此时可能会遇到两个提示:

Error: The backup GPT table is not at the end of the disk, as it should be.
Fix/Ignore/Cancel? Fix

Warning: Not all of the space available to /dev/vdb appears to be used,
you can fix the GPT to use all of the space (an extra 167772160 blocks)
or continue with the current setting?
Fix/Ignore? Fix

都输入 Fix — parted 会自动修复 GPT 备份表位置。

正常输出示例:

Model: Virtio Block Device (virtblk)
Disk /dev/vdb: 482344960s
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number  Start       End         Size        File system  Name  Flags
1      2048s       209713151s  209711104s  ext4         test
2      209713152s  314570751s  104857600s  ext4         data

📌 记录待扩大分区的起始和截止磁柱值。 本例中 /dev/vdb2 的起始值为 209713152s,截止值为 314570751s

5. 删除旧分区定义

(parted) rm
Partition number? 2

⚠️ 这只是删除分区表条目,不会删除数据。数据块仍然在磁盘上。

6. 重新创建分区(扩大容量)

(parted) mkpart data 209713152s 100%
  • 起始磁柱值必须与原来一致:209713152s
  • 截止磁柱值100%,表示使用所有剩余空间

7. 验证新分区表

(parted) p

输出示例:

Number  Start       End         Size        File system  Name  Flags
1      2048s       209713151s  209711104s  ext4         test
2      209713152s  482342911s  272629760s  ext4         data

可以看到 /dev/vdb2 的 End 已从 314570751s 扩展到 482342911s

8. 退出 parted

(parted) q

9. 扩展文件系统

根据文件系统类型选择对应操作:

ext4(最常用)

# 检查文件系统
e2fsck -f /dev/vdb2

# 扩展文件系统
resize2fs /dev/vdb2

# 重新挂载
mount /dev/vdb2 /mnt/test

xfs

# 挂载
mount /dev/vdb2 /mnt/test

# 扩展文件系统(xfs 支持在线扩容)
xfs_growfs /dev/vdb2

10. 验证结果

df -TH

输出示例:

Filesystem     Type      Size  Used Avail Use% Mounted on
/dev/vdb2      ext4      138G   63M  131G   1% /mnt/test

从 50GB → 约 138GB(130GB + 新增 80GB),扩容成功。


总结:GPT 分区扩容要点

步骤 关键点
卸载 umount 会影响业务,需提前规划窗口
Fix GPT 遇到 backup GPT 提示,选 Fix
记录起始值 删除分区前必须记下起始磁柱值
rmmkpart 删除旧条目 → 用相同起始值 + 100% 重建
文件系统扩容 ext4 用 resize2fs,xfs 用 xfs_growfs

Professional English Terms

Term Meaning
GPT (GUID Partition Table) GUID 分区表,现代磁盘分区标准
Sector / Cylinder 扇区 / 磁柱,磁盘的最小寻址单元
Parted GNU 分区编辑工具,支持 GPT
Resize Filesystem 扩展文件系统以使用新增空间
Backup GPT Table GPT 备份分区表(位于磁盘末尾)