У меня была файловая система более 60%. Я обнаружил, что файл / var / log / messages содержит более 4 миллионов строк, поэтому я решил удалить 2 миллиона строк, чтобы освободить место. Я выполнил команду
sed -i '1,2000000d' / var / log / сообщения
строки были удалены, и размер журнала уменьшился примерно на 300 МБ, но использование файловой системы увеличилось с 60% до 90%.
Затем я перезапустил службу rsyslog, но ничего не произошло, использование все еще 90%.
Обратите внимание, что если я выполняю команду du -sh *, а затем суммирую использование каждого файла, общее использование не соответствует значению «Используется» файловой системы. Похоже, что должен быть скрытый файл, занимающий остальное пространство, но я не знаю, как его найти или удалить.
Наконец-то я нашел решение этой проблемы.
Проблема заключалась в том, что удаленный файл все еще был открыт системой
[root]# lsof | grep messages
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
abrt-dump 2015 root 4r REG 252,6 417938659 195 /var/log/messages (deleted)
[root]#
поэтому проблема была решена, когда я закрыл этот файл, выполнив команду gdb.
[root]# gdb -p 2015
(gdb ) p close (4)
После выполнения команд загрузка файловой системы составляет 25%
Спасибо
Я думаю, не рекомендуется удалять файл во время использования, потому что это может вызвать такое поведение. Я видел случаи, когда некоторые пользователи удаляли / уменьшали большие файлы, пока приложение все еще входило в него, и файловая система не думает замечать изменения в размере, пока они не перезапустят приложение.
Во многих дистрибутивах вы можете использовать logrotate, чтобы повернуть этот файл и избежать того, чтобы журналы заполняли раздел. В RHEL6 вы можете настроить это, отредактировав /etc/logrotate.conf
файл и добавив такой блок:
/var/log/messages {
rotate 4
size 50M
postrotate
/usr/bin/killall -HUP syslogd
endscript
}
Пояснение:
/usr/bin/killall
: команда, которая будет выполнена после вращения.Пожалуйста, смотрите дополнительную информацию на страницах руководства: man logrotate
.
Примечание: Скорее всего, вы освободите место, перезагрузив узел.
Надеюсь, это поможет.