欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 资讯 > 如何优化 Elasticsearch 磁盘空间和使用情况

如何优化 Elasticsearch 磁盘空间和使用情况

2025/5/21 23:51:18 来源:https://blog.csdn.net/UbuntuTouch/article/details/148047980  浏览:    关键词:如何优化 Elasticsearch 磁盘空间和使用情况

作者:来自 Elastic Kofi Bartlett

解释如何防止和处理磁盘过满(过度使用)以及磁盘容量未被充分利用的情况。

想获得 Elastic 认证?了解下一次 Elasticsearch Engineer 培训的时间吧!

Elasticsearch 拥有许多新功能,帮助你为自己的使用场景构建最佳搜索解决方案。浏览我们的示例笔记本了解更多内容,开始免费云端试用,或立即在本地机器上尝试 Elastic。


磁盘管理在任何数据库中都非常重要,Elasticsearch 也不例外。如果你没有足够的磁盘空间,Elasticsearch 将停止向该节点分配分片。这最终会导致你无法向集群写入数据,应用程序可能因此面临数据丢失的风险。另一方面,如果你有太多磁盘空间,那么你就为不需要的资源付出了额外成本。

关于水位线的背景 - watermarks

在你的 Elasticsearch 集群中有各种 “水位线 ”阈值,用于帮助你跟踪可用磁盘空间。随着节点上的磁盘逐渐填满,第一个被触发的阈值是 “low disk watermark - 低磁盘水位线”。第二个阈值是“high disk watermark threshold - 高磁盘水位线阈值”。最后,会达到 “disk flood stage - 磁盘洪水阶段”。一旦超过这个阈值,集群将阻止写入所有在该节点上有一个分片(主分片或副本分片)的索引。读取(搜索)仍然是可行的。

如何防止和处理磁盘过满(过度使用)的情况

当你的 Elasticsearch 磁盘过满时,有多种方法可以处理:

  1. 删除旧数据:通常,数据不应永久保存。防止和解决磁盘过满的一种方法是确保当数据达到一定年龄时,被可靠地归档并删除。可以使用 ILM 来实现这一点。
  2. 增加存储容量:如果你不能删除数据,可能需要添加更多数据节点或增加磁盘容量,以便保留所有数据而不影响性能。如果你需要为集群增加存储容量,应该考虑是否只需要增加存储容量,还是也需要按比例增加 RAM 和 CPU 资源(见下面关于磁盘大小、RAM 和 CPU 比例的部分)。

如何为你的 Elasticsearch 集群增加存储容量

  1. 增加数据节点数量:请记住,新节点应与现有节点大小相同,并使用相同的 Elasticsearch 版本。
  2. 增加现有节点的大小:在基于云的环境中,通常可以轻松增加现有节点的磁盘大小和 RAM/CPU。
  3. 仅增加磁盘大小:在基于云的环境中,通常可以相对轻松地增加磁盘容量。
  4. 快照与还原:如果你愿意通过自动化流程从备份中按需检索旧数据,你可以对旧索引进行快照、删除它们,并在需要时从快照中临时还原数据。
  5. 减少每个分片的副本数:另一种减少数据的方式是减少每个分片的副本数量。为了实现高可用性,通常每个分片会有一个副本,但当数据变旧时,你可能可以在没有副本的情况下运行。这通常适用于数据是持久性的,或你有备份可以在需要时还原。
  6. 创建告警:为了防止未来磁盘被填满并主动采取行动,你应该根据磁盘使用情况创建告警,当磁盘开始填满时会通知你。

如何防止和处理磁盘容量未被充分利用的情况

如果你的磁盘容量未被充分利用,有多种方法可以减少集群中的存储体积。

如何减少 Elasticsearch 集群的存储体积

以下是几种减少集群存储体积的方法:

1 . 减少数据节点数量

如果你希望同时减少数据存储以及 RAM 和 CPU 资源,这是一种最简单的策略。下线不必要的节点通常可以带来最大的成本节省。

在下线节点之前,你应当:

  • 确保要下线的节点不是必须的 MASTER 节点。你应始终至少保留三个拥有 MASTER 角色的节点。
  • 将数据分片从要下线的节点迁移出去。

2. 用更小的节点替换现有节点

如果你不能进一步减少节点数量(通常最小配置为 3 个节点),那么你可以考虑缩小现有节点的规格。请记住,建议所有数据节点的 RAM 和磁盘大小相同,因为分片是根据每个节点上的分片数量来平衡的。

操作流程如下:

  • 向集群添加新的、更小的节点
  • 将分片从要下线的节点迁移出去
  • 关闭旧节点

3. 减少节点的磁盘大小

如果你只想减少节点上的磁盘大小,而不改变整个集群的 RAM 或 CPU,那么你可以为每个节点减少磁盘容量。减少 Elasticsearch 节点的磁盘大小并不是一个简单的过程。

最简单的方法通常是:

  • 从节点上迁移分片
  • 停止该节点
  • 为节点挂载一个合适大小的新数据卷
  • 将所有数据从旧磁盘卷复制到新卷
  • 卸载旧卷 A
  • 启动节点并将分片迁移回该节点

这个过程要求其他节点有足够容量来临时存放该节点的分片。在很多情况下,管理这个过程的成本可能会超过节省的磁盘开销。因此,直接用一个具有目标磁盘大小的新节点替换原节点可能更简单(参见上文 “用更小的节点替换现有节点”)。

当你为不必要的资源付费时,显然可以通过优化资源使用来降低成本。

磁盘大小、RAM 和 CPU 之间的关系

集群中磁盘容量与 RAM 的理想比例取决于你具体的使用场景。因此,在考虑更改存储容量时,你也应该评估当前的磁盘/RAM/CPU 比例是否平衡,以及是否需要按比例增加或减少 RAM/CPU。

RAM 和 CPU 的需求取决于索引活动的数量、查询的数量和类型,以及被搜索和聚合的数据量。这些通常与存储在集群中的数据量成正比,因此也应与磁盘大小相关。

磁盘容量与 RAM 之间的比例会根据使用场景的不同而变化。以下是一些示例:

Index activityRetentionSearch activityDisk capacityRAM
Enterprise search appModerate log ingestionLongLight2TB32GB
App monitoringIntensive log ingestionShortLight1TB32GB
E-commerceLight data indexingIndefiniteHeavy500GB32GB

请记住,修改节点机器的配置必须小心进行,因为这可能涉及节点停机,你需要确保分片不会开始迁移到其他已经超负荷的节点上。

原文:How to optimize Elasticsearch disk space and usage - Elasticsearch Labs

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词