一、确认问题
-
elasticsearch节点启动失败
-
elasticsearch节点集群日志中有类似如下报错
bashElasticsearchException: java.nio.file.FileSystemException: /usr/share/elasticsearch/workspace/data/nodes/0/state/_13qo.fdt: No space left on device
二、处理办法
问题原因
- 主机磁盘空间不足
- 正常情况下ES自身是有磁盘水位线(cluster.routing.allocation.disk.watermark)的设置,存储数据目录在非人为解除只读情况下不会打满磁盘,需要确认导致磁盘打满的根本原因,大致有以下方向:
- 水位线达到阈值后触发集群只读,运维人员手动解除了只读
- 集群日志级别过低,并且没有配置好滚动策略导致日志无法滚动或保存日志数量过大
3.与其他服务共用了一块存储,其他服务打爆了磁盘
处理办法
根据 问题原因 中指出的思路排查出问题根本原因并按照以下思路处理
-
删除磁盘上服务的日志类文件,给ES留出能正常运行的空间
-
节点能够正常启动后立即设置集群只读可删
bashcurl -s -XPUT -H "Content-Type: application/json" es访问地址/_cluster/settings -d '{"persistent": {"cluster.blocks.read_only_allow_delete": true}}' -
删除ES集群监控类索引
bashcurl -s -XDELETE es访问地址/.monitoring-es* -
给数据量大、按时间创建的索引设置生命周期,只保留一定期限内的数据,超过期限的删除,关于索引生命周期管理(ILM)可参考https://elasticstack.blog.csdn.net/article/details/102728987
-
若与其他服务共用磁盘,建议拆分开,避免服务之间相互干扰,增加运维难度
-
最后处理完磁盘空间问题后,需要取消集群只读的设置
bashcurl -s -XPUT -H "Content-Type: application/json" es访问地址/_cluster/settings -d '{"persistent": {"cluster.blocks.read_only_allow_delete": null}}'