Практическое задание

Эта задача — шаг 18 курса «Диагностика и восстановление Linux-сервера»

Старый релиз держится за диск

сложно~7 мин

Старый релиз /opt/app/releases/v1.tar (16 MiB) удаляли уже дважды, а место всё не освобождается: файл восстанавливают из тайников — у него есть ещё имена. Удали его так, чтобы место на диске действительно вернулось. Архивная копия /srv/archive/v1.tar — отдельный файл, её трогать нельзя.

Что потренируешь:
  • жёсткие ссылки
  • inode
  • stat
  • find -samefile
  • освобождение места

Разбор темы

Имя файла в каталоге — лишь ссылка на inode, где хранятся данные и счётчик ссылок. rm убирает одно имя и уменьшает счётчик; блоки на диске освобождаются, только когда он доходит до нуля (и файл никто не держит открытым). Поэтому «удалённый» файл может продолжать занимать место, если у него остались другие жёсткие ссылки — в кеше, в скрытом каталоге, в старом каталоге деплоя. Их находят по номеру inode (find -inum) или относительно известного имени (find -samefile), ограничив поиск одной файловой системой (-xdev): номера inode уникальны только внутри неё. Копия с тем же содержимым — другой inode и к делу не относится.

Что проверяется

  1. /opt/app/releases/v1.tar удалён
  2. других имён не осталось — место освобождено
  3. архивная копия цела

Как это выглядит