Файловые системы Linux Linux No space left on deviceENOSPC

Linux: ошибка «No space left on device» — как найти и освободить место

  • Обновлено
  • Чтение ≈ 3 минуты
  • Нужны права администратора

Краткий ответ

No space left on device (ENOSPC) значит, что на файловой системе нельзя создать или записать файл. Это не всегда «диск полон»: свободное место может быть, но закончились inodes (записи о файлах), либо место занято удалёнными файлами, которые держит открытыми процесс. Начните с df -h и df -i, затем найдите самые большие каталоги и очищайте только то, что точно безопасно.

В этой статье
  1. Что означает ошибка
  2. Причины и решения
  3. Пошаговая диагностика
  4. Шаги 1–3. Диагностика
  5. Шаг 4. Безопасная очистка
  6. Как проверить результат
  7. Если не помогло

#Что означает ошибка

No space left on device
write error: No space left on device
По-русскиОшибка записи: на устройстве не осталось места.

Файловая система тратит ресурсы двух видов: блоки (место для данных) и inodes (записи о файлах и каталогах). Закончиться может любой из них. Кроме того, место освобождается только когда файл закрыт всеми процессами, поэтому удалённый, но открытый файл продолжает занимать диск.

#Причины и решения

Возможная причинаКак узнатьЧто делать
Диск или раздел действительно заполненДанные, логи, кэши и резервные копии заняли всё место.df -h показывает 100% на нужном разделе.Найдите крупные каталоги и очистите ненужное (шаг 3–4).
Закончились inodesОчень много мелких файлов (почта, сессии, кэш), а место ещё есть.df -h показывает свободное место, а df -i — 100% использования inodes.Найдите каталог с огромным числом файлов и очистите его.
Удалённые файлы удерживаются процессамиЛог удалили, а процесс продолжает писать в него и держит место.df показывает заполнение, а du находит гораздо меньше; lsof +L1 выводит удалённые файлы.Перезапустите процесс, держащий файл, либо очистите файл обнулением.
Раздувшиеся журналы и контейнерыЖурнал systemd, логи приложений, образы и тома Docker занимают гигабайты.journalctl --disk-usage и docker system df показывают большие значения.Ограничьте размер журнала, очистите неиспользуемые образы осознанно.
Квоты или резерв файловой системыУ пользователя исчерпана квота либо раздел зарезервирован для root.Обычный пользователь получает ошибку, а root может писать; в df место есть.Проверьте квоты (quota) и параметры раздела.

#Пошаговая диагностика

  1. Проверьте место и inodesВ терминале выполните df -h и посмотрите столбцы «Использовано» и «Доступно» на разделе с программой или данными. Не удаляйте неизвестные системные каталоги; сначала выясните, какие файлы занимают место.
  2. Проверьте удалённые файлы, занятые процессамиЕсли df -h показывает мало занятого места, но система продолжает сообщать No space left on device, проверьте удалённые файлы, которые ещё открыты процессами: sudo lsof +L1. Посмотрите имя процесса и размер, не завершайте его вслепую на рабочем сервере. Запланируйте штатный перезапуск конкретной службы с сохранением данных, если именно её удалённый лог продолжает занимать место; затем снова запустите df -h.
  3. Найдите самые большие каталогиВ Linux сначала определите заполненный раздел через df -h, затем выполните sudo du -xhd1 /var или другой конкретный каталог этого раздела, чтобы увидеть крупные подкаталоги. Ключ -x не даёт уходить на другие файловые системы. Просматривайте результаты от крупных к мелким и удаляйте только известный кэш или устаревшие файлы после резервного копирования. Не удаляйте весь /var/log или /tmp без понимания работающих программ.
  4. Очистите безопасные кэши и журналыsudo journalctl --vacuum-size=200M, sudo apt clean (RHEL: sudo dnf clean all), docker system prune (осторожно: удаляет неиспользуемые образы).
  5. Проверьте результат и настройте ограниченияdf -h; ограничьте журналы: SystemMaxUse=200M в /etc/systemd/journald.conf, настройте logrotate.

#Шаги 1–3. Диагностика

Linux · Терминал (Bash)КомандаНужен sudo
Только чтение. df -h — место, df -i — inodes, lsof +L1 — удалённые, но открытые файлы, du ... | sort -h — самые большие каталоги первого уровня; повторите для найденного каталога, углубляясь вниз.
df -h
df -i
sudo lsof +L1 | head
sudo du -xh --max-depth=1 / 2>/dev/null | sort -h | tail -n 15

#Шаг 4. Безопасная очистка

Linux · Терминал (Bash)С осторожностьюНужен sudo
Очистка архивных системных журналов может удалить важную диагностическую информацию. Сначала оцените её ценность и сохраните нужные записи.
sudo apt clean
sudo journalctl --vacuum-size=200M

Команда может изменить состояние системы или её настройки. Проверьте параметры и последствия перед запуском.

Linux · Терминал (Bash)Команда
Показывает, сколько места занимают образы, контейнеры и тома Docker. Прежде чем выполнять docker system prune, внимательно прочитайте, что она удалит: остановленные контейнеры и неиспользуемые образы и сети.
docker system df

#Как проверить результат

  • df -h и df -i показывают запас места и свободные inodes.
  • Приложение снова записывает файлы без ошибок.
  • Настроена ротация логов и мониторинг заполнения.

#Если не помогло

Если место «пропало» после удаления большого файла, перезапустите службу, которая писала в него — место освободится. Если закончились inodes, ищите каталоги с миллионами файлов (find /путь -xdev -type f | wc -l по подкаталогам) и очищайте кэш, сессии или почту. На виртуальных серверах проверьте также, не заполнен ли раздел /boot старыми ядрами.

Так эту ошибку тоже называют

Источники и обновления

Последнее обновление статьи: 2 ноября 2026. Версии программ и интерфейсы меняются — если шаги не совпадают с вашей версией, сверяйтесь с документацией производителя.