一、操作场景:
Linux-AnolisOs下根目录/dev/mapper/ao-root经常会满,需要对根目录进行扩容
如下现场截图:
/dev/mapper/ao-root,容量70G,已用9%,而/dev/mapper/ao-home容量为521G,仅使用1%,考虑将/dev/mapper/ao-home分配40G空间给/dev/mapper/ao-root。
扩容根目录的思路如下:
1、home目录:将/home文件夹备份,卸载/home源目录(umount),删除/home文件系统所在的逻辑卷(lvremove)
2、根目录:增大根目录文件系统所在的逻辑卷(lvextend),增大根目录文件系统大小(xfs_growfs)
3、home目录:最后重建/home目录逻辑卷(lvcreate),重建/home目录文件系统(mkfs.xfs),重新挂载/home目录(mount),并恢复/home文件夹下的内容。
————————————————
二、Linux根目录扩容操作步骤
2.1 SSH连接,直接root访问
2.2 查看当前磁盘情况
命令:df-h #查看磁盘情况
查看/dev/mapper/ao-root和/dev/mapper/ao-home两个文件系统的容量
/dev/mapper/ao-root容量70G,/dev/mapper/ao-home容量521G。
下面以给根目录扩容40G为例介绍具体的操作。
最终:
/dev/mapper/ao-root 70G+40G=110G
/dev/mapper/ao-home 521G-40G=481G
2.3 关闭Docker容器(没有docker则忽略)
命令:docker stop $(docker ps -a -q) #关闭docker容器
2.4 关闭Docker服务(没有docker则忽略)
命令1:systemctl stop docker #关闭docker服务
命令2:systemctl stop docker.socket #关闭docker自动唤醒机制
命令3:systemctl status docker #查询docker状态
注意:如命令1执行后提示:Warning: Stopping docker.service, but it can still be activated by: docker.socket,需要执行命令2关闭docker自动唤醒机制,最后查询docker状态,如依旧处于Active状态,需重复执行命令1关闭docker服务。
2.5 备份源目录文件
命令:tar cvf /run/home.tar /home #将/home目录打包放到/run目录下
查看到/home目录已成功备份至/run目录下
2.6 终止源目录下的进程(重要终止目录下进程才能进一下步卸载该目录)
命令:fuser -km /home #终止源目录下的进程
2.7 卸载源目录
命令:umount /home #卸载源目录
发现该目录下的文件已全部删除
2.8 删除源目录对应的逻辑卷
命令:lvremove /dev/mapper/ao-home # 删除/home目录对应的逻辑卷
选择y继续
2.9 扩容目标逻辑卷
命令:lvextend -L +40G /dev/mapper/ao-root #扩大根目录所在的逻辑卷,增大40G
2.10 扩大目标文件系统
命令:xfs_growfs /dev/mapper/ao-root #扩大/dev/mapper/ao-root文件系统
2.11 重建源目录对应的逻辑卷
命令:lvcreate -L 481G -n/dev/mapper/ao-home # 重建/dev/mapper/ao-home逻辑卷
此处的481G,/dev/mapper/ao-home 521G-40G=481G
最好是填写原大小减去centos-root扩容的大小
注意:当给予的大小不合适时会报如下的错,可以调小一点这个大小即可。
2.12 重建源文件系统
命令:mkfs.xfs /dev/mapper/ao-home # 创建/dev/mapper/ao-home文件系统
2.13 重新挂载源目录
命令:mount /dev/mapper/ao-home #挂载/dev/mapper/ao-home目录
2.14 备份文件恢复
命令:tar xvf /run/home.tar -C / #将备份文件解压
可以看到/home目录下文件已恢复
2.15 再次查看当前磁盘使用情况
命令:df-h #查看磁盘情况
对比之前的目标空间大小,已经成功扩容根目录
/dev/mapper/ao-root 70G+40G=110G
/dev/mapper/ao-home 521G-40G=481G
2.16 重启docker服务(没有docker则忽略)
命令1:systemctl start docker #启动docker服务
命令2:systemctl status docker #查看docker状态
2.17 删除备份文件【谨慎】
命令:rm -rf /run/home.tar
注意:如果空间允许,该文件先不要删除,待扩容运行稳定后再删除该备份文件