我有一个CentOS 5.5盒子,有一个独立的/ home分区。 df -h
显示它在100%的使用率。 df -i
显示大量免费的inode。 du -sh /home /home*
显示du -sh /home /home*
中有大约100MB的文件。 lsof -n | grep / home在/ home中显示没有打开的文件。 lsof -n | grep deleted显示没有文件触及/ home。
该分区通过NFS共享,并挂载在另外两个CentOS 5.5客户端上。 lsof -n|grep /home
和lsof -n|grep deleted
显示/home
或/
。
当我卸载并重新安装分区时,磁盘使用率从100%下降到不到3%。 但是在几天之内磁盘使用率就会回到100%。
使用/ home的唯一东西是NFSd,一个自定义脚本和SSHd。 该脚本将文件从/home/somedir
移动到/home/tmp
,然后将文件移动到/ tmp,然后parsing文件。 这个脚本在所有三个盒子上运行。
新文件放在/ home中,由SCP将这些文件放入/home
的chroot环境中。 只有几个二进制文件加上/dev/null
节点在/home/somepath/...
。
我已经使用service nfs stop
和service portmap stop
nfs,停止sshd,validation上述脚本不运行,然后检查磁盘使用情况。 它保持在100%。 只有卸载和重新安装似乎清除它。
/ home的fsck -f(当然是未安装的)显示文件系统是好的。
所有的盒子都完全更新并运行CentOS 5.5。
我的磁盘空间在哪里?
猜测:在三个盒子上运行的自定义脚本正在试图从三个地方操纵相同的文件, 在远程系统上运行的NFS客户端告诉它的内核它已经删除了一个文件,但是实际上在另一个系统上被其他进程删除了,所以远程客户端被卡住了。
解决scheme:使用NFS允许远程系统访问文件系统,但只能在导出系统上运行清理脚本。