Linux LVM逻辑卷的核心价值在于“动态调整容量”,不用重启、不丢数据,关键在分清PV、VG、LV三层关系并按顺序操作:先用pvdisplay/vgdisplay/lvdisplay摸清现状;VG无空闲时需先扩容(pvcreate+vgextend或pvresize);再lvextend扩LV,最后resize2fs(ext4)或xfs_growfs(xfs)扩文件系统;缩容须卸载、e2fsck、先缩文件系统再缩LV。

Linux LVM逻辑卷的核心价值在于“动态调整容量”,不用重启、不丢数据,关键在分清物理卷(PV)、卷组(VG)、逻辑卷(LV)三层关系,再按顺序操作。
一、先确认当前LVM结构
用三条命令快速摸清现状:
- pvdisplay:查看物理卷(比如 /dev/sdb、/dev/sdc)是否已初始化为PV,以及剩余空间
- vgdisplay:看卷组(如 centos、myvg)总大小、空闲PE数(Free PE / Size)
- lvdisplay:查逻辑卷(如 /dev/centos/root)挂载点、当前大小、是否激活
如果 vgdisplay 显示 Free PE 为 0,说明卷组没空闲空间,得先扩容VG(加新硬盘或扩现有PV),再扩LV。
二、给卷组(VG)加空间
两种常见场景:
- 新增一块硬盘(如 /dev/sdc): pvcreate /dev/sdc && vgextend myvg /dev/sdc
- 扩已有PV对应分区(如 /dev/sdb1 已是PV,但磁盘扩容了): pvresize /dev/sdb1(自动识别新容量并更新PV大小)
执行后再次 vgdisplay,确认 Free PE 已增加。
三、动态扩容逻辑卷(LV)和文件系统
以扩容根逻辑卷 /dev/centos/root 为例(ext4文件系统):
- 先扩LV本身: lvextend -l +100%FREE /dev/centos/root(把VG所有空闲空间全给它) 或指定大小:lvextend -L +5G /dev/centos/root
- 再扩文件系统(在线生效): ext4用 resize2fs /dev/centos/root xfs用 xfs_growfs /(注意:xfs_growfs 后跟的是挂载点,不是设备路径)
完成后 df -h 就能看到可用空间已更新。
四、缩容要格外谨慎(非必要不建议线上操作)
缩LV前必须先缩文件系统,且只能离线操作:
- 卸载逻辑卷:umount /mnt/data
- 检查文件系统:e2fsck -f /dev/myvg/datalv
- 缩小文件系统(如缩到5G):resize2fs /dev/myvg/datalv 5G
- 再缩小LV:lvreduce -L 5G /dev/myvg/datalv
- 重新挂载:mount /dev/myvg/datalv /mnt/data
跳过 e2fsck 或顺序颠倒极易导致数据损坏。










