温馨提示×

CentOS分区如何缩容

小樊
42
2026-01-10 21:09:18
栏目: 智能运维

CentOS 分区缩容实操指南

一、前置判断与准备

  • 确认是否为 LVM:执行 pvs、vgs、lvs 查看是否存在卷组与逻辑卷;非 LVM 场景(直连分区)缩容风险高,通常需备份后重建分区与文件系统。
  • 确认文件系统类型:df -hTlsblk -f。文件系统不同,缩容方法差异很大。
  • 重要数据务必先完整备份(离线介质或异地)。
  • 缩容前确保目标逻辑卷使用率较低,并预留一定安全余量。
  • 如为远程/生产环境,建议通过控制台或带外管理操作,避免 SSH 中断导致无法回滚。

二、按文件系统类型的标准流程

  • 通用准备

    • 查看空间与类型:df -hT、lsblk -f;查看卷组空闲:vgs
    • 卸载目标挂载点:umount /mount_point;若占用无法卸载,用 fuser -m /mount_point 定位进程并处理后再卸载。
  • ext2/ext3/ext4(支持在线/离线缩小)

    1. 强制检查文件系统:e2fsck -f /dev/mapper/-
    2. 先缩文件系统到目标大小:resize2fs /dev/mapper/- <目标大小>(如 100G
    3. 再缩逻辑卷到同一大小:lvreduce -L <目标大小> /dev/mapper/-
    4. 挂载并验证:mount /mount_point;df -h
      说明:顺序为“先文件系统后逻辑卷”,避免数据损坏。
  • XFS(仅支持增大,不能直接缩小)

    1. 备份数据:将 /home(或其他目标)数据拷出到临时目录/外部存储。
    2. 卸载并删除原逻辑卷:umount /mount_point;lvremove /dev/mapper/-
    3. 按新大小重建逻辑卷:lvcreate -L <新大小>G -n <lv名> <vg名>
    4. 创建文件系统:mkfs.xfs /dev/mapper/-
    5. 挂载并还原数据:mount /mount_point;cp -a <备份>/ /mount_point*
    6. 验证:df -h
      说明:XFS 无法在线/离线缩小,只能“备份—重建—还原”。

三、常见场景示例

  • 示例A:缩小 ext4 的 /home 并扩容 /

    1. 备份 /home 关键数据(可选但强烈建议)。
    2. 卸载并检查:umount /home;e2fsck -f /dev/mapper/centos-home
    3. 缩文件系统:resize2fs /dev/mapper/centos-home 100G
    4. 缩逻辑卷:lvreduce -L 100G /dev/mapper/centos-home
    5. 扩容根逻辑卷:lvextend -l +100%FREE /dev/mapper/centos-root
    6. 扩容根文件系统(ext4 用 resize2fs;xfs 用 xfs_growfs):resize2fs /dev/mapper/centos-root
    7. 挂载并验证:mount /home;df -h
  • 示例B:缩小 xfs 的 /home 并扩容 /

    1. 备份 /home 数据到外部存储。
    2. 卸载:umount /home
    3. 删除并重建逻辑卷(如缩到 100G):
      • lvremove /dev/mapper/centos-home
      • lvcreate -L 100G -n home centos
      • mkfs.xfs /dev/mapper/centos-home
    4. 挂载并还原数据:mount /home;cp -a <备份>/ /home*
    5. 扩容根逻辑卷:lvextend -l +100%FREE /dev/mapper/centos-root
    6. 扩容根文件系统:xfs_growfs /
    7. 验证:df -h

四、关键注意事项与排错

  • 顺序要求:ext 系列必须先缩文件系统再缩 LVxfs 不支持缩小,只能重建。
  • 文件系统与命令对应关系:
    • resize2fs:用于 ext2/ext3/ext4(增大/减小均可)
    • xfs_growfs:用于 xfs(仅增大)
  • 根分区 / 在线缩容风险极高,生产环境建议从 LiveCD/救援模式操作或采用“备份—重建—还原”。
  • 卸载失败处理:用 fuser -m /mount_point 查占用进程并停止后再卸载。
  • 操作后务必用 df -h、lvs、vgs 校验结果;保留少量 Free PE 更稳妥。

0