公司服务器的一些软件使用了容器技术,比如Podman、Docker,从架设到现在已经稳定运行了1年半了,半年前发现磁盘占用比较大,/var/lib/containers
占用了260G的磁盘空间,重启了一下容器,磁盘空间降下来了不少,同时由于这个目录下存的都是容器的磁盘文件,不能乱动,所以也就没管它。
昨天处理了Jira所在服务器由于磁盘空间不足导致的问题,参见JIRA维护记——使用原实例位置恢复数据,担心这个服务器在某个时间也出现磁盘空间不足导致问题,所以今天来仔细查一下。
在/var/lib/containers/storage
目录使用du -sh * | sort -hr | head -5
命令查看此目录下的占用最多的前5个目录:
$ du -sh * | sort -hr | head -5
212G overlay-containers
28G overlay
2.4G volumes
24M overlay-layers
1020K libpod
overlay-containers
占用高达212G,该分区总共才295G。
du -sh *
只能统计当前目录,不能统计子目录,为了更快定位目录,使用du -h -d 10
命令列出10层子目录内的信息,子目录层数可以根据情况调整。完整命令du -h -d 10 | sort -hr | head -10
:
$ du -h -d 10 | sort -hr | head -10
243G .
212G ./overlay-containers/0836bd03d25f8080ef8dc28fc17326eec556ac936273f5933d92a32a09d65658/userdata
212G ./overlay-containers/0836bd03d25f8080ef8dc28fc17326eec556ac936273f5933d92a32a09d65658
212G ./overlay-containers
28G ./overlay
6.8G ./overlay/983650496b3437c000dc399af5b842638b6feec7d1bf6f6a662e11c542ca1800
3.8G ./overlay/983650496b3437c000dc399af5b842638b6feec7d1bf6f6a662e11c542ca1800/merged
3.1G ./overlay/983650496b3437c000dc399af5b842638b6feec7d1bf6f6a662e11c542ca1800/diff
2.6G ./overlay/58f71749e43e3f55e6665e8bed8f97763110b52e8bb67dc97557310e1314d4cf/merged
2.6G ./overlay/58f71749e43e3f55e6665e8bed8f97763110b52e8bb67dc97557310e1314d4cf
可以看到是某个容器的数据占用了212G,直接进入/var/lib/containers/storage/overlay-containers/0836bd03d25f8080ef8dc28fc17326eec556ac936273f5933d92a32a09d65658/userdata
,使用ll -h
查看:
$ ll -h
total 212G
drwx------ 6 root root 4.0K Jun 8 10:12 ./
drwx------ 3 root root 4.0K Dec 2 2021 ../
drwxr-xr-x 2 root root 4.0K Dec 2 2021 artifacts/
srwx------ 1 root root 0 Apr 5 15:35 attach=
-rw------- 1 root root 24K Dec 2 2021 buildah.json
-rw-r--r-- 1 root root 32K Apr 5 15:35 config.json
prw-r--r-- 1 root root 0 Apr 5 15:35 ctl|
-rw------- 1 root root 212G Jun 8 10:13 ctr.log
drwxr-xr-x 3 root root 4.0K Dec 8 2021 d811302d8e3f1e272b8213e07b4e2a7da260fba273216e75eafcc44dff3aab2e/
drw-r--r-- 2 root root 4.0K Dec 2 2021 secrets/
drwxrwxrwt 3 root root 80 Apr 5 15:35 shm/
prw-r--r-- 1 root root 0 Apr 5 15:35 winsz|
发现是一个日志文件ctr.log
,占用高达212G。其实可以使用du -ah -d 10
直接列出10层子目录内的所有文件和目录的大小,完整命令:du -ah -d 10 | sort -hr | head -30
,可以直接找出最大的30个文件和目录。
网上查了一些资料:
Podman log file max size limit not working
[Question] Is there a way to limit the size of the logs?
这些基本上都是在创建容器时添加参数--log-opt max-size=限制大小
,但是我的是容器已经运行很久了,不能使用这种方法。
笔者使用了一种简单粗暴的方法echo "" > ctr.log
来解决,立马降下来了,经查是Gitlab所在容器,经过测试Gitlab,没发现异常。文章来源:https://www.toymoban.com/news/detail-475807.html
参考:
记一次 Docker overlay 占用磁盘 100% 的问题文章来源地址https://www.toymoban.com/news/detail-475807.html
到了这里,关于处理podman的overlay-containers中ctr.log日志文件过大的问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!