centos7-将/home分区的空间转移到根分区

centos7默认会给centos-home分区分配比较大的空间,刚开始给服务器安装系统时,打算以图形化的方式用于开发,就没有将该分区的空间调小。现在服务器的根分区空间已经接近80%的使用率。

看上图的情况,我们需要释放centos-swapcentos-home这两个分区。
由于服务器内存够用,所以swap可以关闭掉,查看文章关闭centos swap
执行下面的命令:

swapoff -a


可以看到centos-swap分区已经没有挂载为swap
别忘了将/etc/fstab文件当中挂载到swap的命令注释掉,防止开机挂载磁盘出错

#/dev/mapper/centos-swap swap                    swap    defaults        0 0

使用删除命令删除这个lvm分区

lvremove /dev/centos/swap


使用lvextend命令扩容,+100%FREE表示把所有空闲空间添加进来,下面两条选一条来执行,推荐第一条。

lvextend -l +100%FREE /dev/centos/root
lvextend -L +7.75G /dev/centos/root


接下来要使用xfs_growfs或者resize2fs命令进行分区调整,否则df -h命令出来的分区大小还是扩容前的,要查看分区文件系统格式,可以用命令df -hT

resize2fs命令          针对的是ext2、ext3、ext4文件系统
xfs_growfs命令         针对的是xfs文件系统

由于centos-root分区是xfs文件系统,这里我们使用xfs_growfs命令

看到data blocks changed from 13107200 to 15139840这样的一句,就是调整成功了。

现在看到/dev/mapper/centos-root的分区空间已经增加了8G。
接下来使用同样的方式把/dev/mapper/centos-home分区的空间也分配给/dev/mapper/centos-root,不过要记得先备份/home目录下的文件再umount /home哦,也别忘了修改/etc/fstab文件。
卸载/home的挂载时,可能会出现由于占用导致的无法卸载的错误

可以使用fuser -m /home命令查看是哪个进程占用着/home文件夹

[root@itmx /]# fuser -m /home
/home:                5103c

再使用ps -ef | grep 5103查看进程情况

[root@itmx /]# ps -ef | grep 5103
itmx      5103  5102  0 20:47 pts/0    00:00:00 -bash
root      5155  5103  0 20:48 pts/0    00:00:00 su
root      5487  5158  0 21:05 pts/0    00:00:00 grep --color=auto 5103

这样一下子就看出来,原来我在登录的时候以普通用户itmx登录,默认在/home/itmx目录上进行了提权,所以才发生了占用。
解决方案,退出root用户,然后cd到根目录再登录root用户。

最后上一张调整完成的图