Linux服务器磁盘占满问题解决

今天下班某电商技术部leader发现个问题,说他们服务器硬盘满了。把日志文件都删掉了,可硬盘空间依旧满。于是df -h查看了下各个挂载点的状况(如下图)。

  /dev/sda3占用了100%,那么我们du -s -h ./*看下目录的占用情况(如下图)。

  linux磁盘挂载点目录占用情况(图)

  挂载点下的目录之和远小于4.5G,那么是什么占用了硬盘呢?

  以下为该问题的解答:

  在apache/tomcat服务在运行状态下,清空了运行服务的日志,从而导致了/dev/sda3 满了的问题。一般情况下,大多数服务(包括脚本)在运行时,是不能删除当前正在写入的日志文件的。

  原理分析:

  1. 当前access.log日志正在被apache进程占用。

  2. 通过rm命令删除access.log,实际只删除了文件名(该日志文件应用记数不为0,因此空间不会被释放)。

  3. 通过rm命令删除了access.log后,apache依然写日志到access.log中,当开启apache进程时,已经通过access.log定位到该文件的inode了,就是说再写日志是不通过access.log,因此即使删除了access.log,apache依然写日志到access.log所在的inode节点,所以导致硬盘空间增加。

  4. 因为删除了access.log,所以我们就找不到该文件了,du也查不到,就会出现硬盘满了但看不到究竟是哪些文件占用的。

  (写的不甚详细,不明白的大家再google下。)

  解决方法:

  重启该日志文件的相关服务或程序,如:为apache日志文件则重启apache(如下图,重启后才硬盘空间占用正常)。

时间: 2024-10-08 08:59:35

Linux服务器磁盘占满问题解决的相关文章

linux系统inode占满故障处理

Linux系统inode占满故障处理 众所周知,文件系统中inode编码是指向磁盘block的唯一编号,若服务器遭入侵或日志文件将磁盘inode资源编号耗尽,新数据无法获取inode编号导致无法存储.举例说明:在磁盘中/boot独立分区中查看现有inode资源并通过for循环创建大量文件占用耗尽inode编号,导致磁盘无法写入内容,最后进行处理故障. [[email protected] ~]#  df -i /boot/                                 #查看i

[转帖]Java性能检测工具-记录一次通过jstack排查Linux服务器CPU占用率很高的实践

Java性能检测工具-记录一次通过jstack排查Linux服务器CPU占用率很高的实践 https://www.jianshu.com/p/d4e31301ba2e 一.问题描述 Linux服务器的配置是4核16G,将war包部署到tomcat后,启动tomcat,发现内存占用率不高,但是CPU一直高达100%:浏览器输入相关url也无法访问该项目,且tomcat的进程一直存在,程序的配置什么的都没问题啊,一头雾水......通过top命令查看服务器的性能状况如下: [[email prote

门户网站磁盘占满,清除方法

本文参考:http://blog.51cto.com/oldboy/612351编著 #模拟他的场景,防火墙关闭,SELinux关闭 安装Apache服务 [[email protected] /]# yum -y install httpd    #yum安装Apache服务 [[email protected] /]# service httpd restart   #重启apache服务 [[email protected] /]# grep -i   "^#Cu" /etc/h

No space left on device 解决Linux系统磁盘空间满的办法

由于当初安装系统时设计不合理,有些分区分的过小,以及网络通讯故障等造成日志文件迅速增长等其他原因都可能表现为磁盘空间满,造成无法读写磁盘,应用程序无法执行等. (以/home空间满为例): 1. 定期对重要文件系统扫描,并作对比,分析那些文件经常读写 #ls –lR /home >;files.txt #diff filesold.txt files.txt 通过分析预测空间的增长情况,同时可以考虑对不经常读写文件进行压缩,以减少占用空间. 2. 查看空间满的文件系统的inodes消耗 #df

解决linux根目录磁盘空间满

根目录磁盘写满,往往都是.log日志造成的,首先想到的是查找大的日志文件 1.find查找根下大于800M的文件 find / -size +800M -exec ls -lh {} \; 找到大的日志文件关闭掉,或者更改到其他磁盘. 2.如果查找后,发现没有大文件,可能有占用文件的相关进程没有关闭 可以通过下面命令(如果没有lsof命令手动yum安装即可yum install lsof)找到已经被清空或删除,但是未释放空间的文件和进程信息 lsof | grep deleted kill杀死占

ireport部署到Linux服务器上遇到的问题解决

ireport报表在本地Windows环境运行正常,一旦部署到Linux环境上出现了如下问题: 1.打开报表,后台直接报net.sf.jasperreports.engine.util.JRFontNotFoundException: Font '仿宋' is not available to the JVM. See the Javadoc for more details...错误. 这个问题是之前以为是Linux环境未安装相应字体导致,但在Linux上安装相应字体后,仍然报错. 最初的解决

Linux服务器磁盘满了如何处理

在我们日常工作中,服务器磁盘满了是一个常见的问题,那么我们如何有逻辑的有方法的去处理这件事儿呢?首先当我们服务器磁盘满了我们一般想到到的就是把比较大的而且不重要的文件删除,从而释放空间,在此之前我们必须要明白一件事情,那就是一个文件被彻底删除需要满足的条件:一是这个文件的硬链接数为0二是进程占用数为0好了废话不多说我们来看一看一个案例把!可以看到我在向文件里边追加数据的时候告诉我没有可用的空间了这时候我们用df命令查看一下剩余的空间:我们发现根空间的使用率已经是百分之百了,这时候我们使用du -

邮件服务器日志占满磁盘。。。

公司用的是Exchange 2007版,因为邮箱每天会产生大量的日志文件,邮箱硬盘用的是3.6T的空间. 前几天查看邮件服务器,发现邮箱服务器的磁盘空间还有几百兆(采用exchage 2007 CCR模式,主域,备域,邮件服务器两台,没有布署边缘服务器) 使用 eseutil /mk D:\ExchangeCCR\Mailbox\xxx\e06.chk |find/I "checkpoint" 查到日志写入点. 根据检查点进行,把之前的日志文件拷贝到移动硬盘上.发现因为文件太多,直接拷

Linux服务器磁盘扩展和oracle表空间文件迁移操作记录

1.环境介绍 服务器硬件:Dell R710 服务器OS:红帽子Linux   RHEL4.8 数据库:Oracle 10g 2.出现的问题 因为数据表每天有上百万的数据写入表,加上建立索引,导致表空间不停增长,表空间被设置为自动增长,因此dbf文件在不断增大,硬盘空间在每天约400M的速度减少.数据库虽有自清理的脚本,清理3个月前的数据,但实际增加的数据太多,清理释放的空间不能满足需求了. 3.处理过程 解决思路是,该服务器的硬盘有预留空间,未完全划分的约有100G,可以建立新的分区,将已经存