一、背景
在最近项目过程中,遇到系统登录缓慢,甚至卡死情况,查看后台发现cpu占用率高达200%以上,输入部分命令时,显示磁盘已满。但是磁盘总量为1T,想到不该是磁盘满了。使用df -h命令查看才知,是根目录满了,经了解得知:centos7默认的root大小为50G,也就是说如果硬件分配时超过50G,大部分剩余空间都会分配给home,故将home分区多余部分配给root
二、准备工作
1.查看磁盘
df -h
#记录home的大小,便于后期操作
2.查看磁盘格式
df -T /dev/mapper/cl-root
三、调节home分区
1.备份分区为压缩文件至tmp
tar cvf /tmp/home.tar /home
2.卸载home分区
备注:(如中途不重启,可忽略)
1.修改fstab(这一步非常重要,若中途要重启系统,千万不要漏了)
准备卸载/home文件系统,centos启动时会对/etc/fstab的内容逐一检测,由于fstab默认有/home,如果不修改fstab,重启之后会发现centos跪了。
所以卸载之前,要先注释掉/home,不让系统开机检测/home。2.编辑fstab
bash vi /etc/fstab
#/dev/mapper/centos-home /home xfs defaults 0 0 #注释掉/home的内容,wq保存。 ``` 3.安装psmisc z ```bash yum install -y psmisc ``````bash #Psmisc软件包包含三个帮助管理/proc目录的程序,安装下列程序: fuser、 killall、pstree和pstree.x11(到pstree的链接) #fuser 显示使用指定文件或者文件系统的进程的PID。 #killall 杀死某个名字的进程,它向运行指定命令的所有进程发出信号。 #pstree 树型显示当前运行的进程。 #pstree.x11 与pstree功能相同,只是在退出前需要确认。 ```
(1)卸载home文件系统
umount /home
如果提示无法卸载,是因为有进程占用/home,可以用下面的命令来停止占用的进程。
fuser -km /home/
(2)删除/home所在的lv
lvremove /dev/mapper/cl-home
2.恢复home分区
(1)创建50G大小的/home的lv
lvcreate -L 50G -n /dev/mapper/cl-home
(2)创建文件系统
mkfs.xfs /dev/mapper/cl-home
(3)挂载分区并查看
mount /dev/mapper/cl-home
df -h
(4)恢复home文件
tar xvf /tmp/home.tar -C /home/
四、调节root分区
1.增加root分区大小
lvextend -L +500G /dev/mapper/cl-root
#此处逐渐增加,便于查看剩余空间
2.扩展/root文件系统
xfs_growfs /dev/mapper/cl-root