You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

删除Docker Artifactory仓库文件夹未释放磁盘空间,如何触发空间回收?

Artifactory删除工件后磁盘空间未释放的解决步骤

我之前也碰到过一模一样的糟心事——用AQL删了一万八千多个镜像,结果磁盘空间纹丝不动,Artifactory的存储统计也没变化,折腾了好一阵才理清问题。下面是你需要逐一检查和执行的操作:

1. 先确认AQL删除操作真的生效了

  • 重新跑一遍你的AQL查询,带上recursive:true参数,看看目标文件夹里的镜像是不是真的被标记为删除了。如果没加递归参数,可能只删了文件夹本身,里面的工件根本没动。
  • 去Artifactory后台的Admin > Artifacts > Deleted Items里核对,有没有你删除的那些条目。如果这里看不到,说明你的AQL删除命令可能因为权限、语法或者路径错误没执行成功。

2. 正确执行垃圾回收(GC)

你提到执行了垃圾回收,但得确保是系统垃圾回收,且执行过程不受干扰:

  • 要去Admin > Maintenance > Garbage Collection里执行System Garbage Collection,而不是“清理未使用缓存工件”(那个是针对缓存的,和已删除工件无关)。
  • 执行GC前,最好把Artifactory切换为只读模式,或者暂停所有CI/CD推送、文件上传操作——如果有新文件写入,GC会跳过正在被占用的已删除文件,导致回收不彻底。
  • 查看GC日志:去Admin > Logs > Request Log或者服务器上的$ARTIFACTORY_HOME/logs/artifactory.log里搜garbage collection,确认有没有GC completed successfully的提示,或者有没有报错、跳过文件的记录。比如某个镜像还在被下载,进程占用了文件句柄,GC就会跳过它,得等下次GC或者重启后再处理。

3. 解决磁盘层面的“已删未放”问题

即使Artifactory回收了文件,Linux文件系统可能因为进程占用,不会立刻释放空间:

  • 执行命令lsof | grep deleted,看看有没有Artifactory相关的进程拿着已删除文件的句柄。如果有,重启Artifactory就能释放这些被占用的空间。
  • 用du -sh $ARTIFACTORY_HOME/data查看Artifactory数据目录的实际大小,对比df -h的挂载点使用情况。如果du显示大小已经变小,但df没变,百分百是进程占用问题。

4. 手动刷新存储统计

Artifactory的admin/advanced/storage_summary不会实时更新,需要手动触发:

  • 进入存储统计页面,点击右上角的Refresh按钮,等待几分钟后再看,工件数量和存储大小应该就会同步更新了。

5. 极端情况:检查重复数据删除与孤立哈希块

如果你开启了Artifactory的重复数据删除功能,已删除工件对应的哈希块可能还被其他工件引用,导致无法回收:

  • 去Admin > Repositories > Repositories,找到目标仓库的Storage设置,手动触发Optimize Storage功能——这个操作会清理所有未被引用的孤立哈希块,释放真正的磁盘空间。

内容的提问来源于stack exchange,提问作者Peter Kahn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:46:53