如果 Elasticsearch 不能跨分区平衡分片,为什么它允许您在 .yml 文件中指定多个磁盘分区?

Why does Elasticsearch allow you to specify multiple disk partitions in the .yml file if it doesn't balance shards across partitions?

这是我之前提出的问题的后续 here

我有一个包含三个数据节点和一个头节点的集群。每个数据节点上的硬盘驱动器有三个分区:/data1/data2/data3。我像这样在头节点上配置了 elasticsearch.yml

path.data: /data1/elasticsearch, /data2/elasticsearch_2, /data3/elasticsearch_3

我现有的索引存储在每个节点上的 /data1/elasticsearch 中。但是,当我禁用复制并尝试为我的新索引加载数据时,我触发了 low watermark cluster setting; /data1 没有足够的 space。

查看 Elasticsearch 文档我发现 this warning:

Elasticsearch does not balance shards across a node’s data paths. High disk usage in a single path can trigger a high disk usage watermark for the entire node. If triggered, Elasticsearch will not add shards to the node, even if the node’s other paths have available disk space. If you need additional disk space, we recommend you add a new node rather than additional data paths.

所以我的问题是:如果 Elasticsearch 不将分片分配到节点上的下一个空路径,为什么它允许您为数据存储指定多个路径?

不再允许使用多个数据路径的选项,此功能存在一些问题,例如您提到的问题以及使用多个磁盘时 kibana 可能显示错误的空闲 space在同一节点上。

根据此github issue

计划在 7.13 版中弃用并在 8.0 版中删除多数据路径的使用。

根据同一个问题:

(...) multiple-data-paths is a feature that has a very high cost (numerous bugs and deficiencies in its design), relatively few users, and most importantly, better alternatives that are standard outside of Elasticsearch.