你遇到的是典型的“扩容后文件系统未同步”问题:云平台已经把底层磁盘从 40 GB 扩到 100 GB,但操作系统里的分区表和文件系统还停留在 40 GB。
下面给出一条“不丢数据、不重启、不新建分区”的完整思路,按顺序执行即可把 100 GB 全部用起来。
(以下命令均以 root 身份在 /dev/vda 上操作,请确认你只有一块系统盘且是 vda,如有第二块数据盘请先备份再操作。)
一,查看磁盘block块容量和文件系统容量
lsblk -p
# 应该能看到 vda 100G,vda1 40G
df -hP /
# 应该看到根分区 40G
二:安装在线扩容工具
# CentOS/Rocky/Alma
yum install -y cloud-utils-growpart xfsprogs
# Ubuntu/Debian
apt-get update && apt-get install -y cloud-guest-utils xfsprogs
三: 把分区表“拉”到 100 GB(不丢数据)
growpart /dev/vda 1
# 注意:1 前面有空格,表示第 1 分区
四:把文件系统也拉到 100 GB,根据你根分区的文件系统类型选一条
xfs(CentOS 默认)
xfs_growfs /
ext4(Ubuntu 默认)
resize2fs /dev/vda1
五:进行验证
df -hP /
# 现在应该看到 99G 左右可用
lsblk -p
# vda1 100G
常见问题
1. growpart 报 “NOCHANGE”
说明你之前已经扩过分区表,直接跳第 4 步即可。
2. xfs_growfs 报 “data size unchanged”
同样说明文件系统已经在线扩完,无需再操作。
3. 如果你用的是 LVM( lsblk 里出现 centos-root 或 ubuntu--vg-root 等)
先扩物理卷 pvresize /dev/vda1 ,再扩逻辑卷 lvextend -l +100%FREE /dev/mapper/centos-root ,最后 xfs_growfs / 或 resize2fs 。
一句话总结
growpart 扩分区 → resize2fs/xfs_growfs 扩文件系统,两步即可把云平台的 100 GB 真正用起来,全程无需重启。