磁盘空间告急

目录

判断大容量目录

[root@izwz98ts4wal69fbvdk1qrz log]# du -h --max-depth=1| sort -n 
4.0K ./chrony
16K ./zabbix
4.0K ./rhsm
4.0G ./journal
20K ./tuned
35M ./audit
4.0K ./ntpstats
36K ./multi-nic-util
4.0K ./anaconda
22M ./sa
4.1G .

最终发现/var/log/journal目录占据4G空间,journal是rsyslog的升级版

Linux 系统 /var/log/journal/ 垃圾日志清理

参考链接: https://blog.csdn.net/ithomer/article/details/89530790

journalctl --vacuum-size=10M

journalctl 命令自动维护文件大小

-只保留近一周的日志
journalctl --vacuum-time=1w

  • 只保留500MB的日志
    journalctl --vacuum-size=500M

重启journal服务

systemctl restart systemd-journald
https://blog.csdn.net/everlasting_188/article/details/80353391

删除exit状态容器

docker ps -a | grep Exit | cut -d ' ' -f 1 | xargs docker rm

docker system prune

docker system prune命令可以用于清理磁盘,删除关闭的容器、无用的数据卷和网络,以及dangling镜像(即无tag的镜像)。

容器占用大小

docker system df -v

清理docker空间

#!/bin/bash

# remove exited containers:
docker ps --filter status=dead --filter status=exited -aq | xargs -r docker rm -v

# remove unused images:
docker images --no-trunc | grep '<none>' | awk '{ print $3 }' | xargs -r docker rmi

# remove unused volumes (needs to be ran as root):
find '/var/lib/docker/volumes/' -mindepth 1 -maxdepth 1 -type d | grep -vFf <(
  docker ps -aq | xargs docker inspect | jq -r '.[]|.Mounts|.[]|.Name|select(.)'
) | xargs -r rm -fr

卷清理

docker system df 分析卷空间
# 删除所有未被任何容器关联引用的卷:
docker volume rm $(docker volume ls -qf dangling=true)

容器日志清理 (非标准输出)

docker system df -v 查看空间占用比较大的容器id
docker exec -it $container_id  /bin/bash
在用du -h --max-depth=1| sort -n 查看具体是什么占用了磁盘
上一篇:一个 Java 对象到底有多大?


下一篇:一次接口超时排查,花费了我两个星期。。