首页主机资讯CentOS Jenkins配置中如何优化磁盘使用

CentOS Jenkins配置中如何优化磁盘使用

时间2025-10-15 22:03:03发布访客分类主机资讯浏览821
导读:CentOS Jenkins磁盘使用优化策略 一、立即释放紧急磁盘空间 针对Jenkins磁盘空间不足的紧急情况,可通过以下命令快速清理: 清理Docker无用资源(若使用容器化部署):docker system prune -a --v...

CentOS Jenkins磁盘使用优化策略

一、立即释放紧急磁盘空间

针对Jenkins磁盘空间不足的紧急情况,可通过以下命令快速清理:

  • 清理Docker无用资源(若使用容器化部署):docker system prune -a --volumes --force,该命令会移除所有未使用的容器、网络、镜像及悬空卷,释放大量空间。
  • 清理Jenkins工作空间历史记录:进入Jenkins主目录(如/home/jenkins/jenkins_home),执行find . -type d -name "builds" -exec rm -rf { } /* \; ,保留目录结构仅删除构建内容,避免误删配置。
  • 删除超大日志文件:查找并删除大于100MB的日志文件,命令为find /home/jenkins/jenkins_home -type f -name "*.log*" -size +100M -exec rm -f { } \;

二、诊断磁盘占用根源

明确空间占用来源是优化的前提,可使用以下工具:

  • 可视化分析工具:安装ncdusudo yum install ncdu -y),执行ncdu /home/jenkins_jdk17,直观查看各目录占用比例,快速定位大文件。
  • Docker存储检查:若使用Docker,执行docker system df -v,查看镜像、容器、卷的存储占用情况。
  • Jenkins目录分析:执行du -h --max-depth=1 /home/jenkins_jdk17/jenkins_home | sort -hr,按大小排序显示Jenkins主目录下各子目录占用,重点关注workspace(工作空间)、jobs(构建任务)目录。

三、针对性清理策略

1. Jenkins专用清理

  • 按时间清理构建历史:进入/home/jenkins_jdk17/jenkins_home/jobs/目录,执行find . -path "*/builds/*" -type d -mtime +7 -exec rm -rf { } \; ,删除7天前的构建记录(保留最近一周)。
  • 清理工作空间残留:执行find /home/jenkins_jdk17/jenkins_home/workspace/ -name "@tmp" -type d -mtime +1 -exec rm -rf { } \; ,删除临时工作空间(@tmp目录),这些目录通常存放构建过程中的临时文件。

2. Docker专项优化

  • 限制容器日志大小:编辑Docker配置文件(/etc/docker/daemon.json),添加以下内容并重启Docker:
    {
    
      "log-driver": "json-file",
      "log-opts": {
    
        "max-size": "10m",
        "max-file": "3"
      }
    
    }
    
    
    该配置将容器日志限制为每个文件最大10MB,保留3个文件,防止日志占满磁盘。
  • 清理悬空镜像:执行docker images -q -f dangling=true | xargs docker rmi,删除未被任何容器引用的悬空镜像,释放镜像存储空间。

四、长期预防方案

1. Jenkins配置优化

  • 安装监控插件:安装Disk Usage插件(实时监控Jenkins磁盘占用)、ThinBackup插件(增量备份与清理),通过插件界面查看空间使用趋势并触发清理。
  • 设置构建保留策略:进入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 {
    }
         \;
    
    
    脚本每日自动执行,定期清理过期数据。

2. 存储扩容方案

  • LVM动态扩展:若使用LVM分区,执行以下命令扩展分区(以扩展50GB为例):
    sudo lvextend -L +50G /dev/mapper/ubuntu--vg-home  # 扩展逻辑卷
    sudo resize2fs /dev/mapper/ubuntu--vg-home       # 调整文件系统大小
    
    扩展后无需重启服务器,立即生效。
  • 迁移Jenkins数据目录:停止Jenkins服务(sudo systemctl stop jenkins),将数据目录迁移至大容量磁盘(如/new/storage):
    rsync -avz /home/jenkins_jdk17 /new/storage/       # 同步数据
    sudo ln -sf /new/storage/jenkins_jdk17 /home/jenkins_jdk17  # 创建软链接
    sudo systemctl start jenkins                       # 启动服务
    
    迁移后,Jenkins仍通过原路径访问数据,无需修改配置。

五、监控与告警增强

配置Prometheus告警规则,当Jenkins存储使用率超过阈值(如10%)时触发告警,示例规则如下:

- 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) }
}
    %"

告警可通过邮件、钉钉等方式发送,及时提醒管理员处理。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: CentOS Jenkins配置中如何优化磁盘使用
本文地址: https://pptw.com/jishu/727445.html
如何在centos中打包golang项目 centos jenkins环境变量设置

游客 回复需填写必要信息