提示:
1.此方案是以自建用户为第一视角进行操作,中途需要重启机器(用自建用户登陆,su - root操作)。
2.如果是登陆的自建用户操作,中间重启机器时,图形界面会消失,建议重启前先把网址复制下来用手机查阅。
3.直接用root(是在开机在not list?中用root登陆操作,而不是su - root 切换root操作)用户登陆操作,没有登陆过自建用户可以实现动态扩容,不需要重启机器。
4.下面会提示哪个步骤用root登陆可跳过
5.万事都有不测,建议先用虚拟机跑一遍测试下,防止意外发生。
某天我想用python创建11位的数字字典文件,
当文件跑到40G的时候,
系统提示磁盘不够用了,
用df -hl 命令查看根目录只有50G。
反而/home目录空间较多,
我猜装系统的时候完全使用的是磁盘自动分区,
没有做手动划分导致的。
根目录50G肯定是不够用的,
所以尝试从home削掉150G补过来。
备份/home分区内容 -> 卸载/home -> 重新设置/dev/mapper/centos-home大小 ->
增加/dev/mapper/centos-root的空间大小 -> 延展 xfs 空间 -> 格式化 /home 的 lvm ->
挂载/home ->恢复/home目录的内容
centos7 预装的操作系统是XFS,
特性是只能扩大不能缩小,
所以需要利用xfsdump 和 xfsrestore 工具在必须缩小lvm 的情况下,
备份并还原资料。
先备份/home到根目录下面。
先把 xfsdump 安装好:
[自建用户@localhost ~]$ su - root
[root@localhost /]# yum -y install xfsdump
开始备份:
[root@localhost /]# xfsdump -f /home.xfsdump /home
确认根目录下已生成备份文件:home.xfsdump
输入两次home
please enter label for this dump session (timeout in 300 sec)
-> home
please enter label for media in drive 0 (timeout in 300 sec)
-> home
默认回车
xfsdump: Dump Status: SUCCESS
[root@localhost /]# cp -R /home /bak/home.bak
[root@localhost /]# tar -cvf /bak/home.tar /home
[root@localhost /]# umount /home
执行命令后发现/home正被占用
注意:如果使用root用户,umount /home 可直接卸载,不需要延迟卸载操作。
执行延迟卸载:
[root@localhost /]# mount -vl /home
重新设置
[root@localhost /]# lvreduce -L 256G /dev/mapper/centos-home
把剩余free的空间全部填充:
[root@localhost /]# lvextend -l +100%FREE /dev/mapper/centos-root
[root@localhost /]# xfs_growfs /dev/mapper/centos-root
以下过程会出现意外,但是不要慌!
[root@localhost ~]# mkfs.xfs -f /dev/mapper/centos-home
该命令会提示设备busy,不让格式化,原因是上面卸载home是延时卸载,
资源一直在占用,虽然df -hl已经看不到了,但是设备依旧busy,此时需要重启系统。
reboot!!!
注意:root用户操作,执行mkfs.xfs -f /dev/mapper/centos-home时不会报错,不用重启机。
好了! 意外降临了,博主就是此时懵哔的,重启后不能进入图形界面了,
因为home卸载掉了,索性有命令行,只要有命令行就还有救!
此时继续格式化操作
mkfs.xfs -f /dev/mapper/centos-home
此时能正常格式化。
mount /home
挂载完毕后,reboot!!!
此时你会发现,图形界面回来了,但是自创建用户登陆不了,
因为home是刚挂载上的,是空的,所以用root登陆。
注意:root用户操作,执行mount /home 可直接挂载。
8.恢复/home目录的内容
把第一步生成的home.xfsdump文件进行恢复
[root@localhost /]# xfsrestore -f /home.xfsdump /home