在我们的一台服务器上执行了一些错误的 php 代码后,它试图打开一个不存在的文件,结果我们得到了巨大的 apache 日志文件,这些文件尚未配置为轮换。我们只是删除了这些日志文件。之后我们发现我们的磁盘并没有真正清理干净。DF-H显示以下内容
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 18G 16G 1.1G 94% /
udev 999M 12K 999M 1% /dev
tmpfs 403M 848K 402M 1% /run
none 5.0M 0 5.0M 0% /run/lock
none 1007M 72K 1007M 1% /run/shm
/dev/mapper/vg_ftp-ftp 9.9G 5.3G 4.2G 56% /mnt/local/ftp
Inode 似乎也不错
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/sda1 1168128 227009 941119 20% /
udev 215094 442 214652 1% /dev
tmpfs 219463 384 219079 1% /run
none 219463 6 219457 1% /run/lock
none 219463 3 219460 1% /run/shm
/dev/mapper/vg_ftp-ftp 655360 1553 653807 1% /mnt/local/ftp
在调查后杜和北卡罗莱纳大学我们仍然找不到空间消失的地方。后来我们认为是打开的文件处理程序仍然存在,所以我们做了lsof | grep 已删除它给了我们一些文件,包括/sbin/mountall这有点吓人。
mountall 287 root txt REG 8,1 120404 9334 /sbin/mountall (deleted)
mysqld 615 mysql 4u REG 8,1 0 416 /tmp/iba1fEnV (deleted)
mysqld 615 mysql 5u REG 8,1 0 899 /tmp/ibcxXlJG (deleted)
mysqld 615 mysql 6u REG 8,1 0 900 /tmp/ibdby44r (deleted)
mysqld 615 mysql 7u REG 8,1 0 901 /tmp/ibYaPXvd (deleted)
mysqld 615 mysql 11u REG 8,1 0 986 /tmp/ibS9XlvZ (deleted)
ntpd 1231 ntp 3r REG 8,1 481 1427 /etc/network/interfaces~ (deleted)
我们正在努力避免重启。有人知道这可能是从哪里来的吗,或者我们还可以检查什么来找到缺失的空间?
答案1
您删除的文件仍将打开,Apache 将写入该文件。您需要重新启动 Apache 以允许它创建新文件。正常重新启动应该可以解决问题
apachctl -k graceful
或者
apache2ctl -k graceful
或者你的发行版使用的任何版本。
答案2
你sync
也试过运行吗?它通常每隔几分钟至少自动执行一次,但谁知道呢。
另外,您究竟是如何调查的du
?也许其中一些文件被旋转到其他目录中的某个地方,而您没有注意到它们尚未被删除?
您也可以尝试运行find / -size +10000000c
来查找大于 10MB 的文件。