Что делать, если на Linux закончилось место на диске

Что делать, если на Linux закончилось место на диске

Kevin Wu
27 августа 2026 г.· Обновлено 4 октября 2026 г.· 9 мин чтения

Если на Linux закончилось место на диске, сначала определите файловую систему и точку монтирования, отклонившую запись, затем сравните ёмкость в байтах с использованием inode. Ищите крупные каталоги через du -x -d 1 в пределах той же файловой системы (-d задаёт глубину и в GNU du на Linux, и в BSD-версии du на macOS), проверьте журнал, пакетный кэш и удалённые файлы, которые ещё открыты процессами. Сначала освободите небольшой объём восстанавливаемых данных и подтвердите результат на том же разделе.

Ключевые выводы

  • Заполненный корень, отдельный home, исчерпанные inode и отсутствующее монтирование требуют разных исправлений.
  • df показывает использование файловой системы, а du суммирует доступные записи каталогов; значения могут различаться обоснованно.[1][2]
  • Ограничьте сканирование одной файловой системой, чтобы не считать другие диски.
  • Не удаляйте неизвестные данные из /usr, /var/lib или каталога приложения только из-за размера.

Общий порядок описан в руководстве по устранению проблем. Если не работает и менеджер пакетов, сохраните его ошибку и после освобождения места используйте руководство APT.

Какая файловая система заполнена, если на Linux закончилось место на диске?

Сохраните путь, на котором произошёл сбой, и текст ошибки. Запросите df именно об этом пути:

df -h /path/that/failed
df -i /path/that/failed
findmnt -T /path/that/failed

df -h показывает занятую и доступную ёмкость в байтах для файловой системы, содержащей путь; df -i показывает использование inode. Руководство df определяет эти отчёты уровня файловой системы и параметр удобочитаемого вывода. findmnt -T помогает определить монтирование, на котором находится путь.

Файловая система может иметь свободные байты, но не иметь свободных inode, если в ней очень много мелких файлов. И наоборот, большая файловая система в другом месте не поможет заполненному корню или отдельно смонтированному /var. Если ожидаемый том данных не смонтирован, приложение может записывать в нижележащий каталог на корневой файловой системе; безопасно восстановите монтирование, прежде чем решать, что там должно находиться.

Резервное место и политику квот уточняйте у владельца системы, а не считайте, что видимый процент — это вся картина. На производственных или зашифрованных системах сохраните доступ для восстановления до изменений хранилища.

Как безопасно найти крупные каталоги в Linux?

Начните с затронутой точки монтирования и оставайтесь в этой файловой системе. Для корня:

sudo du -x -h --max-depth=1 / 2>/dev/null

Параметр -x пропускает каталоги на других файловых системах, а --max-depth=1 ограничивает первый проход. Отсортируйте или изучите итоги, затем повторите команду для одного знакомого крупного каталога, например /var или конкретного домашнего каталога. Не начинайте с неограниченного обхода всех смонтированных дисков, сетевых ресурсов, контейнерных монтирований и резервных томов.

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

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

Почему df и du не совпадают?

Частые причины:

  • процесс всё ещё держит файл открытым после удаления его записи из каталога;
  • метаданные файловой системы, снимки (snapshots), резервные блоки или копирование при записи (copy-on-write);
  • каталог измерялся без права чтения части вложенных элементов;
  • данные скрыты под другой смонтированной файловой системой;
  • du и df измерялись в разное время, пока продолжалась запись.

Если в системе установлен lsof, проверьте удалённые, но открытые файлы:

sudo lsof +L1

Если крупный файл удерживается открытым, организуйте контролируемый перезапуск службы-владельца или перечитывание её конфигурации (reload) по документации. Не обрезайте неизвестный дескриптор и не останавливайте критическую службу без плана обслуживания. Место обычно возвращается, когда последний процесс закрывает файл.

Как проверить журнал systemd и кэш?

Сначала проверьте, сколько места занимает журнал systemd:

journalctl --disk-usage

Руководство journalctl описывает --disk-usage и параметры очистки (vacuum), которые удаляют самые старые архивные файлы журнала, пока не будет достигнута граница размера или времени. Активные файлы журнала при vacuum не удаляются, а наибольший эффект может дать осознанное сочетание очистки с ротацией.[3]

Если подтверждено, что архивные журналы — основная категория, которую можно освободить, задайте ограниченную цель, подходящую для системы, например:

sudo journalctl --vacuum-size=500M

Предел выбирают по требованиям хранения, расследования инцидентов и соответствия; 500M — пример, а не универсальная политика. Сохраните недавние журналы, нужные, чтобы понять рост занятого места.

Кэш APT сначала измерьте, затем очищайте:

du -sh /var/cache/apt/archives
sudo apt-get clean

apt-get clean удаляет загруженные файлы пакетов из локального архивного кэша APT, но не установленные пакеты. Используйте его, только если этот кэш находится на затронутой файловой системе, а базе пакетов хватает рабочего места. У других приложений свои поддерживаемые команды очистки; не придумывайте общее правило удаления для их каталогов данных.

Как создать аварийный запас, не потеряв доказательства?

Если почти заполненная файловая система мешает обычным инструментам, сначала нужен небольшой измеримый запас, а не максимально крупное удаление. Когда это безопасно для эксплуатации, замедлите или остановите известный источник записи. Затем выберите одну восстанавливаемую категорию с подтверждённым владельцем и расположением на затронутом разделе, например дубликат экспорта или загруженный архив. До изменения запишите путь, размер, владельца и причину удаления.

Перед первой очисткой ответьте на четыре вопроса:

  • Находится ли объект в файловой системе, которую показывает df -h /path/that/failed?
  • Можно ли его воспроизвести, есть ли резервная копия или утверждённое правило хранения?
  • Продолжает ли приложение писать в объект или ожидает ли его на прежнем месте?
  • Сколько байтов или inode должно освободиться и как вы проверите результат?

Освободите одну ограниченную категорию и сразу повторите df -h и df -i для того же пути. Если ожидаемый объём не появился, остановитесь и проверьте удалённые открытые файлы, отсутствующее подключение, права, снимки или продолжающуюся запись, а не удаляйте вторую несвязанную категорию. Так сохраняются доказательства исходного роста, а аварийная очистка не превращается в непроверенную политику хранения.

На общем или производственном узле запишите владельца службы и решение об обслуживании до перезапуска процесса или vacuum журналов. Аварийного запаса должно хватить для управляемой работы и диагностики; постоянное хранение, квоты, исправление подключения или расширение ёмкости — отдельная задача со своим откатом и мониторингом.

Что освобождать первым?

Используйте такой порядок:

Шаг 1: Замедлите подтверждённый источник записи

Если это безопасно, остановите поток, создающий новые данные.

Шаг 2: Освободите восстанавливаемые данные пользователя

Переместите или удалите известные восстанавливаемые загрузки, экспорты и временные копии.

Шаг 3: Используйте инструмент владельца пакетного кэша

Очистите подтверждённый пакетный кэш его собственным инструментом.

Шаг 4: Ограничьте очистку архивных журналов

Удалите старые архивные журналы только по явной границе размера или времени.

Шаг 5: Безопасно закройте удалённые открытые файлы

Освободите их контролируемым перезапуском службы.

Шаг 6: Примените специальную политику хранения

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

Не удаляйте вручную содержимое /usr или /var/lib, не очищайте каталог широким шаблоном и не обрезайте неизвестный журнал. Такие действия могут повредить пакеты, базы, контейнеры и аудиторские данные, освободив меньше места, чем ожидалось.

Как проверить восстановление?

Повторите измерения для того же пути:

df -h /path/that/failed
df -i /path/that/failed

Подтвердите и свободные байты, и inode, затем повторите одну характерную запись или исходную проверку состояния службы. Запишите, сколько места освобождено и какая категория выросла. Разовая очистка не завершена, если неконтролируемый журнал, неудачное резервное копирование, неограниченный кэш или отсутствующее монтирование сразу снова заполняет файловую систему.

После стабилизации настройте поддерживаемое приложением хранение, мониторинг и пороги предупреждений. Оставьте запас для обновлений пакетов, журналов, транзакций базы данных и отката, а не только для сегодняшнего устойчивого объёма данных.

Итоги

Найдите проблемную файловую систему, сравните ёмкость и inode, сузьте владельца проходами du в её пределах. Объясните разницу с помощью проверки журналов, кэша, точек монтирования и удалённых открытых файлов. Освобождайте только известные восстанавливаемые данные через их владельца и проверяйте тот же раздел.

Часто задаваемые вопросы (FAQ)

Почему места нет, хотя df -h показывает свободное?

Могли закончиться inode, действовать квота или путь находиться в другой точке монтирования. Проверьте для него df -i и findmnt -T.

Почему du меньше df?

Так бывает из-за удалённых открытых файлов, метаданных, резервов, снимков, скрытых монтированием данных или недоступных каталогов.

Можно ли удалить журналы вручную?

Не по общему правилу. Определите владельца и политику; для systemd journal используйте ограниченный vacuum архивных файлов.

Что делает du -x?

Пропускает каталоги на других файловых системах. Так измерение остаётся в пределах заполненного раздела и не включает посторонние диски или сетевые ресурсы.

Что означает параметр глубины du -d в Linux и macOS?

-d N ограничивает вывод каталогами не глубже N уровней от указанного пути. В GNU du на Linux это короткая форма --max-depth=N[2], поэтому du -x -h -d 1 / даёт тот же ограниченный первый проход, что и команда выше. BSD-версия du в macOS тоже принимает -d, -x и -h, но не длинные параметры GNU вроде --max-depth; проверьте установленную версию командой man du на Mac.

Удаляет ли apt-get clean программы?

Нет. Он удаляет загруженный кэш APT; в будущем архивы придётся скачать снова.

Как освободить удалённый открытый файл?

Последний процесс должен закрыть его, обычно при контролируемом перезапуске службы или перечитывании её конфигурации. Повторное удаление пути ничего не даёт.

Можно ли сразу удалить самый большой каталог?

Нет. Сначала установите владельца, назначение, резервную копию и поддерживаемую политику хранения.


Отказ от ответственности: Разметка дисков, файловые системы, квоты, снимки и процедуры служб различаются. Для важных систем сохраняйте резервные копии и доступ восстановления.

Источники:

  1. Ubuntu Manpage Repository — df(1) — https://manpages.ubuntu.com/manpages/noble/man1/df.1.html
  2. Ubuntu Manpage Repository — du(1) — https://manpages.ubuntu.com/manpages/noble/man1/du.1.html
  3. Ubuntu Manpage Repository — journalctl(1) — https://manpages.ubuntu.com/manpages/noble/man1/journalctl.1.html

Sources checked 4 октября 2026 г.


Рекомендуемые статьи:

Начните бесплатный 3-дневный пробный период

Зарегистрируйтесь и попробуйте все премиум-функции бесплатно.

*Только для новых пользователей. Один пробный период на пользователя.

Что делать, если на Linux закончилось место на диске | AethoVPN