服务器上没有更多的磁盘空间

lat*_*atz 10 linux filesystems disk-space-utilization

在我们的一台服务器上执行了一些错误的 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
Run Code Online (Sandbox Code Playgroud)

索引节点似乎也可以

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
Run Code Online (Sandbox Code Playgroud)

在用duncdu进行调查后,我们仍然找不到空间消失的地方。后来我们认为它是仍然存在的打开文件处理程序,所以我们做了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)
Run Code Online (Sandbox Code Playgroud)

我们正在努力避免重新启动。有没有人知道这可能来自哪里,或者我们可以检查什么来找到丢失的空间?

use*_*517 12

您删除的文件仍将打开,Apache 将写入其中。您将需要重新启动 Apache 以允许它创建一个新文件。优雅的重启应该可以解决问题

apachctl -k graceful
Run Code Online (Sandbox Code Playgroud)

或者

apache2ctl -k graceful  
Run Code Online (Sandbox Code Playgroud)

或者你的发行版使用什么。