运维笔记--Docker文件占用磁盘空间异常处理--日志清理
场景描述:
1. 服务器运行一段时间后,发现系统盘磁盘空间在不断增加,一开始的时候,不会影响系统,随着时间的推移,磁盘空间在不断增加,直到有一天你会发现系统盘剩余空间即将使用完,值得庆幸的是,如果您使用的云服务器,那么服务器支持资源动态扩容,但是如果是物理服务器,那么就要及时处理该问题了;不过话说回来,即便是云服务器支持在线磁盘空间扩容,这样的异常问题,也应及时处理,总不能,一到磁盘空间满的时候,就去扩容。
处理思路:
先以正常的问题定位思路来:(后续知道原理,可直接定位,命令如下: )
容器日志一般存放在/var/lib/docker下面,可使用如下命令root用户下,直接查看各个容器日志的文件大小 ls -lh $(find /var/lib/docker/containers/ -name *-json.log)
1. 远程连接服务器,以root用户登录
查看磁盘空间大小
初步可以定位是/var/lib/docker下的文件占用空间较大:
进入containers目录:
查看运行中的容器:
可以确定是odoo容器:
基本可以定位到该日志文件,然后在业务不忙的时候,考虑将该日志文件内容清空,释放空间。
注意,这里不能直接用rm-rf 删除该文件,因为:
如果docker容器正在运行,那么使用rm -rf方式删除日志后,通过df -h会发现磁盘空间并没有释放。原因是在Linux或者Unix系统中,通过rm -rf或者文件管理器删除文件,将会从文件系统的目录结构上解除链接(unlink)。如果文件是被打开的(有一个进程正在使用),那么进程将仍然可以读取该文件,磁盘空间也一直被占用。正确姿势是cat /dev/null > *-json.log,当然你也可以通过rm -rf删除后重启docker。
docker 设置日志文件大小及个数: https://blog.csdn.net/huangliuyu00/article/details/90384345
清理docker大日志文件:https://www.cnblogs.com/boshen-hzb/p/9996545.html
具体操作步骤:
1. 进入容器文件的存放目录 ,并查看某一个容器的文件大小 cd /var/lib/docker/containers du -sh * 2. 进入某一个具体的容器比如:b55014b9120b8e67cdd54a1306452aa03395c71c6ff8ef5f3878a28a53772b67 du -sh * 3. 将日志文件清空 cat /dev/null>b55014b9120b8e67cdd54a1306452aa03395c71c6ff8ef5f3878a28a53772b67-json.log du -sh * 4. 查看磁盘最新磁盘空间: df -h
补充参考:
docker清理日志:https://blog.csdn.net/yjk13703623757/article/details/80283729