December 28, 2025

Linux сообщает: «На устройстве не осталось места»… Но у меня ещё есть 10 ГБ свободного места?! 🧐

Это перевод оригинальной статьи Linux Says ‘No Space Left on Device’… But I Still Have 10GB Free?!

Подписывайтесь на телеграм-канал usr_bin, где я публикую много полезного по Linux, в том числе ссылки на статьи в этом блоге.

Почему ваш сервер Linux лжет о свободном пространстве (объяснение различий между дисками и инодами)

При работе на Linux-серверах одна из самых сложных задач для новичков (а иногда и для профессионалов) — это:

👉 «Почему мой сервер отказывается сохранять файлы, хотя df -h показывает свободное место?»

Добро пожаловать в мир переполнения диска и переполнения инодов. Оба варианта могут привести к сбою приложений и поломке сервисов. Давайте разберём эту загадку простыми словами.

Что на самом деле означает «Диск заполнен»?

Когда ваш диск заполнен, физическое пространство хранилища исчерпано.

  • Если у вас диск объемом 500 ГБ и вы заполнили его видео, логами или резервными копиями → у вас закончилось место.
  • Даже если иноды доступны, вы больше не сможете записывать данные.

Проверьте использование диска:

df -h
  • вывод:
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1       100G   95G   5G   95% /

Если Use% 100% → Диск заполнен!

📂 Что означает «Иноды заполнены»?

А вот и сложная часть:

Инод похож на карточку в библиотеке. Он хранит метаданные о файле (разрешения, владелец, размер, временные метки). Каждому файлу или каталогу требуется один инод .

  • Если в вашей системе закончатся иноды, вы не сможете создавать новые файлы , даже если на диске останется достаточно места.
  • Распространенные виновники: приложения, создающие миллионы небольших файлов (файлы журналов, кэш, почтовые ящики).

Проверьте использование инода:

df -i

выход:

Filesystem      Inodes   IUsed   IFree IUse% Mounted on
/dev/sda1       6.4M     6.4M       0  100% /

Если IUse% 100% → Иноды заполнены!

📖 Аналогия с реальным миром

Подумайте о своем диске как о библиотеке:

  • Место на диске = количество полок (сколько книг поместится).
  • Иноды = учетные карточки в каталоге (сколько книг можно отслеживать).
  • Если полки заполнены → вы не можете хранить больше книг (диск заполнен).
  • Если карточки учета закончились → вы не сможете добавлять новые книги в систему (иноды заполнены), даже если полки пусты.

🔍 Как устранить неполадки?

1. Если диск заполнен:

Найдите, какая папка занимает больше всего места:

du -sh /* 2>/dev/null | sort -h
  • Показывает размеры папок в формате /.
  • Просматривайте большие папки, пока не найдете причину (обычно это /var/log или /tmp).

Удалите ненужные большие файлы:

rm -f /path/to/hugefile.log

2. Если иноды заполнены:

Найдите каталоги со слишком большим количеством маленьких файлов:

for d in /*; do echo $d; find $d | wc -l; done

Или более подробно:

sudo du --inodes -d 1 / | sort -n

Удалите ненужные мелкие файлы (логи, кэши, временные файлы).
Пример:

rm -rf /var/log/appname/*

🚀 Советы профессионалов, как избежать этого кошмара

  1. Ротация журналов → настройте logrotate для предотвращения резкого увеличения количества журналов.
  2. Мониторинг → добавьте проверки дисков и инодов в такие инструменты, как Zabbix, Prometheus или Nagios .
  3. Уборка → регулярно очищайте кэш /tmp и старые файлы журналов.
  4. Использовать файловую систему с большим размером инодов → при форматировании дисков можно увеличить плотность инодов:
mkfs.ext4 -N <number_of_inodes> /dev/sdX

На этом все! Спасибо за внимание! Если статья была интересна, подпишитесь на телеграм-канал usr_bin, где будет еще больше полезной информации.