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"
  }
}
EOF
systemctl 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-home

sudo resize2fs /dev/mapper/ubuntu--vg-home



# (2) 或迁移 Jenkins 数据目录

sudo systemctl stop jenkins

rsync -avz /home/jenkins_jdk17 /new/storage/

sudo ln -sf /new/storage/jenkins_jdk17 /home/jenkins_jdk17

sudo 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% 时,应考虑横向扩展存储而非单纯清理
相关推荐
呉師傅7 分钟前
【使用技巧】Adobe Photoshop 2024调整缩放与布局125%后出现点菜单项漂移问题的简单处理
运维·服务器·windows·adobe·电脑·photoshop
云姜.8 分钟前
线程和进程的关系
java·linux·jvm
heartbeat..10 分钟前
JVM 性能调优流程实战:从开发规范到生产应急排查
java·运维·jvm·性能优化·设计规范
小Tomkk37 分钟前
数据库 变更和版本控制管理工具 --Bytebase 安装部署(linux 安装篇)
linux·运维·数据库·ci/cd·bytebase
赌博羊37 分钟前
ImportError: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.32‘ not found
linux·运维·gnu
木卫二号Coding39 分钟前
第七十九篇-E5-2680V4+V100-32G+llama-cpp编译运行+Qwen3-Next-80B
linux·llama
getapi1 小时前
Ubuntu 22.04 服务器的系统架构是否为 amd64 x86_64
linux·服务器·ubuntu
消失的旧时光-19431 小时前
Linux 入门核心命令清单(工程版)
linux·运维·服务器
艾莉丝努力练剑1 小时前
【Linux:文件】Ext系列文件系统(初阶)
大数据·linux·运维·服务器·c++·人工智能·算法
小天源1 小时前
Cacti在Debian/Ubuntu中安装及其使用
运维·ubuntu·debian·cacti