Elasticsearch节点磁盘空间耗尽

本文描述了一个Elasticsearch集群中数据节点磁盘空间耗尽导致的严重后果,包括数据损坏和集群状态变为RED。日志显示,磁盘空间不足影响了segment merge操作和translog的完整性,可能导致数据丢失。根据社区讨论,手动删除.recovering文件可能是恢复的一种方法,但未实际验证。由于缺乏副本,当主节点出现问题时,没有备份可用。Elasticsearch依赖本地文件系统存储Lucene文件,因此磁盘空间管理至关重要,可通过cluster.routing.allocation.disk.watermark.low设置来控制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

       最近遇到了一个特殊的情况,我们所使用的一个Elasticsearch集群的数据节点磁盘空间耗尽(out of space),啥事会发生呢? 数据损坏,集群RED。下面是相关的日志信息,我将其中一些关键点日志信息重点小时。这里 ES-Data_IN_11是当时的Master节点,ES-Data_IN_12是出现的磁盘耗尽的数据节点,出事儿的index名字为raw_v3.2017_03_22,我们仍然使用的是Elasticsearch 1.7.2。

[2017-03-22 11:57:30,503][WARN ][index.merge.scheduler ] [ES-Data_IN_12] [raw_v3.2017_03_22][1] failed to merge

[2017-03-22 11:57:30,646][WARN ][index.engine ] [ES-Data_IN_12] [raw_v3.2017_03_22][1] failed engine [merge exception]

[2017-03-22 11:57:30,663][WARN ][indices.cluster ] [ES-Data_IN_12] [[raw_v3.2017_03_22][1]] marking and sending shard failed due to [engine failure, reason [merge exception]]

[2017-03-22 11:57:31,677][WARN ][cluster.action.shard ] [ES-Data_IN_11] [raw_v3.2017_03_22][1] received shard failed for [raw_v3.2017_03_22][1], node[h9d1tKJFRtmg1aG-VMkA4A], [P], s[STARTED], indexUUID [2Z-UtAr8Qx2h6Xe9BkxvAA], reason [shard failure [engine failure, reason [merge exception <
### Elasticsearch 节点在线但未使用分片的原因 当Elasticsearch节点处于在线状态却并未使用任何分片时,可能由多种因素造成。一种情况是该节点被配置为专门的角色节点,比如协调节点(coordinating only),这种类型的节点不存储数据也不参与选举主节点的过程[^3]。 另一种可能性在于集群层面的设置或是特定索引级别的 shard allocation filter 导致新创建的数据分片无法分配到此节点上。这可能是由于设置了诸如 awareness 属性来控制副本如何分布于不同属性标签下的节点之间;或者是通过 `index.routing.allocation.*` 参数指定了某些条件限制了哪些节点能够接收某个具体索引的新建或已存在的分片[^2]。 另外,在多数据中心部署场景下,为了防止跨广域网络传输带来的延迟影响性能表现以及增加成本开销,通常会利用 zone-awareness 功能将同属一个地理区域内的机器组成一个小范围内的子集来进行更高效的读写操作。此时即使目标节点健康可用也可能因为不符合上述策略而未能接收到相应的分片任务[^4]。 最后还有一种较为少见的情况就是磁盘空间不足、文件描述符耗尽等问题也会阻止新的分片分配给当前节点,尽管它看起来是在正常工作的状态下[^1]。 #### 解决方案 针对以上提到的各种原因,可以采取如下措施: 对于仅作为协调角色使用的节点无需特别处理,除非业务需求发生变化需要调整其职能定位,则应修改对应的 node attributes 配置项使其具备其他能力。 若是由于 shard allocation filters 设置不当引起的问题,建议检查现有过滤规则是否合理,并依据实际情况适当放宽这些约束以便让更多的资源得到充分利用。可以通过更新相关参数如 `cluster.routing.allocation.awareness.attributes` 来实现这一点。 如果是出于高可用性和灾难恢复考虑所设计的数据中心感知机制造成的,则需评估整体架构布局合理性的同时兼顾局部优化的可能性,确保各部分之间的协作顺畅高效。必要时可借助专用插件完成更加精细复杂的调度逻辑定制化开发工作。 至于硬件资源瓶颈方面的影响,定期监控各项指标变化趋势有助于提前预警潜在风险点所在位置进而及时作出响应动作加以缓解压力。例如清理不必要的日志记录减少占用量、申请扩容升级基础设施等都是可行的办法之一。 ```bash GET /_cat/shards?v=true&s=state POST _cluster/reroute?retry_failed=true PUT /my-index/_settings { "settings": { "number_of_replicas": 0, "routing.allocation.include._name": "node_name" } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值