У меня есть файловые серверы, которые используются для хранения файлов. Файлы могут находиться там в течение недели или года. К сожалению, когда я удаляю файлы с сервера, df
команда не отражает освободившееся пространство. В итоге сервер заполняется ( df
показывает 99%), и мой сценарий больше не отправляет туда файлы, за исключением того, что там может быть несколько десятков ГБ свободного места.
Я получил noatime
флаг на смонтированных разделах, если это что-то меняет.
linux
filesystems
disk-space-utilization
Амина Нураини
источник
источник
Ответы:
Удаление имени файла фактически не удаляет файл. Какой-то другой процесс удерживает файл открытым, не позволяя удалить его; перезапустите или убейте этот процесс, чтобы освободить файл.
использование
чтобы выяснить, какой процесс использует удаленный (несвязанный) файл.
источник
как упоминает Игнасио, удаление файла не освободит место до тех пор, пока вы не удалите процессы, которые имеют открытые дескрипторы для этого файла.
Тем не менее, вы можете восстановить пространство, не убивая процессы. Все, что вам нужно сделать, это удалить дескрипторы файлов.
Сначала выполните lsof | grep удален, чтобы идентифицировать процесс, содержащий файл
Затем выполните:
тогда
«1» будет дескриптором файла. Теперь введите "> FD", чтобы освободить это пространство
Возможно, вам придется повторить операцию, если есть другие процессы, содержащие файл.
источник
> FD
?>
команды есть имя? Мне пришлось переключиться с Zsh на Bash, чтобы иметь возможность использовать его. Можно ли запустить его на Zsh?Одна возможность состоит в том, что удаленные файлы имеют больше ссылок в файловой системе. Если вы создали жесткие ссылки, несколько имен файлов будут указывать на одни и те же данные, и данные (фактическое содержимое) не будут помечены как свободные / пригодные для использования, пока все ссылки на них не будут удалены. Прежде чем удалять файлы, либо укажите их (запись с именем Links), либо выполните для них команду ls -l (это должен быть второй столбец).
Если выясняется, что на файлы есть ссылки в другом месте, я думаю, вам придется ls -i файл (ы), чтобы найти номер inode, а затем выполнить поиск с помощью -inum <inode-number>, чтобы найти другие ссылки на этот файл (возможно, вы также захотите использовать -mount, чтобы остаться в той же файловой системе).
источник
Файл все еще заблокирован процессом, открывающим его. Чтобы освободить место, выполните следующие действия:
Запустите
sudo lsof | grep deleted
и посмотрите, какой процесс содержит файл. Пример результата:Убить процесс с помощью
sudo kill -9 {PID}
. В приведенном выше примере PID составляет 1623.Запустите,
df
чтобы проверить, освободилось ли место. Если он все еще заполнен, возможно, вам нужно подождать несколько секунд и проверить еще раз.источник
Если раздел настроен на резервирование определенной части дискового пространства только для использования root,
df
не будет включать это пространство как доступное.Даже после освобождения места путем удаления файлов / каталогов, пользователь без полномочий root не сможет писать в определенный раздел.
Вы можете легко проверить, так ли это, попытавшись создать файл на устройстве как пользователь root и не пользователь root.
Кроме того, вы можете проверить конфигурацию файловой системы, запустив
и рассчитать фактический% самостоятельно.
Чтобы изменить% диска, зарезервированный для использования только в корне, выполните
источник
Другие ответы верны: если вы удаляете файл, а пространство не освобождается, это обычно либо потому, что файл все еще остается открытым, либо на него есть другие жесткие ссылки.
Чтобы помочь в устранении неполадок, используйте инструмент, который сообщит вам, где место на диске расходуется: вы можете использовать,
du
чтобы получить представление о том, где место на диске . Еще лучше использовать графический инструмент, такой как xdiskusage (их много), чтобы выследить преступника. xdiskusage и друзья позволяют вам углубиться в самых больших космических свиней, чтобы найти, куда идет космос.Таким образом, вы быстро найдете файлы, которые все еще занимают место из-за второй жесткой ссылки. Он также покажет пространство, занимаемое удаленными, но открытыми файлами (я считаю, что (разрешение запрещено), поскольку он не может прочитать имя файла).
источник
Так как я знаю, что многие из вас делают это для redhat
/var
и gzip-файлов, ожидая сокращения FS, но вместо этого она увеличивается, просто убедитесь, что вы перезапускаете syslog службы. а такжепокажу вам это в любом случае.
источник
Еще один вариант: диск может быть заполнен из-за процесса, который постоянно создает данные: журналы, ядра и тому подобное. Возможно, что пространство на самом деле освобождается, но сразу же заполняется. Я действительно видел такой случай.
df
в этом случае просто не дает картину дыры. Используйте,du
чтобы узнать больше.источник
Я использую EXT2, FSCK помог мне в этой ситуации. Попробуйте shudown -F сейчас, после некоторых перезапусков и fscks, я вижу половину используемого пространства.
источник
Чтобы проверить, какие удаленные файлы заняли память, введите команду
Он покажет удаленные файлы, которые содержат память.
Затем убейте процесс с помощью pid или name
проверьте сейчас у вас будет такая же память
Если нет, введите команду ниже, чтобы увидеть, какой файл занимает память
укажите любой размер, который покажет, какие файлы занимают размер выше порогового, и удалите файл, в котором останется память
источник
открыть терминал, попробуйте эту команду df -Th, затем используйте эту команду sudo du -h --max-deep = 1 / в этой команде вы найдете подробности использования диска, затем откроете, как пользователь root удалит файл (root-local-share-trash) и удали свой файл
источник