Введение / Зачем это нужно
Заполнение диска — одна из самых частых причин сбоев в работе Linux-серверов и рабочих станций. Когда место заканчивается, перестают работать службы, базы данных, невозможно установить обновления. Этот гайд поможет вам быстро диагностировать, какие именно файлы и директории consume (занимают) больше всего места, и принять обоснованные решения по их очистке. Вы получите навык, который пригодится любому системному администратору или разработчику, работающему с Linux.
Требования / Подготовка
- Доступ к терминалу (Ctrl+Alt+T или SSH-подключение).
- Права суперпользователя (sudo) для анализа системных директорий (
/var,/usr) и очистки кэша пакетов. Для анализа домашней директории (/home/username) права sudo не требуются. - Базовое знакомство с командной строкой: умение переходить по каталогам (
cd), просматривать содержимое (ls). - Рекомендуется установить утилиту
ncduдля наиболее удобного анализа (инструкция ниже).
Пошаговая инструкция
Шаг 1: Быстрый обзор общего использования (df)
Первым делом узнайте, на каких файловых системах не хватает места.
df -h
-h— «human-readable», выводит размеры в ГБ, МБ.- Что смотреть: колонка
Use%(процент использования) иSize/Avail(размер и свободное место). Обратите внимание на строки с100%или близко к этому значению. Чаще всего проблема в/,/varили/home.
Шаг 2: Поиск крупнейших каталогов в проблемной ФС (du)
Узнайте, какие каталоги в проблемной файловой системе самые большие. Начните с корня (/) или с конкретного раздела (например, /var).
# Анализ корня (может потребовать sudo)
sudo du -h --max-depth=1 / 2>/dev/null | sort -hr
# Более быстрый анализ только /var (частая проблема)
sudo du -h --max-depth=1 /var 2>/dev/null | sort -hr
--max-depth=1— показывает только размер подкаталогов первого уровня (не углубляясь).2>/dev/null— подавляет ошибки «Permission denied» (для доступа к которым нет прав).sort -hr— сортировка по human-размеру в обратном порядке (сначала самые большие).- Результат: Вы увидите список вроде
4.5G /var/log. Теперь вы знаете, что логи занимают 4.5 ГБ.
Шаг 3: Углублённый интерактивный анализ (ncdu)
Для наглядного, интерактивного исследования настоятельно рекомендуется установить ncdu.
# Установка (выберите свою ОС)
sudo apt update && sudo apt install ncdu # Debian/Ubuntu
sudo dnf install ncdu # RHEL/Fedora/CentOS 8+
sudo yum install ncdu # CentOS 7/RHEL 7
sudo pacman -S ncdu # Arch
# Запуск анализа
ncdu /путь/к/проблемной/директории # например, ncdu /var
Как работать в ncdu:
- Стрелки
↑/↓— навигация по каталогам. Enter— войти в подкаталог.d— удалить выбранный файл/каталог (будет запрос подтверждения!).q— выйти.- Внизу экрана всегда видите общий размер текущей директории. Это самый эффективный способ «прогуляться» по диску и найти «слона».
Шаг 4: Поиск конкретных больших файлов (find)
Если вы знаете, что ищете (например, старые логи, дампы, кэш), используйте find.
# Найти все файлы в /var/log больше 500 МБ
sudo find /var/log -type f -size +500M -exec ls -lh {} \;
# Найти все файлы с расширением .log старше 30 дней в домашней директории
find ~ -name "*.log" -type f -mtime +30 -exec ls -lh {} \;
# Найти 10 самых больших файлов ВО ВСЕЙ системе (медленно, но точно)
sudo find / -type f -exec du -h {} + 2>/dev/null | sort -hr | head -20
-size +500M— файлы больше 500 мегабайт. Можно использоватьGдля гигабайт,kдля килобайт.-mtime +30— файлы, менявшиеся более 30 дней назад.-exec ls -lh {} \;— для каждого найденного файла вывести его размер в читаемом виде.
Шаг 5: Очистка кэша пакетного менеджера (быстрый выигрыш)
Пакетные менеджеры хранят скачанные .deb/.rpm-пакеты, которые после установки можно удалить.
# Ubuntu/Debian (APT)
sudo apt clean # Удаляет ВСЕ файлы кэша из /var/cache/apt/archives
sudo apt autoclean # Удаляет только устаревшие файлы кэша (безопаснее)
# RHEL/CentOS/Fedora (DNF/YUM)
sudo dnf clean all
sudo yum clean all
Это может сразу освободить от 200 МБ до нескольких гигабайт.
Проверка результата
- Снова выполните
df -hдля интересующего вас раздела. ПолеUse%должно уменьшиться, аAvail— увеличиться. - Если использовали
ncdu, вы можете повторно запустить его на той же директории и увидеть, как изменилась картина. - Убедитесь, что службы, которые ранее падали из-за нехватки места, снова работают (например,
sudo systemctl status postgresql).
Возможные проблемы
ncduне устанавливается / команда не найдена.- Решение: Убедитесь, что у вас есть интернет и актуальные репозитории (
sudo apt update). Используйте альтернативу — комбинациюduиsortиз Шага 2.
- Решение: Убедитесь, что у вас есть интернет и актуальные репозитории (
duилиfindвыдают кучу ошибок «Permission denied».- Решение: Это нормально. Запускайте команды с
sudoдля системных директорий (/var,/usr,/opt). Для домашней директории (/home/your_user)sudoне нужен.
- Решение: Это нормально. Запускайте команды с
- Удалил файл через
ncdu, но место не освободилось.- Решение: Файл мог быть открыт каким-то процессом. Найдите процесс:
sudo lsof | grep /полный/путь/к/файлу. Остановите процесс или перезапустите службу, которая его использует. После этого место освободится.
- Решение: Файл мог быть открыт каким-то процессом. Найдите процесс:
dfпоказывает 100%, аduв/находит только 50% использования.- Решение: Классическая проблема! Место занято «невидимыми» файлами: удалёнными, но ещё открытыми процессами (например, старые логи, которые ротировались). Найдите их:
sudo lsof | grep deleted. Остановите соответствующий процесс (часто этоsystemd-journaldили ваше приложение), и место освободится.
- Решение: Классическая проблема! Место занято «невидимыми» файлами: удалёнными, но ещё открытыми процессами (например, старые логи, которые ротировались). Найдите их: