VPS磁盘扩容通常要经过三层:云平台块设备容量变大、操作系统分区或LVM卷变大、文件系统扩展到新的边界。只完成第一层时,lsblk可能看到设备变大,但 df -h仍显示旧容量;如果分区变大而文件系统没扩展,应用同样看不到新增空间。
扩容前先确认设备与备份
lsblk -o NAME,TYPE,SIZE,FSTYPE,MOUNTPOINTS
findmnt -no TARGET,SOURCE,FSTYPE,OPTIONS /
df -hT
记录根盘、数据盘、分区号、文件系统类型和是否使用LVM。对包含系统或数据库的数据盘,先完成可恢复备份或云平台快照,并确认服务商的扩容操作不可逆边界。不要根据设备名猜测目标盘,尤其是在多盘、NVMe或云主机热插拔环境中。
第一层:确认云平台与内核看到的新容量
完成云平台扩容后,重新运行 lsblk,必要时查看内核块设备信息:
lsblk
cat /sys/class/block/<device>/size
dmesg -T | tail -n 100
如果设备本身仍是旧大小,先处理云平台任务、磁盘挂载关系或实例重扫问题;此时不要继续对分区执行扩展命令。
第二层:非LVM分区扩展
对普通分区,先确认分区位于目标设备末尾且没有未分配空间被其他分区占用。常见流程是使用发行版提供的 growpart 或等效分区工具扩展指定分区,然后重新读取分区表。命令中的设备和分区号必须替换为现场确认的值:
sudo growpart /dev/<device> <partition-number>
lsblk
分区调整完成后,df -hT仍可能不变,因为文件系统还没有扩展。不要把分区设备和整块磁盘混用,也不要在存在相邻分区时盲目扩大。
第三层:按文件系统扩展
文件系统工具取决于类型:
- ext4:确认分区已变大后使用对应的
resize2fs。 - XFS:在已挂载目标上使用
xfs_growfs指定挂载点。 - Btrfs:按其子卷和设备布局执行
btrfs filesystem resize等操作。
不要把ext4工具用于XFS,也不要复制网上命令而跳过文件系统类型确认。根分区是否支持在线扩展、工具是否需要卸载,应以发行版和文件系统文档为准。
LVM场景要多一层
pvs
vgs
lvs -o lv_name,vg_name,lv_size,devices
LVM通常需要依次确认物理卷、卷组和逻辑卷边界,再扩展逻辑卷和文件系统。可以选择一次性扩展逻辑卷与文件系统,也可以分两步完成,但每一步都要记录前后容量。不要对错误的卷组或逻辑卷执行 lvextend,也不要把快照空间与数据卷空间混为一谈。
扩容后的验收
lsblk确认设备与分区大小。- LVM环境用
pvs/vgs/lvs确认各层边界一致。 df -hT确认文件系统可用容量增加,df -i确认inode情况没有误判。- 用业务服务账号在真实数据目录创建并删除一个小测试文件。
- 检查数据库、容器卷、备份任务和监控是否恢复正常,并保留扩容前后记录。
为什么“重启一下”不是万能答案
重启可能让内核重新读取设备容量,但不会自动替你扩展分区、LVM或文件系统;如果底层操作未完成,重启还会增加服务中断。正确顺序是先确认云盘、再确认分区/LVM、最后扩展文件系统,完成每层验收后才恢复业务负载。






