Как обнаружить большие файлы на своем сервере

Тем, кто содержит собственный веб/фтп/гейм/etc-сервер на *nix наверняка знакома проблема, когда что-то начинает работать «не так», и, долго копаясь в различных настройках, пытаясь выяснить причину столь странного поведения серверных приложений, мы обнаруживаем, что на сервере банально закончилось дисковое пространство.
Это значит — самое время навести порядок в вашей файловой системе, хотя бы путем удаления больших (ОГРОМНЫХ) и неиспользуемых файлов. Также очень сильно могут разрастаться логи (/var/log/messages, access.log и error.log апача и многие, многие другие). В общем, нужные файлы необходимо забэкапить на какой-нибудь другой носитель, а ненужные — просто удалить/очистить. При этом лог-файлы советую не удалять и снова воссоздавать (чтобы избежать проблем с правами доступа), а чистить их содержимое командой:
echo > /path/to/log-file

Так как же найти большие файлы в системе? Конечно, с помощью команды «find».

Для FreeBSD:
Переходим в директорию, относительно которой мы будем искать файлы. (для всей системы — «cd /»). Затем, чтобы например найти все файлы размером более 100МБ, нужно выполнить команду:

find . -type f -size +100M -exec ls -al {} \;

или
du /partition_or_directory_name | sort -rn | head

или
find / -size +500M -exec ls -l {} \;


Для Linux:
Команда выглядит следующим образом:
find . -type f -size +100M -exec ls -lh {} \; | awk '{ print $9 ": " $5 }'

(или, для разных дистрибутивов бывают вариации, например:)
find . -type f -size +100M -exec ls -lh {} \; | awk '{ print $8 ": " $5 }'

Проблемы с занятым местом

Со стороны, админа сервера:
Очень часто при работе с ISPmanager возникает проблема с «утечкой» места». Панель показывает, что занято пользователем места больше, чем в сумме с
составляют файлы пользователя в домашней директории (/home/usr, /var/www/usr) и базы данных.

На самом деле в место, занятое пользователем включается также и логи apache, nginx, которые часто занимают много места.

В первую очередь при недостатке места нужно очистить логи в разделе Журнал ISPmanager, и настроить ротацию логов (в частности уменьшить кол-во сохраняемых архивов).
Если же проблема не исчезла, то можно найти все файлы, которые считаются в квоте командой
find / -group имя_пользователя.
Ну и на последок можно выполнить ремонт квот из ISPmanager.

Иногда, бывает, что заканчивается место, у хостера, на ноде.
Warning: Unknown: open(/var/www/a2k/data/mod-tmp/sess_ea4333e3b35d18afc952a58f7eeb9ff7, O_RDWR) failed: No space left on device (28) in Unknown on line 0
Warning: Unknown: Failed to write session data (files). Please verify that the current setting of session.save_path is correct (/var/www/a2k/data/mod-tmp) in Unknown on line 0
Подключаемся по ssh, смотрим сравнительный вывод df -h и df -i

Еще, хочу отметить, что Пользователь в ISPmanager удаляется(сразу) при удалении аккаунта хостинга(услуги) в BILLmanager (Пользователь ISPmanager != Клиент BILLmanager).
А бекапы этого пользователя ISPmanager(если делались) еще живут некоторое время. До глобальных ребутов обычно.

Со стороны, админа vds ISP manager.
Обязательно всегда проверяйте, в панели — Информация о системе(/manager/ispmgr?startpage=sysinfo) — там где hdd, двойным щелчком. (/dev/simfs)
Остальные подсчеты, в ISP панелях могут сбиваться. А ремонт дисковых квот, не доступен, для vds обычно.

Точно так же, проверяйте ротацию логов. Что хранятся последние там 5 архивов, потом удаляется.
А если все проверено, но по /dev/simfs все равно занимает больше, чем /www/ всех ваших пользователей. Ну, вы же следите, знаете что к чему.

То вперед в консоль, du -h --max-depth 1 /
и далее смотреть от корня, где вам кажется, занимать не должно :)

Полезные советы:
repquota -g / | grep user (покажет сколько места занято у пользователя)

ISPmanager использует собственный механизм ротации логов, есть задача rotate в crontab пользователя root, работает если запускается она в период с 00 до 01 часов, она ротирует логи и запускает скрипт статистики webstat, конфиг его лежит в /usr/local/ispmgr/etc/rotate.conf, но руками него править не надо, настраивается ротация логов через ISPmanager в меню WWW-домены ;)
Если какой-то лог сильно разросся, то его надо просто обнулить
cp /dev/null /home/httpd-logs/sitename.ru.error.log

Еще, бывает, что в ISPmanager Pro перестает скачивать и закачивать файлы на сервер.
Увеличиваем лимит на кол-во открытых файлов (на самой VDS значение в limits.conf)
например: * — nofile 931200000

Подробнее про quotacheck
0) заходим в ssh
1) убиваем апач
2) убиваем энжынкс (если есть)
3) убиваем остальные пишущие на диск процессы, вроде вочдогов
3) quotacheck -bcguvf /dev/<диск>
где <диск> — раздел, который нужно проверить. например, /dev/sda3
4) ждем (полтора-терабайтный раздел, занято 900гб, сканировался минут 20)
5) если все ок, то радуемся.
также стоит проверить квоты в панели — у нас они все сбросились на 0 (т.е. неограниченно). если то же самое будет — выставить квоты вручную (да, ад)