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/*
🚀 Советы профессионалов, как избежать этого кошмара
- Ротация журналов → настройте
logrotateдля предотвращения резкого увеличения количества журналов. - Мониторинг → добавьте проверки дисков и инодов в такие инструменты, как Zabbix, Prometheus или Nagios .
- Уборка → регулярно очищайте кэш
/tmpи старые файлы журналов. - Использовать файловую систему с большим размером инодов → при форматировании дисков можно увеличить плотность инодов:
mkfs.ext4 -N <number_of_inodes> /dev/sdX
На этом все! Спасибо за внимание! Если статья была интересна, подпишитесь на телеграм-канал usr_bin, где будет еще больше полезной информации.