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 或顺序颠倒极易导致数据损坏。