Linux LVM缩容与迁移必须分两步独立处理:缩容针对LV及文件系统(仅ext2/3/4支持,需先缩文件系统再缩LV),迁移针对PV数据转移(用pvmove将旧盘数据移至新PV);二者顺序不可颠倒,且均需卸载、检查、验证三重保障。

Linux LVM 缩容与迁移必须分两步独立处理:缩容针对逻辑卷(LV)和其上文件系统,迁移针对物理卷(PV)数据。二者不可混为一谈,也不能同时在线操作。缩容只适用于 ext2/3/4 文件系统,XFS 不支持缩小;迁移则用于将 PV 上的数据安全转移到新磁盘,不改变 LV 大小。整个过程需卸载、检查、验证三重保障,否则极易丢数据。
缩容逻辑卷:先缩文件系统,再缩逻辑卷
缩容的核心是顺序不可逆、大小须严格对齐:
- 确认文件系统类型:运行 df -T /mount/point,仅当显示 ext4、ext3 或 ext2 才可继续;若为 xfs,停止操作,XFS 不支持缩小
- 卸载目标逻辑卷:umount /mnt/data(必须卸载,不支持在线缩容)
- 强制检查文件系统:e2fsck -f /dev/mapper/vg0-lv_data(确保无错误,五遍扫描通过才安全)
- 缩小文件系统本身:resize2fs /dev/mapper/vg0-lv_data 50G(设为目标大小,如 50GB)
- 再缩小逻辑卷:lvreduce -L 50G /dev/mapper/vg0-lv_data(数值必须与上一步完全一致)
- 重新挂载并验证:mount /dev/mapper/vg0-lv_data /mnt/data && df -h /mnt/data
迁移物理卷:把旧磁盘数据搬进新磁盘
这是“换盘不丢数”的关键操作,适用于扩容或淘汰老旧硬盘:
- 确保新磁盘已初始化为物理卷:pvcreate /dev/sdc
- 将新 PV 加入原有卷组:vgextend vg0 /dev/sdc
- 从旧 PV 迁移数据(自动避开正在使用的 LE):pvmove /dev/sdb(假设旧盘是 /dev/sdb)
- 迁移完成后,从卷组中移除旧 PV:vgreduce vg0 /dev/sdb
- 最后可擦除旧盘 LVM 元数据:pvremove /dev/sdb
注意:pvmove 默认后台执行,可用 pvmove -i 15 设置每 15 秒同步一次进度,避免影响业务 I/O。
缩容 + 迁移组合场景的正确顺序
若既要缩小 LV,又要换掉底层 PV(例如腾出空间+更换硬盘),务必按以下流程执行:
- 先完成 LV 缩容(含文件系统收缩、lvreduce、重新挂载)
- 再执行 PV 迁移(pvmove → vgreduce → pvremove)
- 切勿在缩容中途插入 pvmove,也不要在 lvreduce 后未验证就直接迁移
- 全程每步后都用 pvs、vgs、lvs 和 df -h 交叉核对状态
所有操作前必须备份关键数据,哪怕只是 rsync 到另一台机器的临时目录。LVM 灵活,但缩容和迁移都是高危动作,容错窗口极小。


















