Linux обрабатывает файлы, которые были удалены, но защищены от пробелов.

Linux
Linux обрабатывает файлы, которые были удалены, но защищены от пробелов.

предыстория проблемы

Система мониторинга сервера бизнес-системы отправила раннее предупреждение о том, что уровень использования дискового пространства достиг 90%, а затем зашла на сервер для поиска относительно больших файлов журнала, все из которых были удалены (яма была зарыта здесь ), диск Некоторое место было освобождено, но это также было небрежно в то время, и не было подтверждено, было ли освобождено пространство размера обнаруженных и удаленных файлов. Через несколько дней сервер снова был предупрежден, и мне было интересно, почему журнал так быстро растет.После расследования я обнаружил, что это было вызвано большим файловым пространством, которое не было освобождено после удаления файла последней операцией.

Восстановление и решение проблемы

Найдите файлы данных, которые занимают много места

#查看磁盘空间使用情况
$ df -h
#先查询/tmp目录下占用空间较大的文件
$ du -sh /tmp/*|sort -nr|head -3
#在查询/home目录下占用空间较大的文件
$ du -sh /home/*|sort -nr|head -3
# 找到文件后,进行删除即可,删除后,使用 df -h进行查看是否已经释放

Объясните, почему при поиске файлов сначала найдите файлы в каталоге /tmp/*

Linux System Удалить политику: Linux - это не функция корзины Recycle, поэтому сервис перейдет в файл, который вы хотите удалить, система сначала будет двигаться в каталог / TMP, а затем периодически очищает данные в каталоге / TMP.

Многие серверы не дают /tmp при установке системы, поэтому большая часть данных находится в каталоге /TMP, что позволяет удалить файлы из каталога /TMP, чтобы освободить место.

На этот раз удаление файлов не освобождает место, это произошло при удалении лог-файла службы dubbo в пространстве каталога /home.

Удаление файлов не освобождает место

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

Файл существует в системе Linux и разделен на две части:часть указателяичасть данных.

  • Указательная часть: существует в метаданных файловой системы, выполняемrmПосле того, как команда удалит данные, этот указатель очищается от метаданных.

  • Часть данных: данные хранятся непосредственно на диске.Когда указатель очищается от метаданных, пространство, занимаемое частью данных, может быть перезаписано и может быть записано новое содержимое.

Причина, по которой место не освобождается после удаления файла журнала dubbo, заключается в том, что процесс dubbo все еще записывает данные в этот файл.При удалении файла указатель не очищается от метаданных, поэтому файл журнала все равно занимают место.

Как найти такие файлы

в состоянии пройтиlsofКоманда для получения списка файлов, которые были удалены, но все еще заняты программой:

lsof | grep delete

Как освободить такое пространство

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

echo " " >/home/dubbo/log/xxx.log

Таким образом, занятое место на диске будет освобождено, и процесс не будет затронут.

Если у вас есть какие-либо вопросы, пожалуйста, обратите внимание на публичный аккаунт [Hugh's Whiteboard] Пишите мне в личку, обсуждайте и учитесь вместе