lvm扩容需严格按顺序执行四步:先用rescan刷新磁盘容量,再用pvresize或pvcreate+vgextend纳入lvm管理,接着lvextend分配空间给lv,最后用resize2fs或xfs_growfs更新文件系统,缺一不可。

LVM不是“扩容工具”,而是把磁盘空间变成可灵活调度的资源池。真正实现动态扩展的关键,是它分层抽象的设计:物理卷(PV)提供底层存储,卷组(VG)聚合空间,逻辑卷(LV)按需分配——扩容操作本质是在这三层之间传递新增容量。
怎么让新磁盘空间真正变可用?
扩容不是一条命令的事,而是一串必须按顺序完成的动作链。漏掉任何一环,df -h 就永远看不到新空间。
先让系统识别底层容量变化
如果是云盘或虚拟机磁盘已扩容(比如从100G调到200G),但lsblk还显示旧大小,要强制内核重读设备容量:echo 1 > /sys/class/block/vdb/device/rescan(把vdb换成你的设备名)
再用blockdev --getsize64 /dev/vdb确认输出是否为新值(如209715200000)把新增容量纳入LVM管理范围
若该磁盘整盘已是PV(如/dev/vdb),直接运行:pvresize /dev/vdb
若是新增了独立磁盘(如/dev/sdc),先分区(可选)、再初始化:pvcreate /dev/sdc1
然后加入已有卷组:vgextend my_vg /dev/sdc1把空间分配给目标逻辑卷
查看VG剩余空间:vgs或vgdisplay my_vg
把全部空闲PE加给LV:lvextend -l +100%FREE /dev/my_vg/my_lv
或指定增加大小(如+5G):lvextend -L +5G /dev/my_vg/my_lv-
最后一步最关键:刷新文件系统
ext4/xfs不能跳过这步,且命令不同:- ext4:
resize2fs /dev/my_vg/my_lv(在线执行,无需umount) - xfs:
xfs_growfs /mount/point(必须挂载点路径,不是设备名)
执行后df -h才会更新容量。
- ext4:
为什么扩完还是没空间?常见卡点
- 物理磁盘容量没刷新 →
lsblk和fdisk -l不一致,先做rescan - PV没重置大小 →
pvs显示PSize仍是旧值,补pvresize - VG里没空闲PE →
vgs的VFree列为0,说明没成功vgextend或pvresize - LV没真正扩大 →
lvs的LSize没变,检查lvextend是否执行、有无拼写错误 - 文件系统没调整 →
df不变但lvs已变大,99%是漏了resize2fs或xfs_growfs
不复杂但容易忽略











