必须在不卸载、不重启前提下扩容LVM逻辑卷:先用vgs检查卷组空闲空间,为0则用pvcreate和vgextend添加新物理卷;再用lvextend扩展LV大小;最后根据文件系统类型执行resize2fs(ext4)或xfs_growfs(xfs)扩容文件系统。

当Linux服务器上LVM逻辑卷挂载的目录(如/var或/data)空间告急,df -h显示使用率超90%,而业务又不能停机时,必须在不卸载、不重启的前提下,把新磁盘空间真正加进正在运行的文件系统里。
确认卷组是否有空闲空间
先查VG是否还有“余粮”,这是后续所有操作的前提。运行vgs,看输出中VG Size和VFree两列——如果VFree为0,说明卷组已满,必须先加物理卷;如果数值大于0(比如“9.99g”),说明可直接扩展LV。
若VFree为0但你刚扩容了云盘或虚拟磁盘,极可能是内核还没识别到新容量:用lsblk对比设备大小和fdisk -l输出,不一致就立刻执行echo 1 > /sys/class/block/vdb/device/rescan(把vdb换成你的设备名)。
向卷组添加新物理卷(VG空间不足时)
方法一:整盘作为PV(推荐,简单无分区表干扰)
直接运行pvcreate /dev/sdb。这一步会清空/dev/sdb全部数据,【务必确认该盘无有效数据】。
方法二:用分区作为PV(常见于物理服务器或需保留MBR场景)
先用fdisk /dev/sdb创建一个类型为8e(Linux LVM)的主分区,比如/dev/sdb1;再执行pvcreate /dev/sdb1。
无论哪种方式,完成后都必须把新PV加入目标卷组:vgextend my_vg /dev/sdb1(或/dev/sdb)。执行后立即用vgs验证VFree是否已增长。
扩展逻辑卷(LV)大小
第一步:确认你要扩的是哪个LV
运行lvs或lvdisplay,找到目标LV全路径,例如/dev/my_vg/my_lv。注意别输错名字,LV名拼错会导致命令静默失败。
第二步:选择扩展方式
想把VG里所有剩余空间一次性分给LV:运行lvextend -l +100%FREE /dev/my_vg/my_lv。
只想加固定大小(比如5GB):运行lvextend -L +5G /dev/my_vg/my_lv。
第三步:验证LV是否真变大了
执行lvs,检查输出中LSize列数值是否已更新。如果没变,说明lvextend根本没生效——常见原因是VG没空闲空间或LV路径写错。
扩展文件系统以生效
ext4/xfs文件系统必须单独处理,且操作对象完全不同:
ext4:直接对设备路径执行resize2fs /dev/my_vg/my_lv,在线即可,无需umount。
xfs:必须对挂载点路径执行xfs_growfs /data(假设LV挂载在/data),传设备路径会报错。
执行完任一命令后,立刻运行df -h /data(替换为你的真实挂载点),输出中的Avail值增大,即表示扩容完成。











