问题描述
这是我之前here提出的问题的后续。
我有一个包含三个数据节点和一个头节点的集群。每个数据节点上的硬盘驱动器具有三个分区:/data1
、/data2
和/data3
。我在头节点上配置了我的 elasticsearch.yml
,如下所示:
path.data: /data1/elasticsearch,/data2/elasticsearch_2,/data3/elasticsearch_3
我现有的索引存储在每个节点上的 /data1/elasticsearch
中。但是,当我禁用复制并尝试为我的新索引加载数据时,我触发了 low watermark cluster setting
; /data1
空间不足。
查看 Elasticsearch 文档,我发现 this warning:
Elasticsearch 不会在节点的数据路径之间平衡分片。单个路径中的高磁盘使用率会触发整个节点的高磁盘使用率水印。如果触发,即使节点的其他路径有可用磁盘空间,Elasticsearch 也不会向节点添加分片。如果您需要额外的磁盘空间,我们建议您添加新节点而不是额外的数据路径。
所以我的问题是:如果 Elasticsearch 不为节点上的下一个空路径分配分片,为什么它允许您指定多个路径进行数据存储?
解决方法
不再允许使用多个数据路径的选项,此功能存在一些问题,例如您提到的问题以及在同一节点上使用多个磁盘时 kibana 可能显示错误可用空间的事实。
根据此github issue,计划在 7.13 版中弃用并在 8.0 版中删除使用多个数据路径。
根据同一个问题:
(...) 多数据路径是一项成本非常高的功能(其设计中有许多错误和缺陷),用户相对较少,而且最重要的是,在 Elasticsearch 之外有更好的替代标准。