Ubuntu Linux

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

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

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

Ошибка «No space left on device» в Ubuntu значит, что кончилось место на диске или в inode. Найдите крупные каталоги через du и ncdu, очистите кэш apt, старые ядра, журналы и версии snap.

В этой статье
  1. Что означает ошибка
  2. Причины и решения
  3. Пошаговое решение

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

Сообщение
No space left on device

Система не может записать файл: на разделе нет свободных блоков либо закончились inodes (индексные дескрипторы). Поэтому сначала выясните, что именно закончилось: df -h показывает место, а df -i — inode. Если место свободно, а inode 100% — в каталоге скопились миллионы мелких файлов (сессии PHP, почтовая очередь, кэш).

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

Возможная причинаКак узнатьЧто делать
Кэш aptСкачанные пакеты остаются в /var/cache/apt.du -sh /var/cache/apt показывает гигабайты.sudo apt clean.
Старые ядраКаждое обновление ядра оставляет предыдущие.В /boot и /usr/lib/modules много версий.sudo apt autoremove --purge.
ЖурналыЛоги journald и /var/log растут без ограничений./var/log занимает 5–20 ГБ.sudo journalctl --vacuum-size=200M.
Версии snapSnap хранит старые ревизии приложений.snap list --all показывает disabled-версии.Удалите disabled-ревизии скриптом ниже.

#Пошаговое решение

  1. Посмотрите, что заполненоОткройте терминал Ubuntu и выполните df -h для свободного места, df -i для inode и findmnt /var /tmp для специальных файловых систем. Найдите точную точку монтирования, где осталось мало свободного пространства или inode. Если заполнен только /boot, не удаляйте ядра вручную; воспользуйтесь штатным менеджером пакетов после проверки текущего ядра uname -r.
  2. Найдите крупные каталогиОткройте терминал Ubuntu и выполните df -h и df -i, найдите заполненный раздел. Для домашней папки выполните du -h --max-depth=1 "$HOME" 2>/dev/null | sort -h. Удаляйте только собственные подтверждённо ненужные файлы, прежде сделав копию ценных данных; не очищайте /var/lib или /usr вручную.
  3. Очистите aptЕсли заполнен /var/cache/apt, откройте терминал и выполните sudo apt-get clean: команда удаляет скачанные установочные архивы apt, которые при необходимости можно загрузить снова, но не удаляет установленные пакеты. Затем проверьте df -h / /var. Если место не освободилось, ищите крупные пользовательские файлы или журналы, а не удаляйте системные каталоги вручную.
  4. Очистите журналыВ Ubuntu проверьте размер журнала sudo journalctl --disk-usage. Если он действительно занимает значительное место, администратор может ограничить объём штатной командой sudo journalctl --vacuum-size=500M после оценки требований к хранению журналов; это удаляет архивные записи и может лишить истории диагностики. Сначала убедитесь, что резервное копирование и расследование сбоев не требуют этих данных. Затем снова проверьте df -h.
  5. Удалите старые snap-ревизииСначала выполните snap list --all и найдите только версии со статусом disabled, которые не используются текущим приложением. Не удаляйте действующую ревизию и не применяйте массовые команды, если не понимаете результат. При необходимости удаляйте старую отключённую ревизию точечно: sudo snap remove ИМЯ --revision=НОМЕР, подставляя фактические имя и номер из списка. После этого проверьте df -h / и доступность установленной программы.
  6. Проверьте DockerТолько если Docker действительно установлен и раздел /var/lib/docker занимает значительное место, запустите в терминале docker system df, чтобы увидеть размер образов, контейнеров и томов. Для запуска может потребоваться административный доступ. Не выполняйте docker system prune -a без проверки: команда удаляет все остановленные контейнеры, неиспользуемые образы и кэш сборок, из-за чего может исчезнуть нужная возможность отката или старые данные приложения. Если это рабочий сервер, согласуйте очистку с владельцем контейнеров и сохраните резервные копии томов.
  7. Проверьте удалённые, но открытые файлыКогда df -h показывает занятое место, а du не объясняет его, администратор может выполнить sudo lsof +L1 в терминале Ubuntu. В результате найдите строки с (deleted) и размером файла: это файлы, уже удалённые из каталога, но пока открытые процессами. Запишите PID и название службы, проверьте её назначение через ps -p PID -o pid,cmd с настоящим числом PID. Освобождение места требует штатного перезапуска именно этой службы в согласованное время, а не остановки случайного процесса.
  8. Удаляет загруженные файлы пакетов из кэша APT, но не пользовательские документы
    Linux · Терминал (Bash)С осторожностьюНужен sudo
    Удаляет загруженные файлы пакетов из кэша APT, но не пользовательские документы. Просмотр df -h/df -i выполняйте до этой команды; не смешивайте диагностические и изменяющие действия.
    sudo apt clean
    sudo journalctl --disk-usage
    df -h
    df -i

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

Если место закончилось внезапно, проверьте /var/lib/docker, /var/lib/mysql, /var/spool и /tmp. Если inodes исчерпаны, найдите каталог с большим числом файлов: sudo find / -xdev -type d -size +1M 2>/dev/null либо for i in /*; do echo $i; sudo find $i -xdev | wc -l; done.

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

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

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