问题原因&通用解决步骤

频繁收到es数据节点磁盘使用监控告警,到es上查看,磁盘使用率40%,因此登录该告警服务器,df -h 查看,如图

发下根目录使用超过了80%,因此持续告警,按照以往办法,直接du查看根目录哪个目录占用最大,清理即可

根目录超过了80%告警,其中data是数据盘,挂载在另外的文件系统上,不属于根目录所在文件系统。那么直接使用du命令 du -h --max-depth=1 查看根目录哪个目录占用磁盘空间最大就行了

发下除了/data目录,其它目录属于根目录,加起来不过7G,那么其它磁盘被什么占用了呢?

对于遇到df 和du结果不一致的情况,基本断定是文件虽然删除了,但是文件句柄仍然被持有,因此磁盘空间未释放,可以使用lsof命令( list open files)查看

查看根目录打开的文件,搜索删除的文件 lsof -n / |grep deleted (这里/是根目录)

怀疑是进程25550或25587持有删除文件的句柄,分别查看进程是哪些应用

分别是es应用和es中间件进程,大概原因是es应用进程25550持有删除文件的句柄导致的,因此重启此应用即可(kill也可以,但是可能会引起生产问题)。

原理解释:

du命令会对待统计文件逐个调用fstat这个系统调用,获取文件大小。它的数据是基于文件获取的,所以有很大的灵活性,不一定非要针对一个分区,可以跨越多个分区操作。如果针对的目录中文件很多,du速度就会很慢了。
df命令使用的事statfs这个系统调用,直接读取分区的超级块信息获取分区使用情况。它的数据是基于分区元数据的,所以只能针对整个分区。由于df直接读取超级块,所以运行速度不受文件多少影响。
du和df不一致情况
常见的df和du不一致情况就是文件删除的问题。当一个文件被删除后,在文件系统 目录中已经不可见了,所以du就不会再统计它了。然而如果此时还有运行的进程持有这个已经被删除了的文件的句柄,那么这个文件就不会真正在磁盘中被删除, 分区超级块中的信息也就不会更改。这样df仍旧会统计这个被删除了的文件。

如何记忆这3个命令

du ->Disk Usage

df ->Disk Free

lsof ->list open files

翻车记录

重启es后,发下磁盘占用还是存在,没办法,先重启了虚拟机,还是一样,最后无奈只能先unmount数据盘/data试试

然后du -h --max-depth=1

原来根目录/data有数据,然后挂载了数据盘后,把原/data的内容隐藏了。

解决办法:先迁移/data/数据,然后清除/data数据,然后挂载磁盘到/data,最后启动es

Linux 离奇磁盘爆满解决办法的更多相关文章

  1. VMWare虚拟机->锁定文件失败,打不开磁盘的解决办法

    VMWare虚拟机提示:锁定文件失败,打不开磁盘的解决办法   如果使用VMWare虚拟机的时候突然系统崩溃蓝屏,有一定几率会导致无法启动,会提示:“锁定文件失败,打不开磁盘...或它所依赖的某个快照 ...

  2. (原创)Windows下编译的Shell脚本不能再Linux中运行的解决办法

    一.原理 Windows编译的文件和Linux编译的文件格式不太一样,导致在Linux运行Shell脚本的时候会提示:/bin/bash^M: bad interpreter: 没有那个文件或目录. ...

  3. linux "No space left on device" 磁盘空间解决办法

    某年某月某日某时,某人在工作中设置crontab定时任务规则保存时,提示“No space left on device”,此时用df -h检查磁盘,发现还有剩余空间.请问是什么原因及如何排查?什么会 ...

  4. Linux终端乱码的解决办法

    用SSH连接Linux时经常会遇到乱码的情况,痛苦了好久,在网上找到一个解决办法,编辑~/.bash_profile文件,加入下面两行: LANG="zh_CN.GB18030" ...

  5. 图形报表部署在Linux下出现乱码解决办法

     客户问题: 客户的操作系统SUSE LINUX Enterprise Server 10 (i586) 64位,服务器 weblogic8.1, JDK版本:jdk1.4.系统中只有图形报表展示 ...

  6. [Linux] - CentOS中文乱码解决办法

    CentOS 7 终端中文乱码解决办法: 1.使用vim编辑locale.config文件: vim /etc/locale.conf 2.将LANG="en_US.UTF-8"修 ...

  7. ubuntu系统无法访问无法磁盘最佳解决办法

    出现如下错误: Error mounting /dev/sda8 at /media/fzh/System: Command-line `mount -t "ntfs" -o &q ...

  8. Windows10 磁盘100%解决办法

    此电脑->管理->任务计划程序->\Microsoft\Windows 一.\MemoryDiagnostic 禁用:ProcessMemoryDiagnosticEvents和Ru ...

  9. linux ext4无法使用超过16T磁盘的解决办法

    大磁盘使用问题 问题:当所要挂载的设备大于16T的时候,可以用parted正常分区,但是分区完成之后,无法格式化, 报错:Size of device /dev/sdb1 too big to be ...

随机推荐

  1. 源码分析-Consumer

    消息消费概述 消息消费以组的模式开展,一个消费组内可以包含多个消费者,每一个消费者组可订阅多个主题,消费组之间有集群模式和广播模式两种消费模式. 集群模式,主题下的同一条消息只允许被其中一个消费者消费 ...

  2. Does compiler create default constructor when we write our own?

    In C++, compiler by default creates default constructor for every class. But, if we define our own c ...

  3. Java Timestamp 类的使用

    很简单,我们可以这样声明 Timestamp ts=new Timestamp(new Date().getTime());这样我们就可以得到时间比较具体的一个类型转换!!! 在开发web应用中,针对 ...

  4. 用运oracel中的伪列rownum分页

    在实际应用中我们经常碰到这样的问题,比如一张表比较大,我们只要其中的查看其中的前几条数据,或者对分页处理数据.在这些情况下我们都需要用到rownum.因此我们要理解rownum的原理和使用方法. Or ...

  5. 自动执行Python脚本

    一.自动执行Python脚本(前提条件是电脑已安装对应的Python程序) 1.1.win+R-输入cmd在输入where python查看Python的安装位置 C:\Users\ASUS\AppD ...

  6. ts配置项

    { "compilerOptions": { /* 基本选项 */ "target": "es5", // 指定 ECMAScript 目标 ...

  7. Simple iPhone Keychain Access

    Simple iPhone Keychain Access Mar 29th, 2010 9:14 pm The keychain is about the only place that an iP ...

  8. 资源分配(Project)

    <Project2016 企业项目管理实践>张会斌 董方好 编著 资源设置好以后,不能光摆着看,分配到各任务中去才是正道. 分配资源就需要回到与任务相关的视图了,比如[任务工作表]视图或者 ...

  9. jenkins+docker+k8s项目发布

    目录 一.简介 二.新建docker-build工程 三.项目部署 四.访问测试 一.简介 1.该章节基于jenkins.Harbor.pipeline.k8s来做发布,如对这些不熟悉,请按以下进入学 ...

  10. CF1099A Snowball 题解

    Content 有一个重量为 \(w\) 的雪球从高度为 \(h\) 的位置开始滚落,每秒它的高度会减少 \(1\),同时在高度为 \(i\) 的位置它的重量会增加 \(i\).在雪球滚动的路线上还有 ...