您的位置:首页 > 其它

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

2012-12-14 12:15 204 查看
#########################################################

# 硬盘显示被写满但是用du -sh /*查看时占用硬盘空间之和还远

#小于硬盘大小问的解决

#date:2010-06-09

#作者:老男孩---《老男孩linux就业培训中心 》

#QQ:31333741 MAIL:oldboy521@hotmail.com

#QQ交流群:45039636

#blog: http://oldboy.blog.51cto.com

#psite: http://oldboy.cc(即将开放)

#pblog:http://blog.etiantian.org

##########################################################

问题:硬盘显示被写满,但是用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

650) this.width=650;" alt="" border="0" src="http://img1.51cto.com/attachment/201107/191023385.jpg" />

删除文件原理图:

650) this.width=650;" alt="" border="0" src="http://img1.51cto.com/attachment/201107/184904905.jpg" />

本文出自 “老男孩的linux博客” 博客,请务必保留此出处http://oldboy.blog.51cto.com/2561410/612351
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: