磁盘空间不足时该怎么办?

大卫Pinhas
2022-12-25 36

为了解决这个问题,我们为您提供以下选择:

配置Filestore分片
如果您决定在生产环境中添加一个新驱动器,您可以配置Sharding Binary Provider,它可以让您在一个分片文件存储中管理二进制文件。

这将是有用的,因为它将让你选择writeBehavior为' freeSpace '。将writeBehavior设置为' freeSpace '将确保二进制文件被写入具有最大可用空闲空间绝对容量的挂载。
在我们的例子中,它将首先填充新驱动器,因为它将有更多的空闲磁盘空间,并且在新驱动器的磁盘空间达到当前驱动器当前拥有的空闲空间的相同百分比后将平衡。

除此之外,你还可以在shards的provider ID下指定新旧磁盘的路径,通过指定' fileStoreDir ':


< fileStoreDir > filestore1 < / fileStoreDir >
> < /供应商

.
< fileStoreDir > filestore2 < / fileStoreDir >
> < /供应商

在配置了分片二进制提供程序之后,您将需要使用优化系统存储REST API,因为在下一个垃圾收集之后,它会引发一个标志来调用分片文件存储的冗余存储单元之间的平衡。
之后,您将需要运行垃圾收集来调用冗余存储单元之间的平衡Artifactory版本6.12.0以上,垃圾收集需要运行20次才能完全生效。
为了克服这个问题,你可以在$ARTIFACTORY_HOME/etc/ artificial .system.properties文件中添加以下属性:

artifactory.gc.skipFullGcBetweenMinorIterations = 1

为了使属性生效,需要重新启动Artifactory实例。重新启动后,可以只运行一次GC。

旧磁盘到新磁盘的迁移:
为了防止新磁盘取代旧磁盘,我们需要将所有数据从旧磁盘迁移到新磁盘。
我们有篇文章是关于"用最少的停机时间迁移大型Artifactory实例的最佳方法是什么?,其中描述了将旧Artifactory实例数据迁移到新实例的两种方法。

在使用上述任何选项之前,在将该方法实现到生产实例之前,请在测试环境中测试该方法。