Linux LVM在线扩容必须分三步:先确认VG有空闲PE(vgdisplay查Free PE/Size),无则需fdisk分区→partprobe→pvcreate→vgextend;再lvextend扩LV(注意-L/+10G与-l+100%FREE区别);最后按文件系统类型执行resize2fs(ext4,对设备路径)或xfs_growfs(xfs,对挂载点),并用lvdisplay和df -h交叉验证。

在Linux中用LVM实现逻辑卷及其文件系统的同步在线扩容,核心是分步执行、严格顺序、不可跳过任一环节。关键不在于“同步”一键完成,而在于两个动作必须先后完成:先扩展LV,再扩展文件系统,且二者命令和参数因文件系统类型而异。
确认VG有足够空闲空间
这是所有操作的前提。若卷组(VG)已无空闲PE,lvextend会直接报错“Insufficient free extents”,后续无法进行。
- 运行 vgdisplay,重点关注 Free PE / Size 行——这才是你真正能用的容量额度
- 若显示为 0,需先添加物理卷(PV):用 fdisk 或 parted 对新磁盘(如 /dev/sdb)分区(设类型为 8e),再执行 partprobe 刷新内核识别
- 接着运行 pvcreate /dev/sdb1 创建PV,再用 vgextend vg_name /dev/sdb1 扩容卷组
用lvextend扩展逻辑卷(LV)
LV扩容只是“划地”,不等于文件系统变大。此步操作对象是LV设备路径(如 /dev/vg01/lv_root),大小写与单位必须准确。
- 增加指定容量:lvextend -L +10G /dev/vg01/lv_root(注意大写G)
- 设置最终大小:lvextend -L 50G /dev/vg01/lv_root
- 推荐用PE百分比避免手算错误:lvextend -l +100%FREE /dev/vg01/lv_root
- 切勿混淆 -L(按字节/G/B)和 -l(按PE数量)
按文件系统类型扩展文件系统
这一步最容易遗漏,也是df -h不生效的主因。LV扩大后,文件系统仍维持原大小,必须显式扩展才能使用新增空间。
-
ext4/ext3/ext2 文件系统:直接对LV设备路径操作
resize2fs /dev/vg01/lv_root(支持在线,无需umount) -
XFS 文件系统:必须对挂载点操作,传LV设备路径会报错
先查挂载点:findmnt -n -o TARGET /dev/vg01/lv_root 或 mount | grep vg01
再执行:xfs_growfs /(例如根分区挂载在/,就填/,不是/dev/vg01/lv_root)
验证扩容是否生效
必须交叉验证两处结果一致,才算真正完成。
- 运行 lvdisplay /dev/vg01/lv_root:确认LV的LV Size已更新
- 运行 df -h /(替换为实际挂载点):确认可用空间同步增大
- 两者数值必须完全匹配;若LV已变大但df没变,说明文件系统扩展步骤失败或对象填错











