首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Linux磁盘占用率与使用率不符

Linux磁盘占用率与使用率不符

原创
作者头像
COY_fenfei
发布2021-03-11 21:37:20
发布2021-03-11 21:37:20
4K00
代码可运行
举报
文章被收录于专栏:COYCOY
运行总次数:0
代码可运行

--记一次磁盘占用率过高问题排查过程与总结

问题描述

早晨刚到公司,收到同事推送的一条生产机器磁盘使用率<90%的告警,我们的机器部署了日志清理脚本一般仅保存2~3天的日志,其他都会上传到ES,通过ELK模式管理。按理说,不应该是日志太大,但机器上能占用磁盘的除了一些服务安装包也只有日志了,遂开始排查。

排查过程

第一步,当然是确认磁盘的当前占用率,登陆上机器执行 “df -h” 命令查看挂载盘占用率,果然非常高,已经达到了96%

磁盘占用率
磁盘占用率

第二步,确认占用率高的文件夹,排查是哪些文件占用磁盘,执行命令 “du -h --max-depth=1” 发现占用量最大的还是log目录

各文件夹占用量
各文件夹占用量

但是却发现了问题,从磁盘占用量我们能看出来,磁盘使用率96%,Used=179G,可是/data下各文件夹总的使用量才86G,那其他被占用的约100G的磁盘去哪里了呢?

第三步,搜寻资料,定位问题。根据自己薄弱的运维知识,这超出了我的知识面。谷歌之后发现,这种问题并不离奇是操作系统常见的问题。根据博客 https://www.jianshu.com/p/e775b6880133找到思路。可能是有文件,删除时被系统在使用未真正删除掉,依然占用着磁盘但是又看不到。执行命令 lsof|grep delete来查看删除文件

未被真正删除的文件
未被真正删除的文件

果然发现,有一个服务的log文件非常大,虽然被删除但是由于服务还在写入所以并未真的删除掉,导致磁盘占用。中间那一行是文件大小,可以看出来差不多100G。之所以有多条记录,是因为多线程在写入。

第五步,问题处理,面对这样的问题,只有一种处理方式就是重启服务,服务停止后,文件也会被释放,磁盘占用率瞬间下降。

总结:在window系统上,如果想删除一个正在被进程使用的文件,系统会阻止删除操作。Linux也同理,不过Linux在删除时不会报错,会假装的让你看到以为删除了,但文件被进程依然关联着并在写入,磁盘占用也还在。但通过du -h 扫不出来。所以无论在什么系统,不要尝试删除一个正在被进程使用的文件。

知识点总结:

代码语言:javascript
代码运行次数:0
运行
复制
查看磁盘占用率:df -h
查看每个文件夹大小:du -h --max-depth=1 如果使用 du -h 可以递归看到所有文件大小
查看被进程使用的删除文件:lsof|grep delete

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • --记一次磁盘占用率过高问题排查过程与总结
  • 问题描述
  • 排查过程
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档