> 技术文档 > Jenkins服务器报磁盘空间不足的问题解决方案_jenkins磁盘满了怎么清理

Jenkins服务器报磁盘空间不足的问题解决方案_jenkins磁盘满了怎么清理

我们在开发项目的时候使用Jenkins进行自动化构建,能够提高我们的打包部署效率,但使用时间久了,服务器磁盘空间就会堆满,报“jenkins Disk space is below threshold of 1.00 GiB. Only 361.88 MiB out of 99.97 GiB left on /home/jenkins.”错误。我们如何解决这个问题了?本文将详细阐述。

一、立即释放磁盘空间

适用于紧急处理

# (1) 清理 Docker 无用资源 (适用于容器化部署)docker system prune -a --volumes --force# (2) 清理 Jenkins 工作空间历史记录# 进入 Jenkins 容器或主机cd /home/jenkins/jenkins_home/jobs/find . -type d -name \"builds\" -exec rm -rf {}/* \\;  # 保留目录结构仅删除内容# (3) 删除超大日志文件find /home/jenkins_jdk17 -type f -name \"*.log*\" -size +100M -exec rm -f {} \\;

二、诊断磁盘占用根源

# (1) 可视化分析磁盘占用 (安装 ncdu 工具)sudo apt install ncdu -y && ncdu /home/jenkins_jdk17# (2) 检查 Docker 存储占用docker system df -v# (3) 定位 Jenkins 大文件分布du -h --max-depth=1 /home/jenkins_jdk17/jenkins_home | sort -hr

三、针对性清理策略

1.Jenkins 专用清理

# (1) 按时间清理构建历史 (保留最近10次)cd /home/jenkins_jdk17/jenkins_home/jobs/find . -path \"*/builds/*\" -type d -mtime +7 -exec rm -rf {} \\;  # 删除7天前的构建# (2) 清理 workspace 残留find /home/jenkins_jdk17/jenkins_home/workspace/ -name \"@tmp\" -type d -mtime +1 -exec rm -rf {} \\;

2.Docker专项优化

# (1) 限制容器日志大小 (全局配置)sudo tee /etc/docker/daemon.json <<EOF{ \"log-driver\": \"json-file\", \"log-opts\": { \"max-size\": \"10m\", \"max-file\": \"3\" }}EOFsystemctl restart docker# (2) 清理 dangling 镜像docker images -q -f dangling=true | xargs docker rmi

四、长期预防方案

Jenkins 配置优化

        安装插件

        ThinBackup:增量备份与清理

        Disk Usage:实时监控

        全局配置

        进入 Manage Jenkins → System Configuration

        设置构建保留策略:

        Max # of builds to keep = 10

        Days to keep builds = 7

​​​​​​​自动化运维脚

创建定时清理任务 (/etc/cron.daily/jenkins_cleanup):

#!/bin/bash# 清理 30 天前的构建记录find /home/jenkins_jdk17/jenkins_home/jobs/ -path \"*/builds/*\" -type d -mtime +30 -delete# 清理临时工作空间find /home/jenkins_jdk17/jenkins_home/workspace/ -name \"@tmp\" -type d -mtime +1 -exec rm -rf {} \\;# 清理 Docker 日志find /var/lib/docker/containers/ -name \"*.log\" -size +50M -exec truncate -s 0 {} \\;

​​​​​​​存储扩容方案

# (1) 使用 LVM 动态扩展分区sudo lvextend -L +50G /dev/mapper/ubuntu--vg-homesudo resize2fs /dev/mapper/ubuntu--vg-home# (2) 或迁移 Jenkins 数据目录sudo systemctl stop jenkinsrsync -avz /home/jenkins_jdk17 /new/storage/sudo ln -sf /new/storage/jenkins_jdk17 /home/jenkins_jdk17sudo systemctl start jenkins

五、监控与告警增强

# Prometheus 告警规则示例 (prometheus.rules.yml)- alert: JenkinsLowDiskSpace  expr: (node_filesystem_avail_bytes{mountpoint=\"/home/jenkins_jdk17\"} / node_filesystem_size_bytes{mountpoint=\"/home/jenkins_jdk17\"}) * 100 < 10  for: 15m  labels:    severity: critical  annotations:    summary: \"Jenkins 存储空间不足 (实例 {{ $labels.instance }})\"    description: \"挂载点 /home/jenkins_jdk17 剩余空间仅剩 {{ printf \\\"%.2f\\\" (100 - (node_filesystem_avail_bytes{mountpoint=\\\"/home/jenkins_jdk17\\\"} / node_filesystem_size_bytes{mountpoint=\\\"/home/jenkins_jdk17\\\"}) * 100) }}%\"

六、关键总结

  1. 优先清理 workspace/@tmp 和 builds/ 目录,这些是主要空间占用源
  2. 对于容器化部署,日志轮转配置比物理机环境更重要
  3. 当存储使用率持续 >80% 时,应考虑横向扩展存储而非单纯清理