Большой журнал удалён, а df -h показывает прежнее свободное место. Где остались его блоки?
Частая причина — удалённый открытый файл. rm убирает имя из каталога, но пока какой-то процесс держит файл открытым, его блоки остаются занятыми. du имени уже не находит и такие блоки не считает — отсюда расхождение df и du.
Такие файлы показывает lsof: sudo lsof +L1 перечисляет открытые файлы без имени в каталоге и процессы, которые их держат. Место вернётся, когда процесс закроет файл.
Перезапуск всех служб подряд ради места создаёт новую проблему — недоступность. С форматирования, изменения размера тома или удаления журналов целиком лечение не начинают: сначала отдели нехватку блоков от нехватки inode, найди источник роста и уточни, что разрешено удалять.
После разбора запиши: путь и файловую систему, какой ресурс кончился, что удалено и почему это было безопасно, чем подтверждена новая запись. Тот же порядок пригодится в лабе «Кончилось место на диске» — там кончаются блоки, как во втором упражнении урока.
Ты удалил журнал службы на 2 GiB, но df -h показывает прежнее свободное место. Что сделаешь дальше?
-
Перезагрузка вернёт место, потому что закроет все процессы, но это простой всего сервера. Удалённый файл держит один процесс — его и надо найти:
sudo lsof +L1. -
dfпоказывает текущее состояние, ждать нечего: пока служба держит удалённый журнал открытым, его блоки заняты. Место освободится, когда процесс закроет файл. -
fsckна смонтированном томе может его повредить, а счётчики здесь верны: блоки заняты открытым файлом. Место вернётся, когда процесс закроет файл.
Пока процесс держит файл открытым, его блоки заняты, хотя имени в каталоге уже нет. sudo lsof +L1 покажет такие файлы и их процессы; дальше — штатный способ переоткрыть журнал, например перезапуск этой одной службы.
Главное в шаге
-
Удалённый файл занимает блоки, пока его держит открытым процесс;
duтаких блоков не видит. -
sudo lsof +L1показывает удалённые открытые файлы и процессы, которые их держат.