Краткий ответ
Когда диск заполнен, сначала проверьте занятое место с помощью `df -h` и найдите большие файлы и папки с помощью `du`. Затем очистите ненужные логи, кеш пакетов и временные файлы, но следите за тем, чтобы не удалить активные логи без ротации. В конце настройте logrotate и удалите старые архивы, чтобы предотвратить повторное заполнение.
Как проявляется проблема
- Сервисы не могут записать данные в базу или файлы
- Приложение выдает ошибку «No space left on device»
- Вы не можете войти на сервер по SSH
- Веб-сайт возвращает ошибку 500 или не загружается
- Системные логи перестают записываться
Частые причины
Неконтролируемые логи
Лог-файлы приложений или системы растут без ротации и могут занять все свободное место.
Кеш пакетов и обновления
Загруженные пакеты и кеш менеджера пакетов (APT, DNF) накапливаются со временем.
Временные файлы и сессии
Файлы в `/tmp` и сессии пользователей могут оставаться навсегда, если их не очищать.
Большие файлы базы данных
Файлы резервных копий, дампы базы или архивы могут быть большими и забытыми.
Неправильно смонтированные диски
Если раздел не монтируется правильно, данные записываются на корневой раздел и заполняют его.
Пошаговое решение
- 1
Проверьте занятое место на диске
Запустите
df -h, чтобы увидеть, какой раздел заполнен. Обратите внимание на столбецUse%и на раздел, который занят на 100%. Если заполнен корневой раздел (/), продолжайте проверку больших папок. - 2
Найдите самые большие папки
Используйте как root
du -h --max-depth=1 /, чтобы увидеть занятое место по директориям. Затем войдите в самую большую папку и повторите команду. Таким образом вы быстро найдете место, где расходуется пространство. - 3
Найдите большие файлы
Запустите как root
find / -type f -size +100M -exec ls -lh {} \;, чтобы найти файлы больше 100 МБ. Удалите или переместите те, которые не нужны, но сначала проверьте, для чего они служат, и сделайте резервную копию, если данные важны. - 4
Очистите логи
Логи обычно находятся в
/var/log. Перед очисткой сделайте резервную копию логов, если они нужны для диагностики. Вы можете удалить старые архивные логи (*.gz,*.1) или обрезать их как root командойtruncate -s 0 /var/log/имя.log. Не удаляйте активные логи, а обрезайте или ротируйте их. - 5
Очистите кеш пакетов
В системах Debian/Ubuntu запустите как root или с
sudo:apt cleanиapt autoremove. В системах RHEL/CentOS/Fedora используйте как root или сsudo:dnf clean allиdnf autoremove. Это освободит место, занятое загруженными пакетами. - 6
Очистите временные файлы
Просмотрите
/tmpи/var/tmpи удалите файлы старше нескольких дней. Будьте осторожны с файлами, которые в данный момент используются активными процессами. - 7
Настройте logrotate
Проверьте конфигурацию в
/etc/logrotate.confи/etc/logrotate.d/. Убедитесь, что логи ротируются и старые версии удаляются. Вы можете добавитьrotate 7иdailyдля ключевых логов. - 8
Проверьте монтирование дисков
Запустите
mountиdf -h, чтобы увидеть, правильно ли смонтированы все разделы. Если какой-то раздел не смонтирован, данные записываются на корневой раздел и могут его заполнить.
Если ничего не помогает
Если у вас все еще недостаточно места, проверьте, есть ли удаленные файлы, которые удерживаются активными процессами. Команда lsof +L1, запущенная как root, показывает такие файлы; безопасно перезапустите процесс, который их удерживает. Подумайте о добавлении нового диска или расширении раздела. Для баз данных и приложений с большими данными регулярно делайте резервные копии и очищайте старые дампы. В конце, если диск физически мал, планируйте миграцию на больший диск или облачное хранилище.
Как избежать повторения
- Регулярно проверяйте занятое место на диске с помощью `df -h` и `du`
- Настройте logrotate для всех приложений, которые пишут логи
- Очищайте кеш пакетов и временные файлы ежемесячно
- Используйте инструменты мониторинга, которые предупредят вас, когда диск достигнет 80%
Когда лучше обратиться к специалисту
Если вы не можете получить доступ к серверу или не знаете, какие файлы безопасно удалять, обратитесь в IT поддержку. Также, если диск физически неисправен или есть подозрение на аппаратную неисправность, лучше, чтобы это проверил специалист.
Обслуживание ИТ-инфраструктуры · Серверы, сети, резервное копирование, безопасность и helpdeskЧастые вопросы
Как быстро освободить место на корневом разделе?
Сначала проверьте `df -h`, чтобы увидеть, сколько места осталось. Затем найдите большие файлы и папки с помощью `du` и `find`, и удалите ненужные логи и кеш. Если срочно, вы можете временно удалить старые архивы логов, но перед этим сделайте резервную копию, если они вам нужны.
Можно ли свободно удалять файлы в /tmp?
Вы можете удалить файлы старше нескольких дней, но сначала проверьте, не использует ли их какой-либо активный процесс. Лучше всего использовать `tmpwatch` или `systemd-tmpfiles` с соответствующим таймером, который автоматически очищает `/tmp`.
Почему диск снова заполняется после очистки?
Наиболее частая причина - отсутствие ротации логов или приложение, которое создает большие временные файлы. Проверьте конфигурацию logrotate и установите ограничения для приложений, которые пишут много данных.