Linux Labs

Хранилище / Ступень 1 из 11

Место закончилось — какое именно?

Не запущена Запускается обычно ~20 с
Выйти из урока

Шаг 5 из 8 · теория · 5 мин

Если удаление не вернуло место

Большой журнал удалён, а df -h показывает прежнее свободное место. Где остались его блоки?

Частая причина — удалённый открытый файл. rm убирает имя из каталога, но пока какой-то процесс держит файл открытым, его блоки остаются занятыми. du имени уже не находит и такие блоки не считает — отсюда расхождение df и du.

Такие файлы показывает lsof: sudo lsof +L1 перечисляет открытые файлы без имени в каталоге и процессы, которые их держат. Место вернётся, когда процесс закроет файл.

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

После разбора запиши: путь и файловую систему, какой ресурс кончился, что удалено и почему это было безопасно, чем подтверждена новая запись. Тот же порядок пригодится в лабе «Кончилось место на диске» — там кончаются блоки, как во втором упражнении урока.

Проверь себя 1 вопрос

Ты удалил журнал службы на 2 GiB, но df -h показывает прежнее свободное место. Что сделаешь дальше?

  • Перезагрузка вернёт место, потому что закроет все процессы, но это простой всего сервера. Удалённый файл держит один процесс — его и надо найти: sudo lsof +L1.

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

  • fsck на смонтированном томе может его повредить, а счётчики здесь верны: блоки заняты открытым файлом. Место вернётся, когда процесс закроет файл.

Пока процесс держит файл открытым, его блоки заняты, хотя имени в каталоге уже нет. sudo lsof +L1 покажет такие файлы и их процессы; дальше — штатный способ переоткрыть журнал, например перезапуск этой одной службы.

Главное в шаге

  • Удалённый файл занимает блоки, пока его держит открытым процесс; du таких блоков не видит.
  • sudo lsof +L1 показывает удалённые открытые файлы и процессы, которые их держат.
Ubuntu 24.04
Загрузка…