cszer

mail服务器磁盘满故障

分类: 工作相关       评论: 3   阅读:2,095 views

早上一个客户来电,称其邮件无法正常收发。要来服务器ip及root密码,登陆查看。
登陆后立马df+w(事实证明这是个好习惯^_^~),直接就看到了问题所在:

[root@master ~]# df
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda5             39674192  37635572         0 100% /
/dev/sda2             857G  750G   63G  93% /mail
/dev/sda1             244M   13M  219M   6% /boot
tmpfs                 2.0G     0  2.0G   0% /dev/shm

根分区满了!!

使用du命令检查出Tomcat的日志占用了23个G的空间:

[root@master logs]# ll -h
total 23G
-rw-r--r-- 1 vmail mail 23G Jul 30 09:29 catalina.out

直接rm删除,df查看发现根分区还是100%,奇怪?!
将根目录下的其他临时文件删除,有腾出一点空间,但一会儿后马上又满了。
尝试重启了下web服务,再次查看,正常了:

[root@master ~]# df
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda5              38G   14G   23G  39% /
/dev/sda2             857G  750G   63G  93% /mail
/dev/sda1             244M   13M  219M   6% /boot
tmpfs                 2.0G     0  2.0G   0% /dev/shm

网上查了下,找到了原因:

  • 当 catalina.out日志文件被Tomcat进程占用时,通过rm删除该文件,实际上只是删除了文件名(该日志文件的应用记数不为0,因此空间不会被释放)
  • 当开启Tomcat进程后,Tomcat已经通过catalina.out定位到该文件的inode,就是说写日志不通过catalina.out文件,所以,即使删除了catalina.out文件,Tomcat依然可以将日志写到catalina.out的inode节点,所以导致磁盘空间增加。

最后附上linux删除文件的原理:

Linux是通过link的数量来控制文件删除的,只有当一个文件不存在任何link的时候,这个文件才会被删除。一般来说,每个文件都有2个link计数器:i_count 和 i_nlink。

i_count的意义是当前文件使用者(或被调用)的数量,i_nlink 的意义是介质连接的数量(硬链接的数量);可以理解为i_count是内存引用计数器,i_nlink是磁盘的引用计数器。

当一个文件被某一个进程引用时,对应i_count数就会增加;当创建文件的硬链接的时候,对应i_nlink数就会增加。

对于删除命令rm而言,实际就是减少磁盘引用计数i_nlink。这里就会有一个问题,如果一个文件正在被某个进程调用,而用户却执行rm操作把文件删除了,那么会出现什么结果呢?当用户执行rm操作删除文件后,再执行ls或者其他文件管理命令,无法再找到这个文件了,但是调用这个删除的文件的进程却在继续正常执行,依然能够从文件中正确的读取及写入内容。这又是为什么呢?

这是因为rm操作只是将文件的i_nlink减少了,如果没其它的链接i_nlink就为0了;但由于该文件依然被进程引用,因此,此时文件对应的i_count并不为0,所以即使执行rm操作,但系统并没有真正删除这个文件,当只有i_nlink及i_count都为0的时候,这个文件才会真正被删除。也就是说,还需要解除该进程的对该文件的调用才行。

以上讲的i_nlink及i_count是文件删除的真实条件,但是当文件没有被调用时,执行了rm操作删除文件后是否还可以找回被删的文件呢?

前面说了,rm操作只是将文件的i_nlink减少了,或者说置0了,实际就是将文件名到inode的链接删除了,此时,并没有删除文件的实体即(block数据块),此时,如果及时停止机器工作,数据是可以找回的,如果此时继续写入数据,那么当新数据就可能会被分配到被删除的数据的block数据块,此时,文件就会被真正的回收了,那时就是神仙也没有办法了。

除非注明,文章皆由( csz )原创,转载请标明本文地址
本文地址: http://www.cszhi.com/20120802/full-disk.html

08-02
2012

发表评论