Web服务器磁盘满故障深入解析
问题:硬盘显示被写满,但是用du -sh /*查看时占用硬盘空间之和还远小于硬盘大小
即找不到硬盘分区是怎么被写满的。
今天下午接到一学生紧急求助,说生产线服务器硬盘满了。该删的日志都删掉了。可空间还是满的,情况危急啊。这个问题,在多年以前直接和间接的遇到过3-4次。以前太懒惰了,这次记录下来和大家分享。
相关日志如下:
█ 查看硬盘分区大小
[root@www ~]# cat /etc/redhat-release
CentOS release 5.3 (Final)
[root@www ~]# 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
[root@www /]# 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
[root@www /]# 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命令查看到底哪些目录占用了空间
[root@www /]# 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后:
[root@www 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后:
[root@www ~]# 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
Web服务器磁盘满故障深入解析的更多相关文章
- (转)Web服务器磁盘满故障深入解析
Web服务器磁盘满故障深入解析 原文:http://blog.51cto.com/oldboy/612351 ############################################# ...
- Web服务器磁盘满故障
问题: 硬盘显示被写满,但是用du -sh /*查看时占用硬盘空间之和还远小于硬盘大小,即找不到硬盘分区是怎么被写满的.今天下午接到同事紧急求助,说生产线服务器硬盘满了.该删的日志都删掉了.可空间还是 ...
- Web服务器磁盘满深入解析及解决
########################################################## 硬盘显示被写满但是用du -sh /*查看时占用硬盘空间之和还远#小于硬盘大小问的 ...
- 数据库服务器和web服务器磁盘占用查询
对于Oracle数据库而言磁盘空间主要体现在表空间上,可使用sql语句进行查看Oracle 表空间的大小及使用情况: select sum(bytes)/1024/1024/1024 "Gb ...
- 图解HTTP权威指南(三)| Web服务器对HTTP请求的处理和响应
作者简介 李先生(Lemon),高级运维工程师(自称),SRE专家(目标),梦想在35岁买一辆保时捷.喜欢钻研底层技术,认为底层基础才是王道.一切新技术都离不开操作系统(CPU.内存.磁盘).网络 ...
- TCP/IP协议学习(四) 基于C# Socket的Web服务器---静态资源处理
目录 1. C# Socket通讯 2. HTTP 解析引擎 3. 资源读取和返回 4. 服务器测试和代码下载 Web服务器是Web资源的宿主,它需要处理用户端浏览器的请求,并指定对应的Web资源返回 ...
- web服务器/应用服务器/http服务器/中间件
web服务器:只处理html静态页面不处理动态页面,如apache/nginx/iis等. 应用服务器:能处理html静态页面也能处理动态页面,如tomcat/weblogic/websphere/j ...
- HTTP之Web服务器是如何进行工作的!
Web服务器是如何进行工作的 ====================文章摘自<HTTP权威指南>====================== 1. 建立连接—接收一个客户端的连接,或者 ...
- php 高级 多台web服务器共享session的方法
解决多台web服务器共享session的问题,至少有以下三种方法: 一.将本该保存在web服务器磁盘上的session数据保存到cookie中 即用cookie会话机制替代session会话机制, ...
随机推荐
- R语言爬虫 rvest包 html_text()-html_nodes() 原理说明
library(rvest) 例子网页:http://search.51job.com/jobsearch/search_result.php?fromJs=1&jobarea=010000% ...
- 阿里巴巴Java开发手册———个人追加的见解和补充(一)
先上干货,<阿里巴巴Java开发手册>的下载地址 https://yq.aliyun.com/articles/69327?spm=5176.100239.blogcont69327.15 ...
- JavaScript实现按键精灵
最近有个需求,需要在页面上面自动点击.输入.提交. 用以模拟真实用户的操作行为,可以通过直接执行某个元素绑定的事件,来执行操作. 也可以创建事件,再派发事件,执行操作.关于事件的更多细节,可以参考&l ...
- git 命令用法 流程操作
Git 是一款免费的.开源的.分布式的版本控制系统.旨在快速高效地处理无论规模大小的任何软件工程. 每一个 Git克隆 都是一个完整的文件库,含有全部历史记录和修订追踪能力,不依赖于网络连接或中心服务 ...
- Python求解登楼梯问题(京东2016笔试题)
问题:假设一段楼梯共15个台阶,小明一步最多能上3个台阶,那么小明上这段楼梯一共有多少种方法? 解析:从第15个台阶上往回看,有3种方法可以上来(从第14个台阶上一步迈1个台阶上来,从第13个台阶上一 ...
- HTML学习三
今天主要学习的为JS和HTML标签的一起使用: 一.重定向: <html> <head> <title>JavaScript1</title> < ...
- groovy学习(五) 命令行输入输出
isr = new InputStreamReader(System.in);br = new BufferedReader(isr);name = br.readLine();println(&qu ...
- #define宏与const的区别
1.#define宏的用法 #define用宏名代替一个字符串,这样便于修改,提高了程序的可移植性.编译器在编译预处理时只对宏做文本替换,而不进行类型检查,所以替换后可能产生一些副作用. 带参数的宏类 ...
- 智能打印SDK-源码剖析
开源地址:http://www.dnnode.com/ 软件下载地址:http://www.dnnode.com/在线展示:http://www.dnnode.com/help.html 前面的文章, ...
- HttpClient 工具
什么是httpclient HTTP 协议可能是现在 Internet 上使用得最多.最重要的协议了,越来越多的 Java 应用程序需要直接通过 HTTP 协议来访问网络资源.虽然在 JDK 的 ja ...