运维背景
收到告警信息,线上Linux服务器磁盘空间不足,如何处理?
如图所示(执行df -h命令查看服务器磁盘情况)
清理docker日志
docker system prune命令
命用于清理未被使用的镜像、停止的容器、失效的网络和构建缓存。它会自动删除这些不再使用的资源,以释放磁盘空间
docker volume prune命令
清理不需要的Docker数据卷。Docker数据卷是用来持久化容器数据的,当容器删除后,数据卷通常不会自动删除,而是继续占用磁盘空间
docker system prune与 docker volume prune的区别
这里简单理解一下,题主这边的线上环境服务器配置,每一次线上发布更新服务,一般操作是
1 docker stop 停止原容器;
2 docker rm -f删除原容器;
3 docker rmi 删除原镜像;
4 docker build -t 重新构建镜像;
5 docker run 启动步骤4重新构建的镜像;
但是这个过程 步骤1,2,3 原容器虽然被删除了,但是原容器留下的数据卷并没有进行删除,也就是docker volume prune清理的是步骤1,2,3原容器留下的东西
清理业务docker container 日志
进入到docker 容器目录 cd cd /var/lib/docker/containers/ 并查看du -h每个容器的大小
看下哪个容器目录较大,就cd进入容器删除对应日志,看业务情况而定,后缀*.log.1,.log.2,.log.3等为旧日志
清理nginx日志
一般的,很少有人会考虑到nginx也会产生日志,但是题主就碰到了,而且占磁盘内存还挺大,如下图
echo ''> *.nginx.log
这行命令的作用是将‘’这个空字符串,覆盖更新到日志中,覆盖更新到日志中,覆盖更新到日志中;说三遍 怎么来理解,就是比如aa.nginx.log本来有20g,执行命令后,aa.nginx.log的内容会被‘’这个空字符串覆盖更新
为什么不直接删除日志?
因为nginx还在运行,担心nginx日志直接删除会影响nginx运行;如果停止nginx再删除日志再启用nginx则会影响业务运行;
echo与 echo > 与echo >> 三命令区别
echo是直接在控制台打印输出,如
echo hello > tmp.txt
将hello输出至tmp.txt,如果没有tmp.txt 则会新建一个tmp.txt;会将原来的tmp.txt 文件用hello进行替换
echo hello bbbb >> tmp.txt 多了个> ,在原tmp.txt文件内容的基础上,继续追加了内容hello bbbb
其他
其他处理方式持续补充中........