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