elasticsearch磁盘空间满了故障处理思路 - Go语言中文社区

elasticsearch磁盘空间满了故障处理思路


      昨天接到客户投诉说ES数据目录已达到100%了,当时第一想法监控组怎么监控的80%报警为什么没有监控出来,经问监测组是几天前接到报警,并忽略了,我当时那个崩溃,并有想骂人的冲动,这是现网,不是测试时环境,竟然有这么不负责的同事我也是醉的,我登录服务器一看磁盘空间最糟的100%,另几个99%,刚搭建两个月的集群出现空间不足,当时说没有这么大的数据量,我自己给自己挖了一个大坑,把数据存在一个磁盘上。


当时能想到的两个方案:


方案一把其他磁盘做一个大的LVM卷组,之后 做一个大的盘,好处处理方便,但是缺点会导致数据集中存储,会影响后续的插入性能和查询性能,当时就把此方案作为万不得已的方案了。

方案二:通过配置path.logs 配置多个磁盘,但是由于对ES了解不是很深,紧会搭建和简单的使用,此方案在我理解的层面上应该是可行的,但是客户说给出可行的证据,无奈只能在搭建一个ES集群进行测试,罗列证据了。(最终是用该方案解决的)

     1、停止上层应用、ES 集群并停止定时计划
    2、备份已有的ES数据到新的磁盘里下(1个小时 500G)---为了回退做准备
    3、修改ES配置文件,path.logs配置多个磁盘
    4、ES自动同步数据文件到其他磁盘空间(11个小时完成)


测试步骤
测试1:只启动一个节点,ES配置文件里配置路径只写一个目录/data1,向ES中添加数据,ES数据只存在该节点上指定目录下
客户端添加一条索引
curl -XPUT 'datanode10:9200/customer/external/1?pretty' -d '
 {
   "name": "John Doe"
 }'
通过head插件看到的数据如下:

结论是:分片都在一台机器上,且分片状态是UNASSIGNED

测试2:只启动一个节点,修改ES配置文件里的数据目录位两个磁盘/data01,/data02,启动ES,ES数据会自动同步两个数据目录下,后有添加一个新的索引,之后ES会自动平衡2个数据目录下。

图还是如上图,只不过数据是分片存储在两个机器上

测试datanode10 放两个目录/data01,/data02目录下:看如下目录结构记清楚

 

[root@datanode10 nodes]# tree  /data01/es5/data/nodes/0/indices/

/data01/es5/data/nodes/0/indices/

├── _2nXGRdBQWqEtALngH_xaQ


   ├── 0

     ├──index

       ├── segments_2

       └── write.lock

     ├──_state

       └── state-1.st

     └──translog

          ├──translog-1.ckp

          ├──translog-1.tlog

          ├──translog-2.tlog

          └──translog.ckp

   ├── 1

     ├──index

       ├── segments_2

       └── write.lock

     ├──_state

       └── state-1.st

     └──translog

          ├──translog-1.ckp

          ├──translog-1.tlog

          ├──translog-2.tlog

          └──translog.ckp

   ├── 2

     ├──index

       ├── segments_2

       └── write.lock

     ├──_state

       └── state-1.st

     └──translog

          ├──translog-1.ckp

          ├──translog-1.tlog

          ├──translog-2.tlog

          └──translog.ckp

   ├── 3

     ├──index

       ├── _0.cfe

       ├── _0.cfs

       ├── _0.si

       ├── segments_4

       └── write.lock

     ├──_state

       └── state-1.st

     └──translog

          ├──translog-2.ckp

          ├──translog-2.tlog

          ├──translog-3.tlog

          └──translog.ckp

   ├── 4

     ├──index

       ├── segments_2

       └── write.lock

     ├──_state

       └── state-1.st

     └──translog

          ├──translog-1.ckp

          ├──translog-1.tlog

          ├──translog-2.tlog

          └──translog.ckp

   └── _state

       └──state-12.st

└── ZytkImACR4CkB53vG4XyNw

    ├── 0

    │   ├──index

    │     ├──segments_2

    │     └──write.lock

    │   ├──_state

    │     └──state-0.st

    │   └──translog

    │       ├──translog-1.tlog

    │       └──translog.ckp

    ├── 3

    │   ├──index

    │     ├──_0.cfe

    │     ├──_0.cfs

    │     ├──_0.si

    │     ├──segments_1

    │     └──write.lock

    │   ├──_state

    │     └──state-0.st

    │   └──translog

    │       ├──translog-1.tlog

    │       └──translog.ckp

    └── _state

        └── state-7.st

 

32 directories, 53 files

[root@datanode10 nodes]#

[root@datanode10 nodes]# tree  /data02/es5/data/nodes/0/indices/

/data02/es5/data/nodes/0/indices/

├── _2nXGRdBQWqEtALngH_xaQ

   └── _state

       └──state-12.st

└── ZytkImACR4CkB53vG4XyNw

    ├── 1

    │   ├──index

    │     ├──segments_1

    │     └──write.lock

    │   ├──_state

    │     └──state-0.st

    │   └──translog

    │       ├──translog-1.tlog

    │       └──translog.ckp

    ├── 2

    │   ├──index

    │     ├──segments_2

    │     └──write.lock

    │   ├──_state

    │     └──state-0.st

    │   └──translog

    │       ├──translog-1.tlog

    │       └──translog.ckp

    ├── 4

    │   ├──index

    │     ├──segments_2

    │     └──write.lock

    │   ├──_state

    │     └──state-0.st

    │   └──translog

    │       ├──translog-1.tlog

    │       └──translog.ckp

    └── _state

        └── state-7.st

 

16 directories, 17 files

 


测试3:启动2个节点,前一个ES配置文件/data2去掉,后添加ES机器修改ES配置文件里的数据目录位/data1,启动ES,之前ES里的两个索引会数据会自动同步两台机器的/data1下。



[root@datanode10 nodes]# tree  /data01/es5/data/nodes/0/indices/

/data01/es5/data/nodes/0/indices/

├── _2nXGRdBQWqEtALngH_xaQ

   ├── 0

     ├──index

       ├── segments_2

       └── write.lock

     ├──_state

       └── state-2.st

     └──translog

          ├──translog-1.ckp

          ├──translog-1.tlog

          ├──translog-2.ckp

          ├──translog-2.tlog

          ├──translog-3.tlog

          └──translog.ckp

   ├── 1

     ├──index

       ├── segments_2

       └── write.lock

     ├──_state

       └── state-2.st

     └──translog

          ├──translog-1.ckp

          ├──translog-1.tlog

          ├──translog-2.ckp

          ├──translog-2.tlog

          ├──translog-3.tlog

          └──translog.ckp

   ├── 2

     ├──index

       ├── segments_2

       └── write.lock

     ├──_state

       └── state-2.st

     └──translog

          ├──translog-1.ckp

          ├──translog-1.tlog

          ├──translog-2.ckp

          ├──translog-2.tlog

          ├──translog-3.tlog

          └──translog.ckp

   ├── 3

     ├──index

       ├── _0.cfe

       ├── _0.cfs

       ├── _0.si

       ├── segments_4

       └── write.lock

     ├──_state

       └── state-2.st

     └──translog

          ├──translog-2.ckp

          ├──translog-2.tlog

          ├──translog-3.ckp

          ├──translog-3.tlog

          ├──translog-4.tlog

          └──translog.ckp

   ├── 4

     ├──index

       ├── segments_2

       └── write.lock

     ├──_state

       └── state-2.st

     └──translog

          ├──translog-1.ckp

          ├──translog-1.tlog

          ├──translog-2.ckp

          ├──translog-2.tlog

          ├──translog-3.tlog

          └──translog.ckp

   └── _state

       └──state-21.st

└── ZytkImACR4CkB53vG4XyNw

    ├── 0

    │   ├──index

    │     ├──segments_2

    │     └──write.lock

    │   ├──_state

    │     └──state-1.st

    │   └──translog

    │       ├──translog-1.tlog

    │       └──translog.ckp

    ├── 1

    │   ├──index

    │     ├──segments_3

    │     └──write.lock

    │   ├──_state

    │     └──state-0.st

    │   └──translog

    │       ├──translog-1.tlog

    │       └──translog.ckp

    ├── 2

    │   ├──index

    │     ├──segments_2

    │     └──write.lock

    │   ├──_state

    │     └──state-0.st

    │   └──translog

    │       ├──translog-1.tlog

    │       └──translog.ckp

    ├── 3

    │   ├──index

    │     ├──_0.cfe

    │     ├──_0.cfs

    │     ├──_0.si

    │     ├──segments_3

    │     └──write.lock

    │   ├──_state

    │     └──state-1.st

    │   └──translog

    │       ├──translog-2.ckp

    │       ├──translog-2.tlog

    │       ├──translog-3.tlog

    │       └──translog.ckp

    ├── 4

    │   ├──index

    │     ├──segments_2

    │     └──write.lock

    │   ├──_state

    │     └──state-0.st

    │   └──translog

    │       ├──translog-1.tlog

    │       └──translog.ckp

    └── _state

        └── state-16.st

 

44 directories, 80 files /data02里的分片都自动同步到/data01上了

You have new mail in /var/spool/mail/root

 

[root@datanode08 opt]# tree  /data01/es5/data/nodes/0/indices/

/data01/es5/data/nodes/0/indices/

├── _2nXGRdBQWqEtALngH_xaQ

   ├── 0

     ├──index

       ├── segments_4

       └── write.lock

     ├──_state

       └── state-1.st

     └──translog

          ├──translog-1.tlog

          └──translog.ckp

   ├── 1

     ├──index

       ├── segments_4

       └── write.lock

     ├──_state

   版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/haoxiaoyan/article/details/65629491
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。

  • 发表于 2020-03-07 18:48:00
  • 阅读 ( 3033 )
  • 分类:

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢