Ошибки

No space left on device: на сервере кончилось место на диске

Диск сервера заполнен, и программы не могут записать ни байта: падают базы данных, сайт отдаёт ошибки, не ставятся пакеты. Найдите, что заняло место, и освободите его по шагам ниже.

Обновлено 10.10.2026≈ 6 мин чтения
Содержание 8

Как выглядит ошибка

Слова No space left on device — «на устройстве не осталось места» — пишет любая программа, которой не удалось записать файл. Например:

cp: error writing 'backup.tar': No space left on device

Сообщение могут показать apt при установке пакетов, база данных, nginx в своём журнале, Docker. Причина у всех одна — на диске нет места, и начинать надо с проверки диска.

Шаг 1. Проверьте, какой диск заполнен

Команды на этой странице вводятся на сервере: подключитесь к нему по SSH (как подключиться) и набирайте их в том же окне.

df -h

Пример ответа:

Filesystem      Size  Used Avail Use% Mounted on
tmpfs           197M  1.1M  196M   1% /run
/dev/vda1        20G   20G     0 100% /
tmpfs           982M     0  982M   0% /dev/shm
  • Filesystem — диск или его раздел. Имя у вас может быть другим: /dev/sda1, /dev/vda2.
  • Size, Used, Avail — размер, занято и свободно. Буквы G и M — гигабайты и мегабайты.
  • Use% — сколько занято в процентах.
  • Mounted on — к какой папке подключён диск. / — главный диск сервера.

Строки tmpfs — это место в оперативной памяти, а не на диске, их пропустите. Нужна строка, где Use% близко к 100%. В примере это главный диск /.

Если ни один диск не заполнен, а ошибка есть — кончилось не место, а записи для новых файлов. Это разобрано на странице No space left on device, а место есть.

Шаг 2. Найдите, что заняло место

Команда du считает, сколько места занимает каждая папка. Начните с корня диска:

sudo du -xh -d1 / 2>/dev/null | sort -h

Если система спросит пароль, введите пароль своего пользователя на сервере. Символы при вводе не видны — так и должно быть: наберите пароль и нажмите Enter. Подсчёт может занять минуту — дождитесь, пока снова появится строка для ввода команд.

  • -x — считать только этот диск, не заходя на другие.
  • -h — размеры в понятном виде: K, M, G.
  • -d1 — показать папки только первого уровня.
  • 2>/dev/null — спрятать сообщения о папках, которые прочитать нельзя.
  • sort -h — отсортировать по размеру: самые большие окажутся внизу.

Пример ответа (конец списка):

1.1G	/home
2.4G	/usr
15G	/var
19G	/

Последняя строка — весь диск. Над ней — самая большая папка, в примере /var. Загляните внутрь неё той же командой:

sudo du -xh -d1 /var 2>/dev/null | sort -h

Спускайтесь так в самую большую папку, пока не поймёте, что за файлы занимают место. Ниже — что можно удалить без вреда для сервера.

Шаг 3. Освободите место

Журнал systemd

Если большая папка — /var/log/journal, место занял системный журнал. Сколько именно, покажет команда:

journalctl --disk-usage

Ответ вида Archived and active journals take up 1.5G in the file system. — журнал занимает 1,5 ГБ. Оставьте последние 200 МБ, а более старые записи удалите:

sudo journalctl --vacuum-size=200M

Команда удаляет старые файлы журнала, пока они не уместятся в 200 МБ. Файлы, в которые журнал пишет прямо сейчас, она не трогает. По умолчанию журнал сам следит, чтобы не занять больше 10% диска и больше 4 ГБ, но на маленьком диске и это заметно.

Кеш пакетов apt

apt хранит скачанные пакеты в папке /var/cache/apt/archives. После установки они не нужны, и их можно удалить:

sudo apt clean

Следом удалите пакеты, которые ставились как зависимости и больше ничему не нужны — например, старые ядра:

sudo apt autoremove

apt покажет список пакетов и спросит Do you want to continue? [Y/n]. Просмотрите список и нажмите Y, затем Enter.

Docker

Если большая папка — /var/lib/docker, место заняли образы, контейнеры и логи Docker. Как их почистить, не потеряв данные, рассказано на странице Docker занял весь диск.

Большой лог одной программы

Если место занял один файл в /var/log — лог сайта или программы, — не удаляйте его, пока программа работает: она продолжит писать в удалённый файл, и место не освободится до её перезапуска. Лучше обнулите файл:

sudo truncate -s 0 /var/log/myapp/big.log

Вместо /var/log/myapp/big.log подставьте путь к своему файлу. Команда оставляет файл на месте, но делает его пустым.

Если файл уже удалён, а место не вернулось, перезапустите программу, которая писала в него, например sudo systemctl restart nginx.

Если удалять нечего

Если место заняли нужные файлы — сайт, база данных, резервные копии, — диск пора увеличить. Это делается в панели провайдера, в настройках сервера: смена тарифа или размера диска. Резервные копии лучше хранить не на том же сервере.

Как проверить

df -h /

В колонке Use% должно стать меньше 100%. Затем перезапустите службы, которые падали из-за нехватки места, например базу данных:

sudo systemctl restart mysql

Если служба называется иначе, подставьте её имя. Проверьте, что она работает: sudo systemctl status mysql. Чтобы вернуться к вводу команд после systemctl status, нажмите клавишу Q.

Если сайт на обычном хостинге

На хостинге место ограничено тарифом, а сколько занято, видно в панели управления. Удалите старые резервные копии и ненужные файлы через файловый менеджер панели или перейдите на тариф с большим диском.

Источники

Сверено 10 октября 2026 года.

Что почитать дальше

Проверено и обновлено: 10.10.2026