CentOS 根分区爆红?10 分钟无损“回血”全攻略(ext4 & XFS 双方案)

0. 开场 30 秒自检  

df -hT                    # 看 / 使用率
lsblk -f /dev/mapper/centos-home   # 关键:FSTYPE 是啥?
  • ext4 → 直接看方案 A  

  • xfs → 跳转方案 B  


方案 A:/home 是 ext4(最顺滑)

步骤
命令
说明
1. 备份
rsynC++ -aXS /home/ /var/backups/home-$(date +%F)/
30 GB ≈ 2 min
2. 卸载
umount /home
lsof /home 杀进程
3. 缩文件系统+LV

e2fsck -f /dev/mapper/centos-home

resize2fs -p /dev/mapper/centos-home 2G

lvreduce -L 2G /dev/mapper/centos-home


严格按顺序
4. 扩根
lvextend -r -l +100%FREE /dev/mapper/centos-root
-r 自动 resize2fs
5. 恢复
mount /home && rsync -aXS /var/backups/home-*/ /home/
增量 1 min



方案 B:/home 是 XFS(CentOS 7/8 默认)

XFS 不支持在线缩容,只能“重建法”:

步骤
命令
说明
1. 备份
rsync -aXS /home/ /var/backups/home-$(date +%F)/
同上
2. 卸载+删LV

umount /home

lvremove -f /dev/mapper/centos-home


腾出整块空间
3. 新建小LV
lvcreate -L 2G -n home centos
大小随意改
4. 格式化
mkfs.xfs /dev/centos/home
重建 XFS
5. 挂回+恢复

mount /dev/centos/home /home

rsync -aXS /var/backups/home-*/ /home/


增量恢复
6. 把剩余给根
lvextend -r -l +100%FREE /dev/mapper/centos-root
自动 growfs



一键脚本(自适应版)

保存为 home2root.shchmod +x 后直接跑:

#!/bin/bash
set-e
VG=centos
HOME_MAPPER=/dev/mapper/${VG}-home
ROOT_MAPPER=/dev/mapper/${VG}-root
BAK=/var/backups/home-$(date +%F)

# 0. 判断文件系统类型
FSTYPE=$(lsblk -no FSTYPE "$HOME_MAPPER")
[[ "$FSTYPE"=~ ^(ext4|xfs)]] || { echo"未知文件系统:$FSTYPE"exit1; }

# 1. 备份
mkdir-p /var/backups
rsync -aXS /home/ "$BAK"/

# 2. 卸载
umount /home || { lsof /home; exit1; }

# 3. 缩容逻辑
if [[ "$FSTYPE"=="ext4" ]]; then
    e2fsck -f"$HOME_MAPPER"
    resize2fs -p"$HOME_MAPPER" 2G
    lvreduce -L 2G "$HOME_MAPPER"
else
    lvremove -f"$HOME_MAPPER"
    lvcreate -L 2G -n home "$VG"
    mkfs.xfs "/dev/$VG/home"
    mount "/dev/$VG/home" /home
fi

# 4. 恢复数据
rsync -aXS"$BAK"/ /home/

# 5. 把剩余空间给根
lvextend -r-l+100%FREE "$ROOT_MAPPER"

# 6. 验证
df -h | grep-E'Filesystem|/$|/home$'

常见翻车点 & 救援

报错原因一键救援
e2fsck: Bad magic number把 XFS 当 ext4转方案 B
resize2fs: device busy/home 没卸载干净lsof /home && kill
xfs_growfs: not mounted忘记 -rxfs_growfs /


结语  

把本文甩进收藏夹,下次根目录爆红,先 lsblk -f 看文件系统,再对号入座。