Sobes.tech
Back to questions
Senior
5

Удалил большой файл, но место на диске не освободилось. Почему? Как найти и исправить?

Companies where asked
Flant

Answer from AI

sobes.tech AI

Если вы удалили большой файл, но место на диске не освободилось, вероятные причины:

  1. Файл всё ещё открыт процессом. В Unix-подобных системах удаление файла удаляет имя из файловой системы, но если процесс держит дескриптор на файл, место не освобождается, пока процесс не закроет файл.

  2. Удаление произошло не в том месте или на другом разделе.

  3. Файловая система или кэш не обновились сразу.


Как найти проблему:

  • Используйте команду lsof (list open files) для поиска процессов, которые держат удалённые файлы:
lsof | grep '(deleted)'

Это покажет файлы, которые были удалены, но ещё открыты процессами.

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

Пример исправления:

# Найти PID процесса, который держит удалённый файл
lsof | grep '(deleted)'

# Перезапустить процесс (например, по PID 1234)
kill -HUP 1234
# или
kill 1234

После этого место на диске освободится.

Если lsof не установлен, можно использовать fuser:

fuser -v /path/to/deleted/file

В Go-приложениях иногда файлы логов или временные файлы могут оставаться открытыми, поэтому важно корректно закрывать файлы.