故障现象
早晨起来发现gitlab上的一些CICD流程运行失败了。因为未改动CICD脚本,故怀疑是runner机器故障。
关键步骤
登录机器检查磁盘占用
-h``` 直接确认根目录已经100%占用了,故确定是磁盘满了1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| #### 检查docker情况 因为对docker的磁盘占用有一些预期,所以直接检查docker是否镜像占用过多。 ```docker image prune``` 先尝试用上面最温柔的方式清理一些数据,然后```df -h```检查磁盘空间占用变少,重新尝试在gitlab上运行流水线成功,确认磁盘问题。
#### 磁盘占用情况 ```bash [root@TJnetwork ~]# df -h 文件系统 容量 已用 可用 已用% 挂载点 devtmpfs 4.0M 0 4.0M 0% /dev tmpfs 7.6G 0 7.6G 0% /dev/shm tmpfs 3.1G 297M 2.8G 10% /run tmpfs 4.0M 0 4.0M 0% /sys/fs/cgroup /dev/mapper/openeuler-root 63G 36G 24G 61% / tmpfs 7.6G 0 7.6G 0% /tmp /dev/sda2 974M 138M 770M 16% /boot /dev/sda1 599M 6.2M 593M 2% /boot/efi /dev/mapper/openeuler-home 31G 414M 29G 2% /home /dev/sdb 1007G 124G 832G 13% /data
|
上面是当时的截图。根目录占用很高,data目录占用很低,所以尝试把docker的根目录迁移到/data目录下。
docker配置的更改
保证目标文件夹有权限,我直接使用777权限。 如果文件夹权限不对docker进程会启动失败。
docker的配置文件一般在/etc/docker/daemon.json
1 2 3 4 5
| [root@TJnetwork lib] { "data-root": "/data/docker-data", "registry-mirrors" : [ "https://dockerpull.com", "https://register.liberx.info", "https://huecker.io", "https://dockerhub.timeweb.cloud", "https://dockerhub1.beget.com", "https://noohub.ru" ] }
|
核心就是data-root的目录,重启之后数据都存在/data/docker-data上了。
后续核心命令
现在虽然硬盘加到1T,但是早晚也会满,弄一个计划任务,每天运行一次docker的清理命令。
1
| docker image prune -a --filter "until=720h"
|
使用linux下常用的定时命令
crontab -e
加入如下规则,每天运行一次docker镜像清理命令
0 0 * * * docker image prune -a --filter "until=720h"