1、问题及场景描述
本文主要讨论在 CentOS环境下基于 rpm 包部署 ELK 系统磁盘异常占用的问题解析和解决方案。
生产问题描述:以下问题现实场景基于ELK体系下,ES服务的磁盘占用问题解析。默认情况下,基于 RPM 安装的 Elasticsearch 服务的安装位置位于/usr.share/elasticsearch/
目录下,配置文件位于 /etc/elasticsearch/
,在此前提下可能会遇到如下问题
- 集群出现分片无法分配的情况
- 通过 explain API 查询未分配原因为磁盘占用率超过阈值
- 在 shell 下执行 free 等命令发现磁盘剩余空间充足
2、 问题分析
这是可能因为操作系统挂载了多个分区或者磁盘,而使用使用 RPM 包安装的服务可能位于其中较小的分区。本文主要讨论当问题已经产生,如何解决的问题。
3、排查问题
- 首先根据 explain 返回的结果判断是否是磁盘占用率过高导致,如果是磁盘占用问题可按照以下步骤尝试解决
1:查看所有挂载的磁盘
sudo fdisk -l
可以看到一共当前一共两个分区,分别是:
- centos-root
- centos-swap
每个人情况可能有所不同
2:确认 ES 的安装目录位于哪个分区
查看当前目录所挂载的磁盘的占用情况,使用 rpm 包安装的 Elasticsearch,默认的安装目录在/usr/share/elasticsearch/
如果由于系统版本不同或者手动修改了安装目录,可以打开 /usr/lib/systemd/system/elasticsearch.service
查看 ES 的工作目录
使用以下命令输出指定目录位于哪个分区
df -h /usr/share/elasticsearch/
通过结果可以看出 ES 的安装目录所在的分区为 centos-root,并且可以看到磁盘的占用情况
亦可使用下面指令辅助排查问题
- 看当前指定目录的磁盘占用大小,不递归查看子目录
du -sh /home/elastic
- 递归查指定目录及子目录的磁盘占用情况
du -h /home/elastic
3:如何将 ES 迁移至其他工作目录
戳: