在学习Elasticsearch的时候出现了一下错误:

版本:7.12.1

java.lang.IllegalStateException: failed to obtain node locks, tried [[/usr/share/elasticsearch/data]] with lock id [0]; maybe these locations are not writable or multiple nodes were started without increasing [node.max_local_storage_nodes] (was [1])?


主要解决方法

主要原因有三种:

1、进程冲突:

通过 ps -aux | grep elasticsearch 命令查找冲突的进程,再通过 kill -9 进程号 来杀掉冲突的进程

2、权限不够

通过 chown 777 elasticsearch容器数据目录 来增强权限


我的解决方案:

由于上面两种方法都解决不了我的问题,经过查阅资料的分析,得知确实出现这种错误就是因为端口占用和没有删除数据目录中的锁,也就是node文件,问题就是这个文件在哪?

通过一顿的胡找,找到了docker文件夹,发现了挂载容器的文件夹volumes,具体路径为:var/lib/docker/volumes ,在这里看到es-data文件夹,点进去最后看到nodes文件夹,我就直接把整个文件给删了。这个文件夹可能是之前创建es的节点,然后与现在的版本不匹配,或者是文件已经被锁了,删除之后出现了权限问题,直接给该文件夹加上chown 777的权限,解决。

在这里插入图片描述

但是,再次 docker restart es 启动我的 elasticsearch 时,又挂了。

通过 docker logs -f es 打印日志并没有发现什么错误信息,猜测是内存不足的问题,我只有2G的内存,然后我停掉了所有其他的容器,这里使用虚拟机的话可以多分配一点内存,再次重启就成功运行了。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐