我正在使用/ var的空间在哪里?

我是一个新手linuxpipe理员,现在负责一个3节点Tomcat集群的操作系统。 (幸运的是,Tomcat由DEV处理。)

我的监控解决scheme让我感到震惊,/ server01上的/ var只剩下172MB剩余空间。 很可能是因为/ var / log填满了。

所以我调查了:

server01:/var# for i in $(ls); do du -sh $i; done 3.5M backups 100M cache 51M lib 0 local 0 lock 598M log 0 mail 0 opt 40K run 32K spool 144K tmp 4.0K www 

如果我总结一下,我用760MB左右的东西结束。 如果我深入挖掘目录树,数字不会改变。 所以这是正确的。

但是,如果我执行一个df -h,那么我最终会得到完全不同于/ var的数字。 df表示使用了3.0G中的2.8G。

 server01:/var# df -h Filesystem Size Used Avail Use% Mounted on /dev/sda1 950M 205M 697M 23% / tmpfs 2.0G 0 2.0G 0% /lib/init/rw udev 2.0G 4.0K 2.0G 1% /dev /dev/sda3 961M 33M 928M 4% /tmp /dev/dm-0 2.0G 506M 1.5G 26% /usr /dev/dm-1 3.0G 2.8G 172M 95% /var /dev/dm-2 20G 17G 3.3G 84% /home 

有趣的是,其他2个节点在/ var上报告更多使用间隔。 因为节点2和3上的/ var / log /消耗了200-300MB多的空间。 但是分区和底层LVM在所有3个节点上都具有相同的大小。

在server02和server03上,df -h报告说一切正常,从3.0GB只使用1.0到1.2GB。

那么我的空间在哪里被使用?

我听到那些叫做inode的小混蛋,并检查了这个。 df -i报告:

 server01:/var# df -i Filesystem Inodes IUsed IFree IUse% Mounted on /dev/sda1 123648 6099 117549 5% / tmpfs 506908 3 506905 1% /lib/init/rw udev 506487 675 505812 1% /dev /dev/sda3 987968 7 987961 1% /tmp /dev/dm-0 2048000 19786 2028214 1% /usr /dev/dm-1 705808 1807 704001 1% /var /dev/dm-2 13619632 5906 13613726 1% /home 

在server02和server03上:

 server03:/var# df -i Filesystem Inodes IUsed IFree IUse% Mounted on /dev/sda1 123648 6100 117548 5% / tmpfs 506908 3 506905 1% /lib/init/rw /dev 506487 675 505812 1% /dev /dev/sda3 987968 7 987961 1% /tmp /dev/dm-0 2048000 19784 2028216 1% /usr /dev/dm-1 3096576 1758 3094818 1% /var /dev/dm-2 13113840 5642 13108198 1% /home 

所以server01上的/ var有705.808 inode,而server02和server03在/ var上有3.096.576 inode。 但这是真的吗? 因为每个节点只使用1%。

如果是的话,我该如何增加inode? (所有文件系统都是ext2以外的XFS)

/ etc / fstab在所有3个节点上都是相同的。 操作系统是Debian莱尼64位与内核2.6.35.4。

问候

你可以运行lsof | grep deleted lsof | grep deleted并检查女巫节目分配这个空间(和删除的文件)。

例:

 [root@mab-01 ~]# lsof | grep deleted hald-addo 2651 haldaemon txt REG 253,0 15720 3769183 /usr/libexec/hald-addon-keyboard.#prelink#.IhBW5L (deleted) yum-updat 2899 root txt REG 253,0 4736 3276902 /usr/bin/python.#prelink# (deleted) mongod 5535 mongod txt REG 253,0 8640360 3484794 /usr/bin/mongod (deleted) mongod 5535 mongod 1w REG 253,0 278032 262244 /var/log/mongo/mongod.log.rpmsave (deleted) mongod 5535 mongod 2w REG 253,0 278032 262244 /var/log/mongo/mongod.log.rpmsave (deleted) 

/ var / log确实填满了

如果你删除了一个进程打开的日志文件,文件名会丢失(所以du不能看到),但是分配的空间仍然被分配,当进程继续写入时,分配的空间会增加。

如果日志是TomCat日志,则需要告诉Tomcat重新打开它的日志文件。

在本例中请注意“copytruncate”。 我不知道这是否适用于你的情况。

感谢与lsof |的提示 grep删除。 事实上,我得到了几十个被删除的Apache2和Tomcat6的文件。

 server01:~# lsof | grep deleted | wc -l 124 

重新启动Apache2后,删除的文件数量减less到了40.而且我在/ var上有2.4 GB的空闲空间。 我还在另外两台主机上search了删除的文件,发现在server02上也有删除的文件仍然打开。 幸运的是,这一次我之前说过“ps auxf”。 在那里我看到Apache2 Thread自11月8日开放。 在“kill -9 $ oldapache2threadpid”之后,这些被删除的文件也消失了。 也许这也是server01上的问题。

然后,我重新启动了server01上的Tomcat服务。 删除的文件也消失了,但可用空间没有增加。 但是/ var上的可用空间现在匹配(有几MB)du -sch告诉我什么。

所以,感谢大家的帮助:-)

仍然需要调查为什么Apache不closures他所有的线程。

问候