Skip to content

This article is available in Russian. An English version is on the way.Open the Russian page

Куда делось место на диске

Найти, что занимает диск: df, du, ncdu, большие файлы, удалённые-но-открытые файлы и иноды.

Level
Beginner
Reading time
2 min read
Updated
Tested on
Ubuntu 22.04, Ubuntu 24.04, Debian 12
Contents
  1. Какой раздел заполнен
  2. Какой каталог большой
  3. Удобнее — ncdu
  4. Самые большие файлы
  5. Что можно почистить безопасно
  6. Удалили файл, а место не освободилось
  7. Место есть, а файлы не создаются
  8. Проверьте результат

Когда диск заполнен, перестают писаться логи и базы данных, падают обновления, а иногда нельзя даже войти по SSH. Разбираться лучше по шагам: сначала какой раздел заполнен, потом какой каталог, потом какие файлы.

Какой раздел заполнен

bash
$ df -h

Смотрите столбец Use% у раздела, смонтированного в /. Всё, что выше 90 %, требует внимания.

Какой каталог большой

Посчитайте размер каталогов первого уровня, оставаясь в пределах одной файловой системы (-x):

bash
$ du -xh --max-depth=1 / 2>/dev/null | sort -h

Спускайтесь в самый большой каталог и повторяйте команду. Обычные подозреваемые: /var/log, /var/lib/docker, /var/cache/apt, /home и каталоги с бэкапами.

Удобнее — ncdu

ncdu — интерактивный du: стрелками переходите по каталогам, клавиша d удаляет выбранное (с подтверждением).

bash
$ apt install -y ncdu$ ncdu -x /

Самые большие файлы

bash
$ find / -xdev -type f -size +500M -exec ls -lh {} + 2>/dev/null

Что можно почистить безопасно

bash
$ apt clean$ apt autoremove --purge$ journalctl --vacuum-size=200M

Для Docker: docker system df покажет, сколько занимают образы, контейнеры и тома; про уборку — отдельная статья.

Удалили файл, а место не освободилось

Если процесс держит файл открытым, после rm место освободится только когда процесс закроет файл. Найти такие файлы:

bash
$ lsof -nP +L1 2>/dev/null | head -20

Перезапустите процесс из столбца COMMAND (например, systemctl restart nginx) — место вернётся. Чтобы очистить большой лог без перезапуска, обнуляйте его, а не удаляйте: truncate -s 0 /путь/к/файлу.log. Если команды lsof нет, установите пакет lsof.

Место есть, а файлы не создаются

Ошибка «No space left on device» при свободных гигабайтах означает, что кончились иноды — записи о файлах. Обычно виноват каталог с миллионами мелких файлов: сессии PHP, кэш, очередь почты.

bash
$ df -i$ du -x --inodes --max-depth=1 / 2>/dev/null | sort -n | tail

Проверьте результат

Снова выполните df -h и убедитесь, что процент занятого снизился. Чтобы ситуация не повторилась, настройте ротацию логов и ограничение размера журнала systemd.

Read to the end and the article counts toward your learning progress.

  • диск
  • место
  • df
  • du
  • ncdu
  • inode

Was this article helpful?