Назад | Перейти на главную страницу

Dovecot: «Не удалось записать в основной журнал (на устройстве не осталось места)»

Каждое утро моя служба голубятни отключается, и мне нужно запускать ее снова, и это повторяется изо дня в день, поэтому я искал ключ, чтобы выяснить, почему это происходит, и я обнаружил, что ошибки на / var / log / maillog файл:

"failed to write to main log: length=165 result=-1 errno=28 (No space left on device)"
"write failed on panic log: length=122 result=-1 errno=28 (No space left on device)"

И я вижу, что время, когда эта ошибка отображалась, было в то же время, когда служба отключилась, поэтому я вижу в этом причину проблемы.

Кстати, я действительно не знаю, что происходит, потому что когда я печатаю: df -h я могу видеть:

Filesystem    Size    Used    Avail    Use%    Mounted on
/dev/vda1     30G      27G     1.9G     94%    /
tmpfs         499M       0     499M      0%    /dev/shm

Итак, диск не заполнен, и почему появляется предупреждение «На устройстве не осталось места»? Я не знаю, что попробовать.

Примечание: эта ошибка начала происходить 2 недели назад, но мой сервер работает более 6 месяцев.

Это все потому что df и du по-другому рассчитывали используемое / свободное пространство. df подсчитывать пространство, используемое файлами в иерархии, пока du считает inodes FS.

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

Для правильного поведения вы должны перезапустить процесс после ротации его файла журнала. Другой подход - использовать syslog вместо входа непосредственно в файл.

Помните, что проблема не должна быть связана с dovecot а с каждым программным обеспечением с интенсивным ведением журнала, например apache.

Я бы посоветовал проверить бесплатные номера inode

df -i

Если он заполнен на 100%, удалите некоторые из них.