测验提到给ES配置了许多数据存储目录,但是在实测傍边发现数据基本上只往其中一块盘去写数据(监控了磁盘读写速率),询问是否能够并发写以便提高功能。
此前,我给ES配置多个数据目录(path.data
)首要是为了增大存储上限,如果机器上配备有RAID卡直接运用存储卡做raid 0的单一大目录就十分便捷,无需考虑多目录的问题了。对测验遇到的问题试验及查验如下:
- 一个
shard
只会分配在一个物理目录上面,它不会再被切分存储到多个目录盘上 - 单索引具有满足的分片时,数据会写到多个盘(分片数 > data节点数)
- 所以,多目录在一般状况下没有并发写的作用,多磁盘引荐运用
raid 0
,磁盘I/O能够均匀分布到所有磁盘。
查验官网说明
将path.data配置成多个途径,也即运用多个IO设备,对于增大总存储空间很有用,也有提升IO功能的作用。
Using multiple IO devices (by specifying multiple`path.data`paths)to hold the shards
on your node is useful for increasing total storage space,
and improving IO performance, if that's a bottleneck for your Elasticsearch usage.
shard分配的基本逻辑:
多目录状况下,一个shard被分配到一个node上之后,node会选择一块最佳目录(多数是空的)分配给这个shard存储数据文件。
前面提到raid 0是另一条路,但是raid 0是条带化存储数据,出现坏盘的状况就会全军覆没(对ES来说存在该节点的所有shard都丢掉),官方引荐运用多目录。
因而,你的shard需要至少一个副本分片来保证数据不会丢掉。