CentOS Jenkins配置中如何优化磁盘使用
导读: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 { } \;
。
二、诊断磁盘占用根源
明确空间占用来源是优化的前提,可使用以下工具:
- 可视化分析工具:安装
ncdu
(sudo 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:
该配置将容器日志限制为每个文件最大10MB,保留3个文件,防止日志占满磁盘。{ "log-driver": "json-file", "log-opts": { "max-size": "10m", "max-file": "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
):
迁移后,Jenkins仍通过原路径访问数据,无需修改配置。rsync -avz /home/jenkins_jdk17 /new/storage/ # 同步数据 sudo ln -sf /new/storage/jenkins_jdk17 /home/jenkins_jdk17 # 创建软链接 sudo systemctl start 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