Centos7迁移/home硬盘空间到根目录

问题

根目录的硬盘空间不够,需要从/home目录腾出空间给根目录。

[root@localhost ~]# df -h
文件系统                 容量  已用  可用 已用% 挂载点
/dev/mapper/centos-root   36G   20G   17G   54% /
/dev/mapper/centos-home   18G  4.8G   13G   28% /home

Google搜索了下,发现国内的博客都是复制粘贴,无法实操。最有用的还是StackOverflow上的答案,所以写这篇文章整理翻译下。

正确答案:https://serverfault.com/questions/771921/how-to-shrink-home-and-add-more-space-on-centos7

解决

由于Centos7默认的XFS文件系统不能缩小,只能扩大。

解决思路是先删掉/home卷,再将空闲的硬盘空间追加给根目录。

# 1. 备份/home卷
tar -czvf /root/home.tgz -C /home .
# 遍历检查备份的文件
tar -tvf /root/home.tgz

# 2. 卸载/home卷
umount /dev/mapper/centos-home
# 遇到错误:target is busy error
# 解决方法:增加-l参数 umount -l /dev/mapper/centos-home

# 3. 删除逻辑卷
lvremove /dev/mapper/centos-home
# 遇到错误:Logical volume centos/home contains a filesystem in use
# 解决方法:由于当前SSH连接使用了/home硬盘的文件,所以需要先退出SSH连接再重新进入。
#          如果依然不行,可能还需要关闭其它进程:yum install psmisc && fuser -kuc /dev/centos/home

# 4. 重新建立一个较小的/home卷(可选)
lvcreate -L 40GB -n home centos
mkfs.xfs /dev/centos/home
mount /dev/mapper/centos-home

# 5. 将空闲的空间追加到根目录
lvextend -r -l +100%FREE /dev/mapper/centos-root

# 6. 恢复/home目录文件
tar -xzvf /root/home.tgz -C /home

# 7. 更新文件系统配置
vi /etc/fstab
# 如果删除了home卷,则需要注释或删除/dev/mapper/centos-home开头的行,否则将无法顺利开机

至此,根目录空间扩大了,/home目录文件不变。

[root@localhost ~]# df -h
文件系统                 容量  已用  可用 已用% 挂载点
/dev/mapper/centos-root   54G   20G   35G   36% /
[root@localhost ~]# cat /etc/fstab
/dev/mapper/centos-root /                       xfs     defaults        0 0
UUID=d32c3ed5-79cc-4536-b3c8-4e084bc10dd7 /boot                   xfs     defaults        0 0
#/dev/mapper/centos-home /home                   xfs     defaults        0 0
/dev/mapper/centos-swap swap                    swap    defaults        0 0