我如何设置Artifactory 2.6.x使用更less的存储空间?

我的团队正在使用JFrog Artifactory 2.6.7.1 Pro。 我们有计划升级到3.x,但由于非技术原因,它们正在放慢速度。

同时我们的2.6.x安装使用了超过190GB的磁盘。 大部分是在repo / data / filestore中。

我已经运行了以下维护选项并释放了一些磁盘:

  • zappedcaching
  • 删除版本
  • 运行存储垃圾回收(这是最有效的,回来了整个2GB)
  • 压缩数据库
  • 修剪了未使用的数据
  • 运行未使用的工件caching清理

我专门回顾了可能具有快照的“快照保留”设置。 对于这些回购,它被设定为合理的价值(小于10)。

我应该查看哪些设置以释放一些磁盘空间?

您提到的一些操作(切换caching,修剪未使用的数据等)是一次性操作,可能会有一些暂时的效果,但我不确定它们在正常操作的基础上是多么有用。 毕竟,caching在那里是有原因的。

其他的,如GC,由Artifactory默认运行(例如,GC每4小时运行一次)。

所有存储pipe理细节都列在一个Artifactory用户指南页面中 。

实际上,有5个configuration选项可以帮助您定期控制存储大小:

  • 安装快照清理策略。
  • 删除未使用的caching文物。
  • 使用Jenkins Artifactory插件删除旧版本。
  • 编写使用REST API清理调用的脚本。
  • 编写一个用户插件,实现在你的情况下正确的清理逻辑。 这里有一些例子让你开始。
  1. 你需要从另一个服务器移动artifactory服务器的备份,它会给你更多的空间。
  2. 使用AQL来pipe理清理问题。

首先让我们find那些一年前创build的旧文物(假设今天是2015年5月18日)。 这个很容易用AQL: items.find({"type":"file", "created":{"$lt":"2014-05-18T"}})

请注意,我们可以如何使用比较运算符(例如“$ lt”)和date,并且我们正在利用AQL中内置的默认值,使用“$和”来复合多个条件。

如果在过去6个月内没有下载,请删除一些内容:因此,让我们在查询中添加另一个标准,这次是使用“stat”域中的“已下载”字段:

items.find({"type":"file", "created":{"$lt":"2014-05-18T"}, "stat.downloaded":{"$lt":"2014-11-18T"}})

如果你想确保没有重要的东西被删除,那么他将跳过“释放”存储库。 items.find({"type":"file", "created":{"$lt":"2014-05-18T"}, "stat.downloaded":{"$lt":"2014-11-18T"}, "repo":{"$nmatch":"*release*"}})

在这里,我们添加了一个标准,即存储库名称不包含模式“ release ”。 请注意,如果您的名称中有“发行版”的任何存储库 – 但它不是发行版存储库…它也将被跳过,您可能需要重新考虑您的命名约定。

大于1000字节的“大”文物。

因此,这里是最终的AQL查询,它查找系统中所有满足所有这些条件的工件: items.find({"type":"file", "created":{"$lt":"2014-05-18T"}, "stat.downloaded":{"$lt":"2014-11-18T"}, "repo":{"$nmatch":"*release*"}, "size":{"$gt":"1000"}})