Вики / Хранилище и ФС
Место на диске (df, du, inode)
Куда делось место и inode — df, du, поиск крупных файлов, ловушки.
Две независимые причины «диск полон»:
- кончилось место (байты) — смотрит
df -h; - кончились inode (числовые «слоты» файлов) — смотрит
df -i. Бывает при миллионах мелких файлов; место есть, а создать файл нельзя.
Алгоритм: df -h и df -i → найти раздел → du/ncdu сверху вниз до виновника.
df -h # свободное место по разделам (человекочитаемо)
df -i # свободные inode по разделам
df -h /var # конкретный путь (в каком он разделе)
df -hT # + тип ФС
du -sh /var/* # размер каждого подкаталога /var
du -h --max-depth=1 / | sort -h # топ «тяжёлых» каталогов первого уровня
du -xh --max-depth=1 / # -x: не выходить за пределы ФС (без /proc, монтирований)
du -sh /var/log # сколько занимают логи
ncdu / # интерактивный обзор (удобнее всего; apt install ncdu)
ls -lhS | head # крупнейшие файлы в каталоге
find / -xdev -type f -size +500M -exec ls -lh {} + 2>/dev/null # файлы >500 МБ
-x/-xdev — ключ к чистому результату: считать только текущую ФС, не уходя в
смонтированные и виртуальные (/proc, /sys).
sudo journalctl --vacuum-time=7d # урезать системный журнал до 7 дней
sudo journalctl --disk-usage # сколько занимает журнал
sudo apt clean # кэш скачанных пакетов
sudo apt autoremove --purge # старые ядра и зависимости
docker system df ; docker system prune -af # образы/слои docker (часто гиганты)
du -sh ~/.cache/* # пользовательские кэши
df говорит «полно», а du не находит столько
Файл удалён, но открыт процессом — место не освобождается до закрытия:
sudo lsof +L1 # файлы с 0 ссылок, но открытые (см. lsof)
Перезапусти держащий процесс (часто это лог, «ротированный» неправильно).
No space left on device, хотя df -h показывает свободное
Кончились inode: df -i. Найди каталог с тьмой мелких файлов и чисти:
for d in /*; do printf '%8s %s\n' "$(find "$d" -xdev 2>/dev/null | wc -l)" "$d"; done | sort -rn
Диск забили логи
du -sh /var/log/*; настрой ротацию (logrotate) и журнал
(journalctl --vacuum-time=, см. journalctl).
Удалил файлы, а место не вернулось
Либо удалённый-но-открытый файл (см. выше lsof +L1), либо это другой раздел —
проверь df -h путь.
df -h ; df -i # место / inode
du -xh --max-depth=1 / | sort -h # топ каталогов (в пределах ФС)
ncdu / # интерактивный обзор
sudo lsof +L1 # удалённые-но-открытые файлы
sudo journalctl --vacuum-time=7d ; sudo apt clean # быстро освободить
См. также
- find (поиск файлов) — Базовые команды
- Монтирование и fstab — Хранилище и ФС
- LVM (логические тома) — Хранилище и ФС