Назад | Перейти на главную страницу

На сервере больше нет места на диске

после того, как какой-то неправильный код 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

Inodes тоже в порядке

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

После расследования с ду и ncdu мы все еще не могли найти, куда исчезло пространство. Позже мы подумали, что это открытые обработчики файлов, которые все еще существуют, поэтому мы 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)

Мы пытаемся избежать перезагрузки. Есть ли у кого-нибудь идеи, откуда это могло взяться или что еще мы могли бы проверить, чтобы найти недостающее место?

Удаленный вами файл по-прежнему будет открыт, и Apache будет писать в него. Вам нужно будет перезапустить Apache, чтобы он смог создать новый файл. Изящный перезапуск должен помочь

apachctl -k graceful

или

apache2ctl -k graceful  

или то, что использует ваш дистрибутив.

Вы пробовали бегать sync, слишком? Обычно он должен выполняться автоматически не реже одного раза в несколько минут, но кто знает.

Кроме того, как именно вы исследовали du? Возможно, некоторые из этих файлов были перемещены где-то в какой-то другой каталог, и вы не заметили, что они еще не были удалены?

Вы также можете попробовать запустить find / -size +10000000c для поиска файлов размером более 10 МБ.