Странная проблема с файловой системой в Linux Mint - Удален большой файл, нет свободного места на диске

1

Я считаю, что нашел проблему с Linux Mint. (Версия 17? - Как я могу это проверить?)

У меня есть программа, которая работает в течение нескольких дней и создала выходной файл размером в несколько сотен гигабайт.

У меня было мало места (осталось около 10 ГБ), поэтому я остановил программу CTRL-Z в момент, когда выходной файл был все еще открыт, но я мог убедиться, что в момент остановки программы не было никаких операций чтения / записи.

Затем я удалил файл. (Не удалось открыть его для очистки содержимого, оно было слишком большим!)

Затем я воссоздал файл. (Возможно, это не удивительно, что это вызвало у меня проблемы, я вряд ли мог ожидать, что это будет работать правильно.)

НО у меня 2 проблемы. Во-первых, кажется, что программа больше не пишет ни в один из выходных файлов? (Есть 3 отдельных, только один был удален.)

Во-вторых, нет никакого дополнительного свободного пространства? Я не могу понять, почему это? Там должно быть дополнительные 100 ГБ ... но нет?

Почему это так и могу ли я это "исправить"? (Я не хочу, чтобы моя система вечно сосала с дырой в 100 ГБ.)

user3728501
источник

Ответы:

0

Это ожидаемое поведение. Файл на самом деле не удаляется до тех пор, пока все пользователи файла не закроют свое «соединение» с файлом (то есть освободят дескриптор файла).

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

ChrisInEdmonton
источник
Есть ли способ решить проблему, не ломая программу?
user3728501
Вы имеете в виду, "не закрывая программу"? Если так, возможно. Хорошо разработанная программа может реагировать на сигнал HUP таким образом, что она закрывает файлы журнала и перезагружает конфигурацию. Это будет зависеть от программы. Если программа не поддерживает HUP таким образом или не предлагает другой способ сделать то же самое, ответ - нет.
ChrisInEdmonton
К сожалению, нет, это не ага - о черт, это все мои данные потеряны тогда :(
user3728501
0

С помощью команды "lsof" (LiSt Open Files) вы можете проверить, будет ли удаленный файл по-прежнему использоваться определенным процессом (через дескриптор файла / обработчик, который вы можете увидеть в / proc / $ PID_of_process / fd /). Если это так, сборщик мусора не освободит пространство, указанное этим индексом, даже если вы удалили его последнюю жесткую ссылку с помощью «rm» (или любой другой подобной команды).

matteo
источник