Web服务器磁盘满故障深入解析

问题:硬盘显示被写满,但是用du -sh /*查看时占用硬盘空间之和还远小于硬盘大小
即找不到硬盘分区是怎么被写满的。

今天下午接到一学生紧急求助,说生产线服务器硬盘满了。该删的日志都删掉了。可空间还是满的,情况危急啊。这个问题,在多年以前直接和间接的遇到过3-4次。以前太懒惰了,这次记录下来和大家分享。

相关日志如下:

█ 查看硬盘分区大小
[[email protected] ~]# cat /etc/redhat-release 
CentOS release 5.3 (Final)
[[email protected] ~]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda3             117G  111G     0 100% /
/dev/sda1             145M   12M  126M   9% /boot
tmpfs                 3.0G     0  3.0G   0% /dev/shm
这是一台web服务器(apache+tomcat+mysql)
通过dh -h命令查看 总大小117G,使用了111G
[[email protected] /]# fdisk -l

Disk /dev/sda: 146.8 GB, 146815733760 bytes
255 heads, 63 sectors/track, 17849 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          19      152586   83  Linux
/dev/sda2              20        2108    16779892+  82  Linux swap / Solaris
/dev/sda3            2109       17849   126439582+  83  Linux
[[email protected] /]# fdisk -l /dev/sda3

Disk /dev/sda3: 129.4 GB, 129474132480 bytes
255 heads, 63 sectors/track, 15741 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Disk /dev/sda3 doesn‘t contain a valid partition table
==========================================================================================
█ 使用du命令查看到底哪些目录占用了空间
[[email protected] /]# du -sh /*
8.6M    /bin
6.1M    /boot
2.8G    /data ===》这里是DB目录
124K    /dev
60M     /etc
1.6G    /home ===》这里是日志目录
120M    /lib
24M     /lib64
16K     /lost+found
8.0K    /media
0       /misc
12K     /mnt
0       /net
8.0K    /opt
0       /proc
614M    /root
35M     /sbin
8.0K    /selinux
24K     /server
8.0K    /srv
0       /sys
24K     /tmp
2.5G    /usr
29G     /var  ==》这里是www目录

可以看出,上面所有目录之和 远小于总的空间占用111G,是什么占用了硬盘,还查不到呢?
---------------
解答:
出现上面问题原因:
在apache/tomcat服务在运行状态下,清空了运行服务的日志,这里是清理了当天或正在写入的apache及tomcat的日志文件,从而导致了上面问题。(有关原理细节见下文)

引申下:
一般情况下,大多数服务(包括脚本)在运行时,是不能删除当前正在写入的日志文件的。这点请大家要记牢。

本文的解决办法:
查找机器自身的服务,然后重起apache和tomcat。
重起apache后:
[[email protected] 07]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda3             117G  109G  2.3G  98% /
/dev/sda1             145M   12M  126M   9% /boot
tmpfs                 3.0G     0  3.0G   0% /dev/shm

重起tomcat后:
[[email protected] ~]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda3             117G   38G   74G  34% /
/dev/sda1             145M   12M  126M   9% /boot
tmpfs                 3.0G     0  3.0G   0% /dev/shm

删除文件原理图:

本文出自 “老男孩linux运维” 博客,请务必保留此出处http://oldboy.blog.51cto.com/2561410/612351

时间: 2024-10-13 22:01:11

Web服务器磁盘满故障深入解析的相关文章

服务器磁盘满无法释放空间解析及解决

硬盘显示被写满,但是用du -sh /*查看时占用硬盘空间之和还远小于硬盘大小 使用df -h查看,磁盘空间确实是满的,即找不到硬盘分区是怎么被写满的. 了解前因后果后,得知,这台WEB服务器的日志文件被删除了,目的是想清除日志文件占用的大量磁盘空间,但是当文件在一直被 写入的这个过程中,我们是无法彻底的删除的. 因此产生了这样的一个问题,下面我来模拟一下: [[email protected] test]# dd if=/dev/zero of=/dev/sdc bs=10M count=10

清理web服务器磁盘脚本,shell,py,初学python。

环境:web服务器,没装别的程序,基本占磁盘的就是nginx log文件 思路:当磁盘超过80%,删除3天之前的nginx日志 shell: #!/bin/bash disk_use=`df -h|awk '/\/$/ {a=+$(NF-1);if(a>80)print a}'` ls /usr/local|grep tengine && PATH=/usr/local/tengine/logs || PATH=/usr/local/nginx/logs if [ $disk_use

一次服务器磁盘满,服务无法运行的经历记录

描述:今天下午业务里面的场景是,将符合条件的redis数据,封装存储到mongo中,然后删除redis中的数据.但是就是最后忘记了删除redis中的数据,导致高速的将相同的数据不断写入mongo中,导致mongodb爆炸了.所以平时我们在操作redis的时候一定要细心.解决办法:服务器扩容,将整个服务器镜像,然后磁盘备份,然后新买个磁盘,挂载到新的服务器作为数据盘,原来的盘作为系统盘,防止因为数据盘满了,影响系统盘的运行.具体步奏这里不细说,用的阿里云服务器,教程很详细. 原文地址:https:

Web服务器性能优化

Web 服务器性能与站点访问性能优化思路 要优化 Web 服务器的性能,我们先来看看 Web 服务器在 web 页面处理上的步骤:1.Web 浏览器向一个特定的服务器发出 Web 页面请求;2.Web 服务器接收到 web 页面请求后,寻找所请求的 web 页面,并将所请求的 Web 页面传送给 Web 浏览器;3.Web 浏览器接收到所请求的 web 页面内容,并将它显示出来. 上面三个步骤都关系 Web 服务器,但实际 Web 服务器性能相关最大的是在第 2 步,这里 Web 服务器需要寻找

超高性能Web服务器 hetao 更新至 v0.7.0

超高性能Web服务器 hetao 更新至 v0.7.0了(比Nginx快3倍).更新内容如下: 0.7.0        2016-09-10    calvin* 支持启动后切换到其它用户身份* 修正了fasterhttp的一个致命问题* 修改了makefile以及相关文件以支持直接编译安装到系统目录* 新增配置文件检查工具hetaocheck————————更新历史————————0.6.0        2016-09-07    calvin* 在流类型配置mimetype中增加是否压缩

基于C# Socket的Web服务器---静态资源处理

Web服务器是Web资源的宿主,它需要处理用户端浏览器的请求,并指定对应的Web资源返回给用户,这些资源不仅包括HTML文件,JS脚本,JPG图片等,还包括由软件生成的动态内容.为了满足上述需求,一个完整的Web服务器工作流程: 1)   服务器获得浏览器通过TCP/IP连接向服务器发送的http请求数据包. 2)   HTTP请求经过Web服务器的HTTP解析引擎分析得出请求方法.资源地址等信息,然后开始处理. 3)   对于静态请求,则在服务器上查询请求url路径下文件,并返回(如果未找到则

Web服务器访问失败故障处理技巧

很多公司都架设了Web服务器,不过架设好的Web服务器如果不经过访问测试,很可能无法达到顺利发布信息的目的:小编下面推荐的一则Web服务器访问失败故障就比较常见,现在我们就对它的排除过程进行总结,希望日后大家再次遭遇相同类型故障时可以快速进行应对!这些经验都是客户租用服务器的案例. 租用服务器|托管服务器|私服服务器租用|高防服务器|网站服务器租用|双线服务器租用|湖南双线|衡阳双线高防 为了能让单位员工及时了解上级指示精神以及单位通知和其他信息,单位领导决定在局域网中搭建Web服务器,保证局域

TCP/IP协议学习(四) 基于C# Socket的Web服务器---静态资源处理

目录 1. C# Socket通讯 2. HTTP 解析引擎 3. 资源读取和返回 4. 服务器测试和代码下载 Web服务器是Web资源的宿主,它需要处理用户端浏览器的请求,并指定对应的Web资源返回给用户,这些资源不仅包括HTML文件,JS脚本,JPG图片等,还包括由软件生成的动态内容.为了满足上述需求,一个完整的Web服务器工作流程: 1) 服务器获得浏览器通过TCP/IP连接向服务器发送的http请求数据包. 2) HTTP请求经过Web服务器的HTTP解析引擎分析得出请求方法.资源地址等

公司网络访问web服务器

一.准备工作:在eNsp中模拟公司访问web服务器,在模拟器中准备一台S5700交换机名为SW1,俩台S3700交换机分别名为SW2,SW3.三台PC机分别命名PC1,PC2,PC3.俩台Server,分别模拟web服务器跟dns服务器.一台Client,命名为Client1充当客户端 二.实验环境 设备 端口 连接设备 SW1 GE0/0/1 SW2 SW1 GE0/0/2 SW3 SW1 GE0/0/3 dns SW1 GE0/0/4 web SW2 Ethe0/0/1 SW1 SW2 Et