扩容后df -h不变,是因文件系统未识别新空间,需按“底层设备→分区表→物理卷→卷组→逻辑卷→文件系统”逐层检查并扩展,漏任一环均无效。

扩容后 df -h 不变,不是命令没执行成功,而是文件系统层根本没“看到”新空间。关键要顺着数据流逐层检查:从底层设备 → 分区表 → 物理卷 → 卷组 → 逻辑卷 → 文件系统,漏掉任意一环都会卡住。
确认底层磁盘是否真已扩容
先排除虚拟化或硬件层未生效的可能:
- 运行
fdisk -l /dev/sda(替换为你的磁盘名),看 “Disk /dev/sda” 行显示的总容量是否已增大 - 对比
lsblk输出:若sda容量变大,但sda1或sda2大小没变,说明分区表还没扩展 - 在 VMware/vSphere 环境中,需确认虚拟机支持热添加,且操作后已触发 SCSI 重扫描(如
echo "- - -" > /sys/class/scsi_host/host*/scan)
检查 LVM 各层容量状态
用标准命令逐级验证,重点关注输出中的数值变化:
-
pvs:看 PV 的 PSize 和 PE Total 是否已更新;若仍是旧值,需先运行pvresize /dev/sda2 -
vgs:确认 VFree 是否有空闲空间;若为 0,说明 VG 没收到新增容量 -
lvs:检查目标 LV 的 LSize 是否已增长;若没变,需补执行lvextend -l +100%FREE /dev/vgname/lvname
验证并扩容文件系统
这一步必须做,且命令与文件系统类型强绑定:
- 查类型:
df -T /mount/point或lsblk -f - ext4/xfs/btrfs 根本不兼容对方命令:
– ext4:运行resize2fs /dev/vgname/lvname(指定设备路径)
– xfs:运行xfs_growfs /mount/point(必须是挂载点,不是设备) - 执行后立即
df -h验证,不应再延迟
注意非 LVM 场景的误判风险
很多人一看到扩容就默认走 LVM 流程,但实际可能是普通分区结构:
- 运行
lsblk -f,若没有 LVM2_member 标识,且根分区直接是/dev/sda1,说明没用 LVM - 此时
pvresize、lvextend全部无效,应改用growpart /dev/sda 1扩展分区,再resize2fs /dev/sda1 - 误用 LVM 命令不仅无效,还可能因设备路径错误引发警告甚至误操作


















