如何清理build volume并删除旧构建以缩减其占用容量
清理Build Volume释放空间的可行方案
优先用CI/CD工具原生留存策略清理
不管你用的是Jenkins、GitLab CI、GitHub Actions、Drone这类自建工具,还是云厂商托管的CI服务,都自带构建留存配置,优先用原生功能清理,不会出现误删正在使用的构件的问题:
- 设置按构建留存天数清理,常规业务场景保留30~90天的构建产物完全足够
- 设置按最近N个成功构建留存,比如只保留最近20个成功构建的产物,更早的自动清理
- 单独关闭失败构建的产物长期留存权限,大部分场景下失败构建的调试产物保留7天即可,无需长期存放在存储卷中
手动清理未被引用的旧构建
如果是自建的存储卷,没有绑定CI/CD自动清理策略,可以手动扫描清理:
- 先执行扫描命令预览待清理内容,避免误删:
如果是存标准构建产物的目录,可以用find命令筛选旧文件,比如筛选出90天前前缀为build-的构建目录:find /path/to/build/volume -type d -mtime +90 -name "build-*"执行删除操作前必须先运行上述预览命令,确认输出的所有目录都是可以删除的旧构建,避免丢失需要保留的文件
- 确认无误后执行删除命令:
find /path/to/build/volume -type d -mtime +90 -name "build-*" -exec rm -rf {} + - 如果用Docker卷作为Build Volume,可以直接清理无主的镜像层、构建缓存:
docker builder prune -af
该命令会清理所有没有被正在使用的镜像引用的构建缓存层,通常可以释放大量占用空间
清理后的空间回收注意
- 如果你的Build Volume用的是精简制备(thin provisioning)的存储,删除文件后空间会自动释放回存储池
- 如果是厚制备的磁盘/卷,删除文件后需要根据文件系统执行Trim操作才能回收未使用的空间,ext4、xfs文件系统都可以执行
fstrim /path/to/build/volume/mountpoint完成空间回收 - 不要直接缩小卷的逻辑容量,先确认文件系统的已用空间确实降到你预期的大小后,再执行卷缩容操作,避免出现文件系统损坏
内容的提问来源于stack exchange,提问作者Scott Messinger
相关产品推荐
相关产品推荐

