处理podman的overlay-containers中ctr.log日志文件过大的问题

公司服务器的一些软件使用了容器技术,比如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,没发现异常。

参考:
记一次 Docker overlay 占用磁盘 100% 的问题

你可能感兴趣的:(Linux,容器,研发管理,podman,overlay,containers,ctr.log,max-size)