场景说明
天翼云数据盘 /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 |
| 记录起始值 | 删除分区前必须记下起始磁柱值 |
rm 再 mkpart |
删除旧条目 → 用相同起始值 + 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 备份分区表(位于磁盘末尾) |