关于磁盘爆炸了的常见处理手段,本文只探讨逻辑处理,不探讨物理硬件,也就是如何释放空间而不是新增更多的盘空间总量。
磁盘满了对于服务器的危害不言而喻,新的服务跑不起来,正在运行的服务执行不下去任务,只差撑爆了,反正就是各种不工作。需要释放一些容量,然后让服务能继续工作下去。最简单的办法就是删掉一些临时性的文件。
本文的写作目的,是做一个简单的记录,便于遇到类似情形时好作为参考,也会持续的更新方法。
工具
df
df
可用于查询磁盘的占用情况
sudo df -h /
du
du
可用于查看文件夹下各类文件占用磁盘的分布情况
sudo du -h /var/log/
ls
ls 可以查看文件的大小
ls -lh .
清理 apt cache
使用 apt-get clean
工具,并且查一查目录 /var/cache/apt/archives
的占用情况。
清理 log
journalctl
利用 journalctl 来设置最大允许 log,比如设置最大磁盘占用量为 500M。
sudo journalctl --vacuum-size=500M
清理 docker 相关的数据
清理掉不用的 docker images 和 docker containers,以及绑定的目录中用不到的文件。也可以直接利用 docker system prune
docker system prune
可以清除掉未用到的镜像、网络、容器、构建缓存。
有些 docker 容器的日志文件也会比较大,会与日俱增,比如 gitlab, 可以查看目录中 /var/lib/docker/containers/c4d2a14xxxcontainerid/c4d2a14xxxcontainerid-json.log
文件的大小。
查看 docker 日志文件的位置和大小
docker ps -aq | xargs -I '{}' docker inspect --format='{{.LogPath}}' '{}' | xargs ls -lh
如果 docker 容器的日志文件过大,可以使用 fallocate 工具减少文件体积
sudo fallocate --collapse-range --offset 0 --length 48GiB --verbose /var/lib/docker/containers/c4d2a14047xxxcontainerid/c4d2a14047xxxcontainerid-json.log
清理临时文件
tmp
查看 /tmp
目录下没有比较大的文件。
更多
持续需要更新方法,欢迎补充。