No space left on device: на сервере кончилось место на диске
Диск сервера заполнен, и программы не могут записать ни байта: падают базы данных, сайт отдаёт ошибки, не ставятся пакеты. Найдите, что заняло место, и освободите его по шагам ниже.
Содержание 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/shmFilesystem— диск или его раздел. Имя у вас может быть другим:/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 autoremoveapt покажет список пакетов и спросит 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.
Если сайт на обычном хостинге
На хостинге место ограничено тарифом, а сколько занято, видно в панели управления. Удалите старые резервные копии и ненужные файлы через файловый менеджер панели или перейдите на тариф с большим диском.
Источники
- Исходный код glibc 2.39: errlist.h — тексты системных ошибок: No space left on device, Read-only file system, Cannot allocate memory.
- Исходный код coreutils 9.4: df.c — колонки в выводе df.
- Исходный код coreutils 9.4: du.c — параметры --inodes, -d и -x.
- Исходный код systemd 255: journalctl.c — текст journalctl --disk-usage.
- Справка journalctl(1) в Ubuntu 24.04 — параметры --disk-usage и --vacuum-size.
- Справка journald.conf(5) в Ubuntu 24.04 — журнал занимает до 10% диска, но не больше 4 ГБ.
- Справка apt-get(8) в Ubuntu 24.04 — команды clean и autoremove.
- Справка df(1) в Ubuntu 24.04 — параметры -h и -i.
- Справка du(1) в Ubuntu 24.04 — параметры -h, -d, -x и --inodes.
Сверено 10 октября 2026 года.
Что почитать дальше
Проверено и обновлено: 10.10.2026