如何设置 Artifactory 2.6.x 以使用更少的存储?

如何设置 Artifactory 2.6.x 以使用更少的存储?

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

同时,我们的 2.6.x 安装占用了超过 190GB 的磁盘空间。其中大部分空间位于 repo/data/filestore 中。

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

  • 删除缓存
  • 已删除版本
  • 运行存储垃圾收集(这是最有效的,恢复了整个 2GB)
  • 压缩数据库
  • 删除未使用的数据
  • 运行未使用的工件缓存清理

我专门检查了可以有快照的存储库的“要保留的快照”设置。对于这些存储库,它被设置为合理的值(小于 10)。

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

答案1

您提到的某些操作(清除缓存、删除未使用的数据等)是一次性操作,可能会产生一些暂时效果,但我不确定它们在正常操作基础上有多大用处。毕竟,缓存的存在是有原因的。

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

所有存储管理详细信息均列于一处Artifactory 用户指南页面

实际上,有 5 个配置选项可以帮助您控制存储大小例行地

  • 设置快照清理策略。
  • 删除未使用的缓存工件。
  • 使用 Jenkins Artifactory 插件删除旧版本。
  • 编写一个使用 REST API 清理调用的脚本。
  • 编写一个用户插件,实现适合您情况的任何正确的清理逻辑。这里有些例子帮助您入门。

答案2

  1. 您需要从另一台服务器移动artifactory 服务器的备份,这样可以为您提供更多空间。
  2. 使用 AQL 来管理清理问题。

首先,让我们找到旧的工件,即一年多以前创建的工件(假设今天是 2015 年 5 月 18 日)。使用 AQL 可以轻松完成这个: items.find({"type":"file", "created":{"$lt":"2014-05-18T"}})

请注意我们如何将“$lt”等比较运算符与日期结合使用,以及我们如何利用 AQL 内置的默认功能,即使用“$and”将多个条件组合在一起。

想要删除过去 6 个月内未下载过的内容:因此,让我们在查询中添加另一个条件,这次使用“stat”域中的“downloaded”字段:

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"}})

相关内容