Ubuntu上Jenkins存储空间优化实操指南
一 定位大目录与根因
df -h、sudo du -h --max-depth=1 /var/lib/jenkins | sort -hr | headjobs或workspace占用异常高,优先从“历史构建保留策略”和“工作区残留”入手。二 配置构建保留策略与定期清理
三 清理残留工作区与历史构建
jenkinsapi):import os, shutil, logging
from jenkinsapi.jenkins import Jenkins
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__file__)
def get_jenkins_instance():
jenkins_url = "http://your-jenkins-url"
username = "admin"
password = "api_token_or_password"
return Jenkins(jenkins_url, username=username, password=password)
def cleanup_orphaned_workspaces(jenkins, jenkins_home):
ws_root = os.path.join(jenkins_home, "workspace")
if not os.path.isdir(ws_root):
return
existing_jobs = set(j.name for j in jenkins.jobs)
for name in os.listdir(ws_root):
job_ws = os.path.join(ws_root, name)
if os.path.isdir(job_ws) and name not in existing_jobs:
logger.info("Removing orphaned workspace: %s", job_ws)
shutil.rmtree(job_ws)
if __name__ == "__main__":
jenkins = get_jenkins_instance()
cleanup_orphaned_workspaces(jenkins, "/var/lib/jenkins")
四 迁移JENKINS_HOME到更大磁盘
sudo systemctl stop jenkinssudo rsync -avz /var/lib/jenkins/ /data/jenkins/sudo mv /var/lib/jenkins /var/lib/jenkins.bak/etc/fstab添加:/dev/sdX1 /var/lib/jenkins ext4 defaults 0 2sudo mount -asudo systemctl start jenkinsdf -h /var/lib/jenkins 与 ls /var/lib/jenkins 确认空间与数据无误JENKINS_HOME环境变量到新路径而不迁移数据或更换挂载点,并不会增加可用空间。五 容器与系统层面的优化
docker system prune -af --volumesdocker ps -s,对大体积层进行镜像瘦身或分层优化/etc/default/jenkins中设置JAVA_ARGS="-Xmx4096m"),避免频繁Full GC带来的额外I/O