最近一位朋友他的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%,又找不到占空间的大文件 原因与解决方法相关推荐

  1. linux的7za无法使用,提示命令找不到:-bash 7za command not found的解决方法.doc

    CentOS7系统突然之间7z命令提示:-bash 7za command not found. 包括很多共它命令均提示:-bash: ***: command not found,如下图: 这应该是 ...

  2. linux pe无法识别硬盘,diskgenius识别不到硬盘是怎么回事?原因以及解决方法

    小编上次写了篇在BIOS系统下识别不到硬盘的原因及解决方法,今天给大家介绍另一种情况,在diskgenius里识别不到硬盘. 出现这种问题一般发生到笔记本上,通常是跟笔记本的出厂年份及BIOS默认出厂 ...

  3. linux系统盘使用率达到100%的问题查找和解决方法

    linux系统盘使用率达到100%的问题查找和解决方法 参考文章: (1)linux系统盘使用率达到100%的问题查找和解决方法 (2)https://www.cnblogs.com/free-lon ...

  4. linux服务器文件偶尔丢失,【服务器运维】linux抛出找不到文件非常的解决方法...

    场景: 项目在windows下接见一般,linux下抛非常,找不到文件. 剖析: 假如接见的项目文件是如许的:abc/bcd/aa.jpg ,而体系中接见文件的途径是:abc/Bcd/aa.jpg,二 ...

  5. linux服务器出现黄,linux服务器出现严重故障后的原因以及解决方法

    linux服务器出现严重故障后的原因以及解决方法 发布时间:2011-11-24 16:32:18   作者:佚名   我要评论 linux服务器出现严重故障后的解决方法,本文为大家介绍四个步骤解决l ...

  6. linux /dev/dsp: 没有那个文件或目录 解决方法

    /dev/dsp: 没有那个文件或目录 解决方法 最近有个嵌入式开发的项目,比较依赖声卡,下载了centos7.5和Ubuntu20.04的版本,都没有这个dsp文件,而现有的代码是需要对dsp文件进 ...

  7. 磁盘空间被占满,如何找出占用磁盘空间过大的的文件

    [linux]磁盘空间被占满,如何找出占用磁盘空间过大的的文件 1.查看磁盘空间使用情况 2.查找文件占用空间情况 3.进入对应路径,重复使用命令,重复多次后可以找到占用大的文件,不重要的就可以直接删 ...

  8. linux没有jre文件夹,linux上配置jdk时,java命令提示没有此文件或文件夹的解决方法...

    linux上配置jdk时,java命令提示没有此文件或文件夹的解决方法 出现这个问题可能有以下几种原因: 1.对该文件没有执行的权限. 2.我们的机器是64位的,而下载的jdk是32位的. 我就是后一 ...

  9. 服务器进pe后找不到硬盘,进入PE后找不到硬盘的原因及解决方法

    当系统出现故障的时候,我们一般都是采用PE来修复或者重装系统,使用U盘PE重装系统要比光盘装系统快的多,因此也备受广大用户的欢迎.不过不少用户在使用PE装系统的时候,总该是会遇到些问题,比如一些用户在 ...

最新文章

  1. 太棒啦!PyCharm与Jupyter完美融合,Jupytext来啦!
  2. thinkphp整合系列之phpqrcode生成二维码
  3. 记与公司内网微博的谈话
  4. [js] script所在的位置会影响首屏显示时间吗
  5. (贪心)区间问题大致思路
  6. leetcode5086:smallest-subsequence-of-distinct-characters
  7. logback之使用demo
  8. springMVC 全局异常处理
  9. LeetCode刷题——88. 合并两个有序数组
  10. mybatis 实现批量更新
  11. 迪文串口屏TTL与主控板RS232电平信号转换方案
  12. 茅台抢购特产平台(葫芦娃)
  13. 【GA MTSP】基于matlab遗传算法求解多旅行商问题(多且同始终点)【含Matlab源码 1339期】
  14. python 爬虫 requests模块 中的Cookies 验证 通过验证cookies模拟登陆豆瓣登陆
  15. 米家电磁炉显示e10_米家电磁炉深度使用解析 这才是我想要的
  16. Java常见面试题 + 答案汇总
  17. web前端大作业 (仿英雄联盟网站制作HTML+CSS+JavaScript) 学生dreamweaver网页设计作业
  18. Shard Architechure
  19. 将MATLAB的quadprog函数转化为C++代码在Visual Studio上可运行
  20. Tlsr8258开发-深度休眠

热门文章

  1. 最新(2019)斯坦福CS224n深度学习自然语言处理课程(视频+笔记+2017年合集)
  2. MSCNN算法:饭堂人群密度检测实现
  3. java如果把字符串转成对象_为什么Java中的字符串对象是不可变的,有什么好处?...
  4. 如何在自己开发的android应用中添加广告
  5. Windows 8 DirectX 开发学习笔记(十五)使用Billboard实现树木贴图
  6. html input触发器类型,几种触发器的Verliog语言描述
  7. wps中将文档输出为pdf_‎
  8. vs2008试用版的评估期已经结束解决办法
  9. elixir官方入门教程 递归
  10. nginx + tomcat 架构中,页面跳转,URL不变,网页内容变