Зачем проверять место на диске в Linux
Регулярный контроль свободного пространства предотвращает аварийные остановки сервисов, падение баз данных и невозможность обновления системы. Когда раздел /var или корневой / заполняется на 100%, Linux перестаёт записывать логи, а приложения начинают завершаться с ошибками ввода-вывода. Этот материал поможет вам быстро оценить текущую ситуацию, найти скрытые потребители места и выбрать подходящий инструмент для мониторинга.
Требования и подготовка
Перед началом работы убедитесь, что у вас есть доступ к терминалу. Для выполнения большинства команд достаточно обычного пользователя. Если нужно анализировать системные каталоги или удалять файлы, потребуются права суперпользователя (sudo). Все описанные утилиты встроены в минимальные сборки дистрибутивов, кроме ncdu, которую мы установим отдельно.
Шаг 1: Быстрая оценка общей загруженности
Самый быстрый способ увидеть картину целиком — использовать встроенную утилиту df. Она показывает статистику по всем смонтированным файловым системам.
Выполните в терминале:
df -h
Флаг -h переводит вывод в человеко-читаемый формат (GB, MB). Обратите внимание на колонки Size (общий объём), Used (занято), Avail (доступно) и Use%. Если процент использования близок к 90–95%, пора принимать меры.
💡 Совет: Для анализа только корневого раздела используйте
df -h /. Чтобы исключить псевдофайловые системы (вродеtmpfsилиdevtmpfs), добавьте флаг-x tmpfs.
Шаг 2: Поиск самых тяжёлых директорий
Утилита df показывает общую картину, но не говорит, какие именно папки съедают пространство. Здесь на помощь приходит du (disk usage).
Запустите команду для сканирования корня файловой системы:
sudo du -sh /* 2>/dev/null | sort -rh
Разбор параметров:
-s— суммирует размер для каждого аргумента без излишней вложенности-h— выводит результат в удобных единицах измерения2>/dev/null— подавляет сообщения об отказе в доступе к защищённым файламsort -rh— сортирует вывод от большего к меньшему
Результат покажет, какая директория занимает больше всего места (например, /var, /usr или /home). Спускайтесь глубже, подставляя найденный путь вместо /*. Например, sudo du -sh /var/* 2>/dev/null | sort -rh.
Шаг 3: Интерактивный анализ через ncdu
Для визуального и быстрого перемещения по дереву каталогов лучше всего подходит ncdu (NCurses Disk Usage). Она работает прямо в терминале и позволяет удалять файлы без выхода из интерфейса.
- Установите пакет:
# Для Debian/Ubuntu sudo apt update && sudo apt install ncdu # Для RHEL/Fedora/AlmaLinux sudo dnf install ncdu - Запустите сканирование нужного раздела:
sudo ncdu /
В открывшемся интерфейсе используйте стрелки для навигации, Enter — для входа в папку, d — для удаления выбранного файла или директории. Программа автоматически пересчитает освободившееся место.
⚠️ Важно: Будьте осторожны при удалении файлов из
/var/lib,/usrили системных каталогов. Удаление критичных компонентов может нарушить работу ОС. Удаляйте только логи, кэш или временные данные, назначение которых вам понятно.
Проверка результата
После очистки повторно выполните df -h /. Убедитесь, что значение Use% упало ниже 80%. Для автоматического мониторинга настройте простой скрипт или используйте стандартные утилиты системы:
# Проверка через cron без установки стороннего ПО
df -h / | awk 'NR==2 {print "Занято:", $5}'
Если показатель стабилен и сервисы работают без ошибок ввода-вывода, задача выполнена.
Возможные проблемы при выполнении
Ошибка «Disk quota exceeded» или «No space left on device» при очистке
Место может быть занято удалёнными, но всё ещё открытыми процессами файлами. Перезапустите соответствующие службы (например, sudo systemctl restart rsyslog или sudo systemctl restart nginx) или используйте sudo lsof +L1 для поиска таких дескрипторов.
Слишком медленный вывод команды du
Сканирование больших разделов с миллионами мелких файлов занимает время. Ограничьте глубину проверки флагом --max-depth=1 или используйте ncdu — она оптимизирована для быстрой работы с большими деревьями каталогов.
Занято 100%, но du не находит файлы
Проверьте, не исчерпаны ли иноды (inodes). Файловая система может иметь свободные байты, но не иметь слотов для новых файлов. Команда df -i покажет использование инодов. Если оно на пределе, удалите множество мелких файлов (например, сессии PHP или кэш пакетов).