Статьи Nazara
Что делать, если на VPS заканчивается место
Как найти причину заполнения диска VPS: проверить df, inode и каталоги, разобраться с журналами и Docker, сохранить данные и выбрать безопасное действие.
Если на VPS заканчивается место, сначала проверьте свободные блоки и inode, найдите файловую систему с проблемой, затем определите растущий каталог и владельца данных. Освобождайте только то, что распознано и допускает удаление по правилам конкретного сервиса. Такой порядок помогает восстановить запись, не потеряв базу, загрузки пользователей или единственную резервную копию.
Материал рассчитан на Linux VPS с сайтом, ботом или приложением. Вы получите последовательность диагностики и сможете выбрать между настройкой хранения, удалением подтверждённых временных файлов и увеличением диска. Команды чтения можно выполнять для обследования; изменения требуют понимания назначения данных. Полный диск и неисправный диск — разные ситуации, и эта инструкция не заменяет диагностику аппаратных ошибок.
Как понять, что закончился именно дисковый ресурс
Сообщение No space left on device, сбой записи файла или остановка резервного копирования могут означать исчерпание места. Но сначала найдите, куда пишет проблемная программа. Корневая файловая система, отдельный том данных и временный tmpfs могут иметь разные пределы. Свободное место в одном разделе не помогает записи в другом.
df -h
df -i
df -h /var/www
df -h /var/lib
df -h показывает объём файловых систем, а df -i — использование inode, объектов метаданных файлов. Свободные гигабайты не исключают исчерпание inode при множестве мелких файлов. Возможности команды описаны в официальном руководстве GNU df. Сохраняйте имя устройства, точку монтирования, доступный объём и время измерения.
Не подменяйте измерение выводом панели «диск 40 ГБ»: это выделенный размер, а не текущий запас конкретной файловой системы. Проверьте также текст ошибки приложения. Отказ в доступе, read-only filesystem и превышение пользовательской квоты требуют других действий. Если раздел стал только для чтения или журнал сообщает об ошибках ввода-вывода, не начинайте массовую очистку; сначала сохраните доступные данные и выясните состояние хранения.
Для первого сравнения запишите показатель сейчас и после безопасного интервала наблюдения. Если запас быстро падает, новые сборки, выгрузки и бэкапы могут усугубить ситуацию. Приостановите только известную необязательную задачу, которая создаёт объём, согласовав её с владельцем. Базу или общий веб-сервер нельзя останавливать наугад ради нескольких минут измерений.
Как найти каталог, который занимает место
Переходите от файловой системы к крупным каталогам, затем к конкретному проекту. Не запускайте подробное сканирование всего сервера одновременно с тяжёлой нагрузкой: обход миллионов файлов тоже потребляет ресурсы. Начните с верхнего уровня проблемного раздела.
sudo du -xhd1 /var
sudo du -xhd1 /var/log
sudo du -xhd1 /var/lib
Параметр -x ограничивает обход одной файловой системой, -d1 — одним уровнем вложенности. Поэтому результаты надо соотнести с точками монтирования из df: отдельный том внутри /var не будет полностью учтён обходом родительского раздела с -x. Отличие занятого места файлов от размера файловой системы объяснено в руководстве GNU du.
Крупный каталог ещё не является мусором. /var/lib может хранить базы и данные контейнеров; /var/log — записи для расследования ошибок; папка проекта — пользовательские загрузки и старые выпуски. Определите сервис, владельца и способ хранения. Сопоставьте рост со временем обновления, импортом файлов или повторяющейся ошибкой в журнале.

При нехватке inode ищите каталоги с большим числом мелких объектов: сессиями, кэшем, очередью или временными частями загрузок. Это другой поиск, чем поиск самых больших файлов. Правило хранения должно учитывать возраст и завершённость обработки, иначе удаление «всего старого» может повредить ещё выполняющуюся задачу.
Почему df и du показывают разные значения
df описывает использование файловой системы, а du суммирует доступные ему файлы и каталоги. Их значения не обязаны совпадать. Причинами расхождения могут быть права чтения, отдельные точки монтирования, особенности файловой системы и удалённые файлы, которые процесс всё ещё держит открытыми.
Последний случай особенно заметен с журналами: имя файла удалено, но приложение продолжает писать через открытый дескриптор. Место освобождается после закрытия последней ссылки процесса на файл. Найти такие объекты помогает чтение sudo lsof +L1, если lsof установлен. Назначение вывода и фильтра по числу ссылок описано в руководстве lsof.
Не превращайте найденный PID в команду немедленного завершения. Сначала определите службу, роль файла и допустимый способ переоткрытия журнала. Для некоторых приложений предусмотрена ротация с сигналом, другим нужен управляемый перезапуск. Прерывание процесса базы данных ради освобождения файла способно создать гораздо более серьёзную проблему.
Проверяйте размер тем же способом после действия. Если df почти не изменился, это не повод удалять следующий случайный каталог. Уточните, в том ли разделе находился файл, закрыт ли он процессом и не создаётся ли новый объём быстрее, чем освобождается старый. Расхождение измерений — полезный диагностический признак.
Что можно очищать после проверки назначения
Начинайте с воспроизводимых объектов, которые не содержат единственные рабочие данные: подтверждённых старых сборок, кэша загрузки пакетов или устаревших временных результатов. Для каждого кандидата определите полный путь, назначение, владельца, время создания и критерий удаления. Сохраните нужные журналы происшествия до очистки.
Для APT команда sudo apt-get clean очищает кэш скачанных пакетов, а не удаляет установленные программы. Но она не решит проблему базы, занимающей основной объём. В данном разделе нет универсальной команды удаления всех каталогов: безопасный список зависит от реального проекта. Если после освобождения небольшой части диска система снова быстро заполняется, исправляйте источник роста.
Для systemd-журнала сначала посмотрите объём через journalctl --disk-usage. Сокращение архива выполняют штатными параметрами vacuum после выбора срока хранения и сохранения нужных событий. Vacuum работает с архивными файлами; активные журналы тоже входят в disk-usage. Это ограничение указано в документации journalctl. Ручное удаление файлов журнала не заменяет настройку его лимита.
Старые резервные копии оценивайте по политике хранения, а не только по возрасту. Нужны проверенная актуальная копия, понятный срок восстановления и отдельное место хранения. Инструкция как настроить резервное копирование VPS помогает организовать это заранее. Перенос файла внутри той же файловой системы не освобождает её ёмкость.
Как отдельно проверить Docker и базу данных
Для Docker начните с docker system df -v: команда показывает использование образов, контейнеров и томов. Вывод описан в официальной документации Docker. Метка reclaimable не означает, что данные не нужны владельцу: остановленный контейнер или не подключённый сейчас том может содержать важный результат.
Перед очисткой составьте карту: какой сервис использует каждый том, где живёт база, какие образы нужны для отката. Не применяйте массовую очистку с удалением volumes, пока не проверены назначения и копии. Параметры и область действия описаны в справке docker system prune. Такой инструмент требует самостоятельного решения, а не копирования команды из чужого чек-листа.
У базы данных собственные правила обслуживания. Её рабочие файлы, журналы транзакций и архивы нельзя удалять как обычный кэш. Выясните конкретную СУБД, роль файлов и настроенный механизм сохранения. Если рост связан с незавершённой архивацией или очередью репликации, удаление файлов вручную может лишить систему восстановления и согласованности.
Для первого решения полезен простой документ: сервис, каталог или том, текущий объём, рост, резервная копия, согласованный способ освобождения и ожидаемый результат. Так администратор знает, где нужна штатная ротация, где завершение зависшей задачи, а где увеличение хранилища. Один общий процент использования сервера этих различий не показывает.

Когда очистки недостаточно и нужен больший диск
Если основная часть объёма — нужные данные, регулярная очистка не заменит достаточную ёмкость. Оцените нормальный рост, максимальную загрузку пользователя, объём нового выпуска и временный запас для резервного копирования или обновления. Нельзя считать весь свободный остаток полезной ёмкостью приложения, если обслуживание тоже требует места.
Увеличение диска у провайдера и увеличение доступной файловой системы не всегда одно действие. После изменения тарифа проверьте фактический размер устройства, раздела и файловой системы. Инструкцию расширения берите для своей схемы хранения; LVM, отдельный том и обычный раздел требуют разных операций. Перед такими изменениями подготовьте проверенную копию и резервную консоль.
Сравнивайте два сценария: убрать ненужное накопление либо расширить место для нужного роста. Например, бесконечно повторяющийся журнал ошибки лучше ограничить и устранить причину; нужный архив загрузок требует политики хранения и соответствующего объёма. Вопросы о тарифе и ресурсах разобраны в статье как выбрать VPS для сайта, бота или приложения.
После расширения повторите df и рабочую запись приложения. Наличие большего устройства в панели не подтверждает, что сервис получил больше доступного места. Контроль нужен на том разделе, куда он действительно пишет. Сохраните измерения до и после и обновите пороги оповещения.
Как проверить результат и предупредить повторение
Цель обслуживания — достаточный запас и исправная запись приложения. Проверьте загрузку файла, сохранение записи базы, работу фоновой очереди и следующую резервную копию. Наблюдение за ростом и оповещения можно организовать по статье как настроить мониторинг VPS. Выбирайте пороги по скорости роста и времени реакции, а не по одной универсальной цифре.
Отметки ниже сохраняются в Вашем браузере. Они помогают пройти диагностику, но не измеряют сервер автоматически.
Если требуется разобрать хранение проекта, Умная форма позволяет описать симптомы и задачу. Для первого обсуждения достаточно назначения сервиса, результатов df без приватных данных и времени появления ошибки. Содержимое базы, пароли и токены передавать не нужно.
Частые вопросы о месте на VPS
Почему место заканчивается после каждой сборки
Проверьте каталоги выпусков, зависимости и build cache. Сначала определите, какие версии нужны для отката, затем установите политику хранения подтверждённо ненужных выпусков.
Освобождает ли перезагрузка диск
Она может закрыть открытые удалённые файлы, но не удаляет обычные данные и не исправляет источник роста. Используйте её только как согласованное обслуживание с проверкой автозапуска.
Можно ли удалить папку базы, если есть бэкап
Рабочую папку базы нельзя считать кандидатом на обычную очистку. Сначала проверьте восстановимость копии и штатный порядок обслуживания конкретной СУБД.
Почему после удаления гигабайт df почти не меняется
Проверьте открытые удалённые файлы, точку монтирования и продолжающийся рост. Также сравнивайте занятые блоки, а не только логический размер файлов.
Что делать, если нет места даже для архива
Не создавайте дополнительный архив на переполненном разделе. Выберите передачу нужных данных на отдельное хранилище либо другой согласованный способ копирования с проверкой результата.
Нужен ли постоянный запас свободного места
Да. Размер запаса определяют рост данных и операции обслуживания. Новый выпуск, временная обработка и восстановление могут потребовать места сверх текущего объёма проекта.