问题
最近发现我装的centos7根路径的磁盘空间不够用了,仔细df看一下,系统给根就50G,咦,我虚拟机创建的时候给的200G呀。
后来发现,我每次建虚拟机分区创建的时候,选的自动分区。
如果自动分区的话,可能他有个比例。然后我的情况200G的话,他默认给根路径(/)下面就50G,然后给swap一点空间,剩下的都给了/home。他home和/不在一起的,单独挂的分区。
那就看看能不能缩容下home。在把空间给root呗。
分析
查资料发现,我的centos7使用的是XFS文件系统,然后这个文件系统好像不能缩容(shrunk)。
然后可用的方案是,你先把你的home备份下,再把整个home干掉,然后创建个小一点的home。把资料还原回去。然后这时候你的磁盘就有空闲了,再把你的根扩容就好了。
解决问题
先备份你的home
> tar -czvf /root/home.tgz -C /home .
测试下你的备份是不是好的
> tar -tvf /root/home.tgz
卸载home(你可能会遇到 umount: /home: target is busy. 这个错误,你要退出相关用户或者关闭某些程序,确保你的/home下面东西没人在用。)
> umount /dev/mapper/centos-home
删除home的逻辑卷
> lvremove /dev/mapper/centos-home
重新创建个合适大小的home(我这里给50G)然后格式化,然后挂载他
> lvcreate -L 50GB -n home centos
> mkfs.xfs /dev/centos/home
> mount /dev/mapper/centos-home
扩展你的根卷到所以的空闲空间
lvextend -r -l +100%FREE /dev/mapper/centos-root
把你的备份还原回去
> tar -xzvf /root/home.tgz -C /home
扩容完成,美滋滋。
[root@localhost ~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 16G 0 16G 0% /dev
tmpfs 16G 0 16G 0% /dev/shm
tmpfs 16G 9.6M 16G 1% /run
tmpfs 16G 0 16G 0% /sys/fs/cgroup
/dev/mapper/centos-root 134G 4.3G 129G 4% /
/dev/sda1 1014M 236M 779M 24% /boot
/dev/mapper/centos-home 50G 39M 50G 1% /home
tmpfs 3.2G 8.0K 3.2G 1% /run/user/42
tmpfs 3.2G 0 3.2G 0% /run/user/0
检查下你的/etc/fstab,如果有什么映射到/home下面的,如果使用uuid映射的话,也要改下,因为你的home卷是新创建的,uuid也变了。
参考资料:
https://serverfault.com/questions/771921/how-to-shrink-home-and-add-more-space-on-centos7