Linux系统盘爆满根目录100%,又找不到占空间的大文件 原因与解决方法
最近一位朋友他的Linux(Centos7)根目录一直100%,也就是系统文件磁盘已经爆满了。虽然通过:df -h, du -sh * 等指令配合使用,发现当前系统任然存在大量可以使用的空间(6.5G可用)。
但是:也发现大量剩余的磁盘空间不清楚怎么丢失了?(系统盘总共50G,只查出来了14G占的,假设系统再占20G,还有16G不知道哪里去了?)
原因:
在linux中,当我们使用rm在linux上删除了大文件,但是,如果有进程打开了这个大文件,却没有关闭这个文件的句柄,那么:linux内核还是不会释放这个文件的磁盘空间,最后造成磁盘空间占用100%,整个系统无法正常运行。
这种情况下,通过df和du命令查找的磁盘空间,两者是无法匹配的,可能df显示磁盘100%,而du查找目录的磁盘容量占用却很小。
遇到这种情况,基本可以断定是某些大文件被某些程序占用了,并且这些大文件已经被删除了,但是对应的文件句柄没有被某些程序关闭,造成内核无法回收这些文件占用的空间。
解决方法
既然知道了原因,解决起来就容易多了,说得简单一点,原因无非是:Linux磁盘空间被未知资源耗尽而已。
如何查找哪些文件被某些程序占用呢?
通过:lsof | grep deleted 指令,查看当前系统句柄未释放情况,命令如下:
lsof(list open files)是一个列出当前系统打开文件的工具。在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件。
在终端下输入lsof即可显示系统打开的文件,因为 lsof 需要访问核心内存和各种文件,所以必须以 root 用户才能运行它。
以Centos7为例,如果没有lsof命令,可以手动yum安装即可,命令:yum install lsof
命令:lsof -n | grep deleted 打印出所有针对已删除文件的读写操作,这类操作是无效的,也正是磁盘空间莫名消失的根本原因。上图只是截了一部份而已!
第一种解决方法:
将当前线程进行重启,关闭线程,从而让句柄释放,释放空间。
最常用的就是kill杀死占用的进程(注意,如果此进程是正常在使用的服务,杀死后更改日志存储位置在重新启动,以免导致影响线上服务)。
第二种解决方法:
找到指定的文件句柄,将当前文件句柄的大小设置为空。
根据当前的业务情况,需要对外提供实时服务,所以频繁重启不适合当前业务场景,那么,只能选择将文件句柄内容置空。文件句柄内容置空,文件的内容大小被置空,释放了磁盘空间,但是,文件句柄并没有释放,可能导致“Too Many File is Open“错误。
#lsof
command PID USER PGID FD type DEVICE SIZE NODE NAME
lsof输出各列信息的意义如下:
COMMAND:进程的名称PID:进程标识符PPID:父进程标识符(需要指定-R参数)USER:进程所有者PGID:进程所属组FD:文件描述符,应用程序通过文件描述符识别该文件。DEVICE:指定磁盘的名称SIZE:文件的大小NODE:索引节点(文件在磁盘上的标识)NAME:打开文件的确切名称
通过losf 获取当前文件的 PID 和 FD 两个参数:
置空当前的文件内容:
#echo > /proc/PID/fd/FD
第三种解决方法:
find查找根下大于800M的文件;找到大的日志文件关闭掉,或者更改到其他磁盘。
#find / -size +800M -exec ls -lh {} ;
总结:
如果发现还有大量的文件会标记为deleted,其空间也不会释放。自己就需要去看一下自己的程序或系统环境了,是不是哪里有问题?
参考链接 :
Linux系统盘爆满根目录100%,又找不到占空间的大文件 原因与解决方法 :https://www.fujieace.com/linux/root-100.html
Linux系统盘爆满根目录100%,又找不到占空间的大文件 原因与解决方法相关推荐
- linux的7za无法使用,提示命令找不到:-bash 7za command not found的解决方法.doc
CentOS7系统突然之间7z命令提示:-bash 7za command not found. 包括很多共它命令均提示:-bash: ***: command not found,如下图: 这应该是 ...
- linux pe无法识别硬盘,diskgenius识别不到硬盘是怎么回事?原因以及解决方法
小编上次写了篇在BIOS系统下识别不到硬盘的原因及解决方法,今天给大家介绍另一种情况,在diskgenius里识别不到硬盘. 出现这种问题一般发生到笔记本上,通常是跟笔记本的出厂年份及BIOS默认出厂 ...
- linux系统盘使用率达到100%的问题查找和解决方法
linux系统盘使用率达到100%的问题查找和解决方法 参考文章: (1)linux系统盘使用率达到100%的问题查找和解决方法 (2)https://www.cnblogs.com/free-lon ...
- linux服务器文件偶尔丢失,【服务器运维】linux抛出找不到文件非常的解决方法...
场景: 项目在windows下接见一般,linux下抛非常,找不到文件. 剖析: 假如接见的项目文件是如许的:abc/bcd/aa.jpg ,而体系中接见文件的途径是:abc/Bcd/aa.jpg,二 ...
- linux服务器出现黄,linux服务器出现严重故障后的原因以及解决方法
linux服务器出现严重故障后的原因以及解决方法 发布时间:2011-11-24 16:32:18 作者:佚名 我要评论 linux服务器出现严重故障后的解决方法,本文为大家介绍四个步骤解决l ...
- linux /dev/dsp: 没有那个文件或目录 解决方法
/dev/dsp: 没有那个文件或目录 解决方法 最近有个嵌入式开发的项目,比较依赖声卡,下载了centos7.5和Ubuntu20.04的版本,都没有这个dsp文件,而现有的代码是需要对dsp文件进 ...
- 磁盘空间被占满,如何找出占用磁盘空间过大的的文件
[linux]磁盘空间被占满,如何找出占用磁盘空间过大的的文件 1.查看磁盘空间使用情况 2.查找文件占用空间情况 3.进入对应路径,重复使用命令,重复多次后可以找到占用大的文件,不重要的就可以直接删 ...
- linux没有jre文件夹,linux上配置jdk时,java命令提示没有此文件或文件夹的解决方法...
linux上配置jdk时,java命令提示没有此文件或文件夹的解决方法 出现这个问题可能有以下几种原因: 1.对该文件没有执行的权限. 2.我们的机器是64位的,而下载的jdk是32位的. 我就是后一 ...
- 服务器进pe后找不到硬盘,进入PE后找不到硬盘的原因及解决方法
当系统出现故障的时候,我们一般都是采用PE来修复或者重装系统,使用U盘PE重装系统要比光盘装系统快的多,因此也备受广大用户的欢迎.不过不少用户在使用PE装系统的时候,总该是会遇到些问题,比如一些用户在 ...
最新文章
- 太棒啦!PyCharm与Jupyter完美融合,Jupytext来啦!
- thinkphp整合系列之phpqrcode生成二维码
- 记与公司内网微博的谈话
- [js] script所在的位置会影响首屏显示时间吗
- (贪心)区间问题大致思路
- leetcode5086:smallest-subsequence-of-distinct-characters
- logback之使用demo
- springMVC 全局异常处理
- LeetCode刷题——88. 合并两个有序数组
- mybatis 实现批量更新
- 迪文串口屏TTL与主控板RS232电平信号转换方案
- 茅台抢购特产平台(葫芦娃)
- 【GA MTSP】基于matlab遗传算法求解多旅行商问题(多且同始终点)【含Matlab源码 1339期】
- python 爬虫 requests模块 中的Cookies 验证 通过验证cookies模拟登陆豆瓣登陆
- 米家电磁炉显示e10_米家电磁炉深度使用解析 这才是我想要的
- Java常见面试题 + 答案汇总
- web前端大作业 (仿英雄联盟网站制作HTML+CSS+JavaScript) 学生dreamweaver网页设计作业
- Shard Architechure
- 将MATLAB的quadprog函数转化为C++代码在Visual Studio上可运行
- Tlsr8258开发-深度休眠
热门文章
- 最新(2019)斯坦福CS224n深度学习自然语言处理课程(视频+笔记+2017年合集)
- MSCNN算法:饭堂人群密度检测实现
- java如果把字符串转成对象_为什么Java中的字符串对象是不可变的,有什么好处?...
- 如何在自己开发的android应用中添加广告
- Windows 8 DirectX 开发学习笔记(十五)使用Billboard实现树木贴图
- html input触发器类型,几种触发器的Verliog语言描述
- wps中将文档输出为pdf_
- vs2008试用版的评估期已经结束解决办法
- elixir官方入门教程 递归
- nginx + tomcat 架构中,页面跳转,URL不变,网页内容变