Закончилось место на сервере Linux. Как узнать, чем занято?
2018-11-08 22:51:52
Начинающие мастера часто сталкиваются с проблемой, когда заканчивается свободное место на хостинге или VPS с Linux. При этом объёмных работ по наполнению сайтов, работающих на сервере, не производилось. У моего коллеги был случай, когда из-за нехватки места не могли создастся файлы сессий на сайте. Давайте разберёмся, как это предотвратить на реальном примере.
Как узнать в linux, сколько осталось свободного места
Для того, чтобы узнать сколько место осталось на сервере, выполните команду:
df -h
Данная команда отобразит информацию о свободном пространстве на жёстком диске в гигабайтах. Кроме того, программа вычисляет процент занятого пространства, чтоб облегчить восприятие. Если занято более 90% - уже стоит беспокоиться.
Печальная картина - sda1 у нас занят 21 ГБ из 24. Место скоро закончится, но лучше это предотвратить.
Как узнать, чем занято место на сервере
Часто, причинами разрастания объёмов данных на сервер являются файлы логов. Например, из-за какой-нибудь
ошибки в скрипте сайта при каждом его выполнении ошибки пишется в лог.
Поищем 10 самых больших файлов на сервере, выполнив команду:
find / -mount -type f -ls 2> /dev/null | sort -rnk7 | head -10 | awk '{printf "%10d MB\t%s\n",($7/1024)/1024,$NF}'
Нашли самые объёмные файлы
Видим, что самый большой файл лежит в папке mysql и имеет расширение MYD. Его трогать нельзя, так как в этом файлы хранятся данные для базы данных MySQL. Это относится и к файлам ipdata1 и ib_logfile*.
В файле selogs.txt хранилась информация о ботах поисковых систем, приходящих на сайт. Такие файлы можно безболезненно удалять, выполнив команду:
rm /var/www/****/protected/logs/selogs.txt
Файлы логов btmp.* содержат в себе информацию о неудачных попытках входа в систему. Возможно вас пытаются взломать, подобрав пароль методом bruteforce. Чтобы себя обезопасить, рекомендую настроить авторизация по ssh ключу. Изучив содержимое этих файлов (при необходимости), их тоже можно удалить.
Очистка linux системы с помощью утилиты apt
Если у вас дистрибутив семейства Debian, можете удалить ненужные пакеты и кэш с помощью утилиты apt.
sudo apt-get clean
Перед установкой какого-либо пакета через apt-get, он кэшируется в локальный репозиторий. Объём сохранённых deb пакетов может достигать внушительных размеров. Команда команда apt-get clean удалит все закэшированные deb пакеты и освободит обширное пространство на диске.
sudo apt-get autoremove
При установке программы, вмести с ней в linux устанавливаются дополнительные пакеты, которые использует эта программа. Если программа была удалена, то её зависимости автоматически не удаляются. Данная команда и предназначена для удаления этих пакетов. Но если доля зависимостей ваших программ может быть невелико, то размер зависимостей устаревших версий ядра операционной системы linux может быть огромным. Выполните эту команду и увидите эффект.
Освобождение места с помощью утилиты yum
В семействе дистрибутивов RedHat аналогичные операции можно произвести с помощью следующих команд:
yum clean packages
yum autoremove
Детальное исследование занятого места на дисках в Linux
Для детального исследования занятого пространства в linux рекомендую использовать утилиту ncdu. Установить ее можно командой:
sudo apt-get install ncdu
Если у вас yum, вместо apt-get, то:
sudo yum install
После установки перейдите в любую папку и выполните в консоли команду:
ncdu
Вот пример с результатом работы данной программы для папки, где лежат файлы моего блога.
Таким образом, можно искать папки, занимающие большие объёмы дискового пространства.