Перейти к основному содержанию

Linux — после удаление файла не освободилось место

Linux

Случается так, что место на Linux сервере заканчивается. Админу нужно срочно удалить что-нибудь большое и ненужное. Админ находит кандидата на удаление, удаляет его, и... место не освобождается. Как быть?

Вот так и у меня неожиданно на выходных на сервере закончилось место. Быстро проверяю процент использования дисков:

df -h

lsof

Два диска забиты на 100%. Печаль, почищу сначала первый диск. Нахожу большой ненужный файл под названием cloud_api_ru.log, терабайт так на восемь, удаляю его, а диск как был забит на 100%, так и остался.

Получается, что файл только пометился на удаление и в настоящий момент открыт какой-то программой. Сервер перезагрузить нельзя, а место нужно освобождать прямо сейчас.

Узнаю номер процесса, который держит файл открытым:

lsof | grep имя_файла

lsof

Итак, файл держит rsyslog с идентификатором процесса 1752. Засада. rsyslog я не могу кильнуть в данный момент. Но я могу найти символьную ссылку на файловый дескриптор и стереть содержимое файла:

ls -l /proc/идентификатор_процесса/fd | grep имя_файла
ls -l /proc/1752/fd | grep cloud

Получаю:

l-wx------ 1 root root 64 окт.  16 11:22 12 -> /путь_к_файлу

Где 12 — это дескриптор.

Ссылка на удалённый файл:

/proc/идентификатор_процесса/fd/дескриптор

Стираю содержимое файла:

cat /dev/null > /proc/идентификатор_процесса/fd/дескриптор
cat /dev/null > /proc/1752/fd/12

Проверяю место:

df -h

lsof

Место освободилось. Файл всё ещё открыт процессом rsyslog, в него продолжают записываться свежие данные, но основное содержимое уже стёрто.

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

cat /dev/null > /путь_к_файлу

Теги

 

Похожие материалы

Резервное копирование Atlassian JIRA через GUI

Резервную копию Atlassian JIRA можно сделать в Администрирование > Система > Импорт и Экспорт > Резервное копирование. Здесь вы сможете сделать резервное копирование содержимого базы данных в доступном формате XML.

Теги

Bitvise SSH Server для Windows

Bitvise SSH Server (WinSSHD) — SSH-сервер, разработанный специально для Windows. Позволяет на Windows машине организовать сервер Secure Shell Handling 2 (SSH2) и Secure FTP (SFTP). Отличается большим количеством настроек. Бесплатно для частного использования при выборе версии Personal Edition, но с ограничениями.

Haproxy на Ubuntu 20.04 LTS

Установим и настроим балансировщик haproxy на Ubuntu 20.04 LTS. Балансировать будем в режиме roundrobin порт TCP 25 на порты localhost TCP 26, 27, 28, 29, 30. На этих портах работает postfix в режиме multi-instance, сделаем единый 25 порт, который будет балансировать нагрузку между экземплярами почтового сервера.

Теги