必须先缩文件系统再缩LV,顺序颠倒会导致数据丢失;ext4需卸载后e2fsck检查并resize2fs缩减,XFS不支持缩减;LV缩减前须确保文件系统大小小于LV,用lvreduce -L或-r联动,最后挂载验证。

缩减 ext4 逻辑卷并安全归还空间给 VG,核心就一条:必须先缩文件系统,再缩 LV,顺序颠倒等于删数据。
确认前提条件
不是所有 LV 都能安全缩容。先验证三件事:
- 挂载点必须已卸载 —— 运行 umount /mount/point;若提示 busy,用 fuser -v /mount/point 查进程并终止
- 文件系统类型必须是 ext4 —— 执行 df -T /mount/point,输出里显示 ext4 才继续;XFS 不支持缩容,直接中止
- 当前实际已用空间要心里有数 —— df -h /mount/point 显示的 “Used” 值(比如 3.2G),目标大小至少要比它大 5%~10%,建议取整为 3.8G 或 4G
强制执行文件系统检查与收缩
这一步跳过等于埋雷,e2fsck 和 resize2fs 必须离线运行:
- 用 e2fsck -f /dev/mapper/vgname-lvname 强制校验,直到提示 “Filesystem passed” 才算过关
- 再执行 resize2fs /dev/mapper/vgname-lvname 4G(你算好的目标大小),它会把文件系统真正缩小到指定尺寸,并重排数据块
- 注意:resize2fs 后的大小必须 ≤ LV 当前大小,否则命令会拒绝执行
收缩逻辑卷并释放物理空间
LV 缩容本身不自动释放 PE,必须确保两步都到位:
- 运行 lvreduce -L 4G /dev/mapper/vgname-lvname —— 大小必须和上一步 resize2fs 的值完全一致
- 执行后立即验证:lvs 看 LV Size 是否更新;pvs -o +pv_used 看对应 PV 的 Used 是否下降;vgdisplay vgname 确认 Free PE 已增加
- 如果 pvs 中 PFree 没变,说明 PE 还挂在 LV 上 —— 这种情况极少,通常因 LV 有快照或镜像残留,需先清理高级特性
挂载验证与收尾
最后一步不是走形式,而是确认整个链路没断:
- mount /dev/mapper/vgname-lvname /mount/point
- df -h /mount/point 检查显示容量是否匹配目标值(比如 4G),且使用率合理
- 可选但推荐:touch /mount/point/test_reduced && sync,再 ls -l /mount/point/test_reduced 确保读写正常

















