CentOS 分卷缩容实操指南
一、前置判断与准备
- 确认是否为 LVM:执行 pvs / vgs / lvs,若能看到 PV/VG/LV 信息,说明是 LVM 管理;若不是 LVM,则属于传统分区,步骤完全不同且风险更高。
- 确认文件系统类型:执行 blkid /dev/mapper/- 或 df -T。若是 xfs,请注意其不支持在线或离线缩小;若是 ext2/ext3/ext4,可按本文步骤缩容。
- 备份与停机窗口:缩容有数据风险,务必先完整备份;尽量在停机窗口操作,避免业务写入。
- 基本检查:用 df -h 确认已用空间小于目标大小;用 lsblk 理清磁盘与分区关系。
二、ext2/ext3/ext4 分卷缩容步骤(LVM)
- 原则与顺序:先缩小文件系统,再缩小逻辑卷;缩容前文件系统必须处于“干净”状态。
- 步骤概览:
- 卸载目标逻辑卷(非根分区):umount /mount_point;若提示忙,用 fuser -m /mount_point 查占用并停掉相关进程。
- 强制检查并缩小文件系统:e2fsck -f /dev/mapper/-;resize2fs /dev/mapper/- <目标大小(如 20G)>。
- 缩小逻辑卷:lvreduce -L <目标大小> /dev/mapper/-(大小需与文件系统一致或更大一点,避免数据截断)。
- 重新挂载并验证:mount /mount_point;df -h;lsblk。
- 示例(将 /home 缩到 20G):
umount /home
e2fsck -f /dev/mapper/centos-home
resize2fs /dev/mapper/centos-home 20G
lvreduce -L 20G /dev/mapper/centos-home
mount /home
df -h
- 提示:resize2fs 支持按“绝对大小”或“增减量”调整;缩容时务必确保目标大小≥已用空间。
三、根分区缩容与把空间给其它逻辑卷
- 难点:根分区(/)通常在线且无法卸载,不能直接缩容。
- 推荐做法:
- 方案 A(通用):进入救援/单用户环境(如 LiveCD/救援模式),激活 LVM 后按“ext4 缩容流程”先对根文件系统做离线缩小,再缩小 LV,最后重启。
- 方案 B(更稳妥):先备份 /home,清空或缩小 /home 的 LV,再把空闲空间扩展到根 LV;适用于 /home 可暂时离线的场景。
- 将空闲空间给根分区的示例(ext4):
lvextend -l +100%FREE /dev/mapper/centos-root
resize2fs /dev/mapper/centos-root
df -h
- 要点:根分区缩容务必在救援模式完成;若 /home 为 xfs,不能直接缩小,可先备份后重建为 ext4 再缩容,或采用方案 B 迁移空间。
四、缩容后空间回收与 PV 移除(可选)
- 查看空闲空间:vgdisplay 或 vgs 查看 Free PE/Size。
- 迁移数据(如需移除某块盘):pvmove /dev/sdX(将数据迁走)。
- 从卷组移除磁盘:vgreduce /dev/sdX。
- 清理物理卷:pvremove /dev/sdX。
- 注意:迁移/移除前确保数据已备份,且 VG 中有足够可用空间承接迁移。
五、常见陷阱与建议
- 文件系统限制:xfs 不支持缩小,只能增大(xfs_growfs);需要缩容时请使用 ext4 或先迁移数据后重建文件系统。
- 顺序不能颠倒:缩容必须先 resize2fs 再 lvreduce;扩容则相反(先 lvextend 再 resize2fs)。
- 大小边界:目标大小必须≥实际已用空间;缩容过度会导致数据损坏。
- 在线与离线:LV 缩小通常要求卸载(根分区需救援模式);扩展某些场景可在线,但缩容不建议在线。
- 校验与回滚:每一步后用 df -h / lsblk / blkid 校验;重要数据务必有可用备份与回滚方案。