LVM在线扩容需三步:先用pvcreate和vgextend为卷组添加空间,再用lvextend扩展逻辑卷,最后用resize2fs或xfs_growfs扩展文件系统;全程无需umount,业务不中断。

Linux 运维中对挂载状态的 LVM 逻辑卷做在线扩容,核心是三步闭环操作:先让卷组有空间,再让逻辑卷变大,最后让文件系统认出新增容量。全程无需 umount,业务不中断。
确认卷组有可用空闲空间
这是扩容的前提。如果卷组(VG)没有 Free PE,后续命令会失败。
- 运行 vgs 查看各 VG 的 VFree 值;若为 0,说明没空闲空间
- 若有新硬盘(如 /dev/sdb),先执行 pvcreate /dev/sdb 初始化为物理卷
- 再用 vgextend vg-name /dev/sdb 把它加入目标卷组
- 执行 vgscan && pvscan 确保系统识别到变更,避免因缓存导致 vgs 显示不准
扩展逻辑卷(LV)设备大小
这一步只改变 LV 的底层容量,不影响文件系统,也不影响挂载状态。
- 用全部空闲空间扩容:lvextend -l +100%FREE /dev/vg-name/lv-name
- 指定增加 20G:lvextend -L +20G /dev/vg-name/lv-name
- 注意:-L 按字节单位(如 G、M),-l 按 PE 数量,别混用
- 执行后用 lvs 或 lvdisplay /dev/vg-name/lv-name 确认 LV Size 已更新
扩展对应类型的文件系统
LV 变大了,但 df -h 不会变——必须让上层文件系统感知并使用新空间。
- 如果是 ext4:运行 resize2fs /dev/vg-name/lv-name(传设备路径,支持在线)
- 如果是 XFS:运行 xfs_growfs /mount/point(传挂载点路径,不是设备路径)
- 切勿交叉使用命令,比如对 XFS 执行 resize2fs,会报错甚至损坏数据
- 执行完用 df -hT 验证挂载点容量是否同步增长
常见问题快速定位
扩容后 df 显示没变化?重点检查这几个环节:
- 新硬盘做了 pvcreate 吗?用 pvs 看是否列出该设备
- 物理卷加进 VG 了吗?对比 vgs 输出里的 #PV 和实际物理盘数量
- lvextend 成功了,但漏掉文件系统扩展命令?对比 lvs 和 df 容量是否一致
- XFS 场景下,xfs_growfs 输的是 /dev/xxx 而不是挂载点?必须是 /data 这类路径


















