centos8减少/home分区大小增加/root空间大小
最近在虚拟机里装了一个 CentOS 8,用来体验新系统,初始分配了 127G 空间。后来发现 /home 占了几十 G,而我平时主要只用 root,于是更实际的方案就是把 /home 缩小,把可用空间让给 /root。
这篇文章记录的是 CentOS 8 下基于 LVM 的调整过程。它和很多 CentOS 7 的写法有差别,特别是逻辑卷名称和 xfs_growfs 的使用方式。
步骤:
- 使用df-h查看空间使用情况,备份home
- 卸载home文件系统
- 删除/home所在的lv
- 扩展/root所在的lv
- 扩展/root文件系统
- 重新创建home lv并挂载home
- 查看最终调整结果
操作前先注意
- 这类操作会删除原来的
/home逻辑卷,先备份再继续。 - 最稳妥的场景是虚拟机、测试机,或者可以接受短时停机的环境。
- 如果你的系统里普通用户数据大量放在
/home,不要跳过备份和恢复步骤。
使用df-lh查看空间使用情况,备份home
首先登陆ssh,使用df -lh查看空间使用情况
df -lh

root已经不够了,而vps也就自己一个人用,根本不需要用到home,home设置1个g就够了,其余的都给root,这样就可以给root多出来73个g的空间。 这因为一开始没有截图,所以看到的是后面的1g大小,一开始home是74g大小的。 备份home文件到/tmp目录
tar cvf /tmp/home.tar /home
# zip -r /tmp/home.zip /home

卸载home文件系统
fuser -km /home/
umount /home
解除home目录的占用,卸载home目录
删除/home所在的lv
这一步centos8有很大不同,因为centos7中目录是/dev/mapper/centos-home,而在centos8中为 /dev/mapper/cl-home,因此注意卸载设备名称
lvremove /dev/mapper/cl-home

扩展/root所在的lv
扩展root空间lv
lvextend -L +73G /dev/mapper/cl-root
扩展/root文件系统
这一步是真正增加root空间,centos7和centos8具有非常大的差别,centos7中是使用xfs_growfs /dev/mapper/centos-root,按逻辑centos8就应该是 xfs_growfs /dev/mapper/cl-root,但是结果就是
xfs_growfs /dev/mapper/cl-root

经过摸索发现应该直接使用/就可以了
xfs_growfs /

重新创建home lv并挂载home
创建1g空间的home
lvcreate -L 1G -n home cl
文件系统类型设置
mkfs.xfs /dev/cl/home

挂载到home目录
mount /dev/cl/home /home
恢复home目录下文件
mv /tmp/home.tar /home
cd /home
tar xvf home.tar
mv home/* .
rm -rf home*
另外别忘了检查 /etc/fstab。如果原来 /home 的挂载记录还是旧的逻辑卷名称,重启后可能会挂载失败。最简单的做法是确认新建出来的 /dev/cl/home 或对应 UUID 已经写入正确的挂载配置。
查看最终调整结果
查看各分区大小
df -lh

总结:
本文把 CentOS 8 下缩小 /home、扩容 /root 的关键步骤串了一遍,重点是先备份、再删旧逻辑卷、扩容 root,最后重建 /home 并检查挂载配置。这样做比单纯照抄命令更稳,因为你能明确知道每一步为什么要做。
如果最后空间没有正常变化,优先检查三处:逻辑卷名称是否写对、xfs_growfs / 是否真正执行成功、以及 /etc/fstab 是否仍然指向旧的 /home 设备。
- 原文作者:春江暮客
- 原文链接:https://www.bobobk.com/745.html
- 版权声明:本作品采用 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议 进行许可,非商业转载请注明出处(作者,原文链接),商业转载请联系作者获得授权。