ES保存是报标题错误,大致意思是ES只允许读,不允许写。
1、排查问题
ES环境是通过docker部署,先找到es的数据存储映射的卷地址为 /data/es_data,通过df -h /data/es_data目录查看磁盘目录空间查看到空间已经使用了96%,由于ES在磁盘空间到90%时会锁定为只读模式,所以解决方案有两个,第一种:清空es数据盘所在磁盘空间,将空间使用率降低到90%以内;第二种:将数据目录迁移到其他较大空间磁盘。由于第一搭建环境的同事并没有注意磁盘挂在目录的问题,es所在的磁盘只有50G,所以决定迁移到其他磁盘。
2、解决步骤
2.1 迁移数据
将/data/es_data目录的数据全部拷贝到新磁盘上,注意文件夹的目录权限问题
cp -r /data /home #迁移目录
chmod 777 /home/data #设置文件夹权限
chown -R user /home/data/es_data #设置文件夹所属用户
2.2 修改docker挂在数据卷的位置
第一种:
先停止运行的docker容器,然后通过修改配置文件重新挂载目录
1、停止docker服务
systemctl stop docker.service(关键,修改之前必须停止docker服务)
2、使用vim /var/lib/docker/containers/container-ID/config.v2.json命令打开配置文件,修改配置文件中的目录位置,然后保存退出
"MountPoints":{"/home":{"Source":"/docker","Destination":"/home","RW":true,"Name":"","Driver":"","Type":"bind","Propagation":"rprivate","Spec":{"Type":"bind","Source":"//docker/","Target":"/home"}}}
3、启动docker服务
systemctl start docker.service
4、启动docker容器
docker start
第二种:提交现有容器为新镜像,然后重新运行它
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5a3422adeead ubuntu:14.04 "/bin/bash" About a minute ago Exited (0) About a minute ago agitated_newton
$ docker commit 5a3422adeead newimagename
$ docker run -ti -v "$PWD/dir1":/dir1 -v "$PWD/dir2":/dir2 newimagename /bin/bash
第三种:export容器为镜像,然后import为新镜像
$docker container export -o ./myimage.docker 容器ID
$docker import ./myimage.docker newimagename
$docker run -ti -v "$PWD/dir1":/dir1 -v "$PWD/dir2":/dir2 newimagename /bin/bash
2.3 发送重置请求
PUT _all/_settings
{
"index.blocks.read_only_allow_delete": null
}