必须用resize2fs让ext4文件系统识别并使用新增空间,否则多出空间无法写入;先用lsblk和df -h确认分区已扩但文件系统未扩,再依分区类型用growpart或lvextend+pvresize扩底层,最后执行resize2fs /dev/sda1在线扩容并用df -h验证。

当Linux系统中ext4分区的底层物理空间已扩大,但df -h仍显示旧容量时,必须用resize2fs让文件系统识别并使用新增空间,否则多出的磁盘空间完全无法写入数据。
确认扩容前提是否满足
先运行lsblk /dev/sda(把/dev/sda换成你的实际设备名),检查目标分区(如/dev/sda1)的SIZE列是否已变大;再运行df -h /mount/point(如df -h /),对比“Size”值是否明显小于lsblk中对应分区的大小——若小,说明文件系统尚未扩容,可以继续操作。
这一步漏掉会导致后续resize2fs无任何效果,命令会静默返回成功,但df输出纹丝不动。
扩展底层分区或逻辑卷
方法一:普通分区(MBR/GPT)
执行growpart /dev/sda 1,表示扩展/dev/sda的第1个分区;执行后必须立即运行partprobe /dev/sda或重启udev服务,否则内核可能仍按旧分区表读取磁盘。
方法二:LVM逻辑卷
先运行lvextend -l +100%FREE /dev/vgname/lvname扩LV;若该VG由新物理盘组成,必须额外执行pvresize /dev/sdb(把/dev/sdb换成新PV设备),否则lvextend会提示“no free extents”,这是新手最常卡住的地方。
【未刷新分区表或未执行pvresize,resize2fs将无法识别新增空间】
执行ext4在线扩容
第一步:检查挂载状态——运行findmnt -D /确认目标分区是否已挂载;若已挂载(绝大多数根分区都是),可直接进行在线扩容。
第二步:运行resize2fs /dev/sda1,不加参数即自动扩满整个分区;该命令在ext4挂载状态下安全执行,内核2.6+原生支持,无需卸载。
第三步:观察输出——成功时最后一行显示“Resizing the filesystem on /dev/sda1 to XXXXX blocks”,且无ERROR字样。
第四步:验证结果——立即运行df -h /mount/point,确认“Size”值与lsblk中分区大小一致;若不一致,说明前两步有遗漏。











