降低服务器上Azure自托管代理的存储占用:如何释放空间?
Azure自托管代理_work文件夹存储优化与常见问题解答
1. 如何减少服务器存储空间占用?
- 配置代理自动保留策略:在Azure DevOps组织的代理池设置中,编辑目标代理的工作目录规则,设置作业历史保留天数和最大缓存容量,让代理自动清理过期的作业文件与缓存数据。
- 启用作业自动清理:在流水线的作业配置里勾选「完成后清理工作目录」,每次作业结束后自动删除当前作业的临时工作文件。
- 手动清理缓存:使用
az devops cache delete命令清理指定类型的缓存(如NuGet、Docker镜像),或定期删除c文件夹中确认过期的缓存内容。 - 拆分代理职责:将同时承担构建、部署的代理拆分为专用构建代理和部署代理,避免不同类型的缓存交叉堆积。
- 定期清理临时文件:直接删除
temp文件夹内的所有文件,这类临时数据不会影响现有或后续作业。
2. _work子文件夹的用途
根据Azure自托管代理的默认结构,各子文件夹作用如下:
a:存放作业下载的构件(Artifacts)、第三方工具包,比如构建依赖库、部署包等。b:作业的临时工作目录,流水线运行时的源代码、编译产物、执行脚本都会存放在这里,每个作业对应一个子目录。c:代理的缓存目录,存储NuGet包、Docker镜像、npm依赖等重复使用的资源,用于加速后续作业的执行。temp:系统临时文件存储目录,作业运行过程中产生的临时数据、日志片段都会临时存放在这里。_tasks:存放下载的Azure DevOps任务扩展,各类构建、部署任务的执行脚本和依赖文件都在这个目录下。
3. 是否可删除部分文件夹释放空间?删除后可能存在哪些问题?
可安全删除的文件夹及注意事项
temp:完全可以删除,所有文件都是临时生成的,不会对现有或后续作业造成影响。b:确认没有作业正在运行时,可以删除里面的子目录(已完成作业的工作目录),删除后不会影响后续作业;但如果有作业正在执行,删除会直接导致作业失败。a:若里面的构件已无后续作业依赖,可删除;但如果有流水线依赖这些构件,会导致作业失败,建议优先通过DevOps的自动保留策略清理,避免手动误删。
不建议随意删除的文件夹及风险
c:删除后会清空代理缓存,后续作业需要重新下载所有依赖,导致作业执行速度变慢,但不会引发失败。_tasks:删除会导致代理无法找到对应的任务扩展,正在运行的作业会直接失败,后续作业需要重新下载任务扩展,大幅降低执行效率。
通用风险
如果删除文件夹时正好有作业在运行,会直接中断作业并导致失败;手动删除容易误删需要保留的文件,建议优先使用Azure DevOps提供的自动清理机制,而非手动操作。
内容的提问来源于stack exchange,提问作者Tahami Rizwan
相关产品推荐
相关产品推荐

