jenkins节点磁盘不足时会自动拒绝调度以保护系统,需先调高free space threshold并清理builds、@tmp和大日志,再用du/ncdu定位占用源,最后通过构建丢弃策略、容器日志轮转和定期脚本实现长效防护。

当 Jenkins 节点磁盘空间突然低于设定阈值(如默认 1 GiB),Jenkins Master 会主动拒绝向该节点调度新任务,表现为节点离线、构建挂起或报错 Disk space is too low。这不是故障,而是保护机制——但必须快速干预,否则 CI/CD 流水线将大面积中断。
立即止血:临时放宽阈值并释放关键空间
先恢复调度能力,再深入清理:
- 登录 Jenkins Master 管理界面,访问 http://jenkins-url>/computer/configure,找到 Free Space Threshold,临时调高(例如设为 5 GiB 或 10 GiB),保存后节点通常会在 1–2 分钟内自动重连
- 同步执行紧急空间释放(以典型路径
/var/jenkins_home或/home/jenkins/jenkins_home为准):-
find /var/jenkins_home/jobs -path "*/builds/*" -type d -mtime +3 -exec rm -rf {} \;(删 3 天前的构建目录) -
find /var/jenkins_home/workspace -name "@tmp" -type d -mtime +1 -exec rm -rf {} \;(清构建残留临时目录) -
find /var/jenkins_home -name "*.log*" -size +50M -exec rm -f {} \;(删超大日志)
-
定位真凶:三步查清空间占用主因
不要盲目删,先看清哪类文件吃掉了最多空间:
- 用
du -sh /var/jenkins_home/{jobs,workspace,plugins,logs}/* | sort -hr | head -10快速列出 TOP10 占用子目录 - 若发现
jobs/<job-name>/builds/</job-name>异常庞大,说明该任务未配置构建保留策略;若workspace/下大量残留,说明构建异常退出或 agent 未正常 cleanup - 运行
ncdu /var/jenkins_home(需提前apt install ncdu)进入交互式分析,可直观钻取任意目录,精准定位单个 >500MB 的日志或归档包
长效防御:从配置与流程上堵住漏洞
避免反复救火,需固化两项机制:
- 在每个 Job 配置中启用构建丢弃策略:进入 Job → Configure → Discard old builds → 勾选 “Max # of builds to keep”(建议 10–20)或 “Max # of days to keep builds”(建议 7–14 天)
-
为所有 Kubernetes Agent Pod 设置资源限制与日志轮转:在
podTemplate中添加容器级日志配置,例如 Docker 环境下全局设置{"max-size": "10m", "max-file": "3"},防止容器日志无限膨胀 - 定期(如每周)执行清理脚本并加入 cron:
0 2 * * 0 find /var/jenkins_home/jobs -path "*/builds/*" -type d -mtime +7 -exec rm -rf {} \; 2>/dev/null
进阶建议:监控与自动化响应
把“等报警再处理”变成“阈值逼近即干预”:
- 在 Prometheus + Grafana 中接入 Jenkins Exporter,监控
jenkins_node_disk_free_bytes指标,对节点磁盘设置 85% 使用率告警 - 利用 Jenkins Health Advisor(CloudBees 提供的免费服务)自动扫描环境,它能识别长期未清理的 job、过期插件、日志配置缺失等问题,并给出修复建议
- 对高频构建项目,改用
pipeline { agent { kubernetes {...} } }并指定idleMinutes,让 pod 在空闲后自动销毁,彻底规避 workspace 残留











