Перейти к содержимому
EVI Solutions

Полный диск на Linux сервере: как освободить место

Средне 20 мин Обновлено:

Краткий ответ

Когда диск заполнен, сначала проверьте занятое место с помощью `df -h` и найдите большие файлы и папки с помощью `du`. Затем очистите ненужные логи, кеш пакетов и временные файлы, но следите за тем, чтобы не удалить активные логи без ротации. В конце настройте logrotate и удалите старые архивы, чтобы предотвратить повторное заполнение.

Как проявляется проблема

  • Сервисы не могут записать данные в базу или файлы
  • Приложение выдает ошибку «No space left on device»
  • Вы не можете войти на сервер по SSH
  • Веб-сайт возвращает ошибку 500 или не загружается
  • Системные логи перестают записываться

Частые причины

Неконтролируемые логи

Лог-файлы приложений или системы растут без ротации и могут занять все свободное место.

Кеш пакетов и обновления

Загруженные пакеты и кеш менеджера пакетов (APT, DNF) накапливаются со временем.

Временные файлы и сессии

Файлы в `/tmp` и сессии пользователей могут оставаться навсегда, если их не очищать.

Большие файлы базы данных

Файлы резервных копий, дампы базы или архивы могут быть большими и забытыми.

Неправильно смонтированные диски

Если раздел не монтируется правильно, данные записываются на корневой раздел и заполняют его.

Пошаговое решение

  1. 1

    Проверьте занятое место на диске

    Запустите df -h, чтобы увидеть, какой раздел заполнен. Обратите внимание на столбец Use% и на раздел, который занят на 100%. Если заполнен корневой раздел (/), продолжайте проверку больших папок.

  2. 2

    Найдите самые большие папки

    Используйте как root du -h --max-depth=1 /, чтобы увидеть занятое место по директориям. Затем войдите в самую большую папку и повторите команду. Таким образом вы быстро найдете место, где расходуется пространство.

  3. 3

    Найдите большие файлы

    Запустите как root find / -type f -size +100M -exec ls -lh {} \;, чтобы найти файлы больше 100 МБ. Удалите или переместите те, которые не нужны, но сначала проверьте, для чего они служат, и сделайте резервную копию, если данные важны.

  4. 4

    Очистите логи

    Логи обычно находятся в /var/log. Перед очисткой сделайте резервную копию логов, если они нужны для диагностики. Вы можете удалить старые архивные логи (*.gz, *.1) или обрезать их как root командой truncate -s 0 /var/log/имя.log. Не удаляйте активные логи, а обрезайте или ротируйте их.

  5. 5

    Очистите кеш пакетов

    В системах Debian/Ubuntu запустите как root или с sudo: apt clean и apt autoremove. В системах RHEL/CentOS/Fedora используйте как root или с sudo: dnf clean all и dnf autoremove. Это освободит место, занятое загруженными пакетами.

  6. 6

    Очистите временные файлы

    Просмотрите /tmp и /var/tmp и удалите файлы старше нескольких дней. Будьте осторожны с файлами, которые в данный момент используются активными процессами.

  7. 7

    Настройте logrotate

    Проверьте конфигурацию в /etc/logrotate.conf и /etc/logrotate.d/. Убедитесь, что логи ротируются и старые версии удаляются. Вы можете добавить rotate 7 и daily для ключевых логов.

  8. 8

    Проверьте монтирование дисков

    Запустите mount и df -h, чтобы увидеть, правильно ли смонтированы все разделы. Если какой-то раздел не смонтирован, данные записываются на корневой раздел и могут его заполнить.

Если ничего не помогает

Если у вас все еще недостаточно места, проверьте, есть ли удаленные файлы, которые удерживаются активными процессами. Команда lsof +L1, запущенная как root, показывает такие файлы; безопасно перезапустите процесс, который их удерживает. Подумайте о добавлении нового диска или расширении раздела. Для баз данных и приложений с большими данными регулярно делайте резервные копии и очищайте старые дампы. В конце, если диск физически мал, планируйте миграцию на больший диск или облачное хранилище.

Как избежать повторения

  • Регулярно проверяйте занятое место на диске с помощью `df -h` и `du`
  • Настройте logrotate для всех приложений, которые пишут логи
  • Очищайте кеш пакетов и временные файлы ежемесячно
  • Используйте инструменты мониторинга, которые предупредят вас, когда диск достигнет 80%

Когда лучше обратиться к специалисту

Если вы не можете получить доступ к серверу или не знаете, какие файлы безопасно удалять, обратитесь в IT поддержку. Также, если диск физически неисправен или есть подозрение на аппаратную неисправность, лучше, чтобы это проверил специалист.

Обслуживание ИТ-инфраструктуры · Серверы, сети, резервное копирование, безопасность и helpdesk

Частые вопросы

Как быстро освободить место на корневом разделе?

Сначала проверьте `df -h`, чтобы увидеть, сколько места осталось. Затем найдите большие файлы и папки с помощью `du` и `find`, и удалите ненужные логи и кеш. Если срочно, вы можете временно удалить старые архивы логов, но перед этим сделайте резервную копию, если они вам нужны.

Можно ли свободно удалять файлы в /tmp?

Вы можете удалить файлы старше нескольких дней, но сначала проверьте, не использует ли их какой-либо активный процесс. Лучше всего использовать `tmpwatch` или `systemd-tmpfiles` с соответствующим таймером, который автоматически очищает `/tmp`.

Почему диск снова заполняется после очистки?

Наиболее частая причина - отсутствие ротации логов или приложение, которое создает большие временные файлы. Проверьте конфигурацию logrotate и установите ограничения для приложений, которые пишут много данных.

Поделиться
Не нашли решение?ИИ-помощник работает 24/7. Опишите проблему или отправьте скриншот ошибки и получите инструкцию для вашего случая.Спросить ИИ-помощника