Dovecot:“无法写入主日志(设备上没有剩余空间)”

Dovecot:“无法写入主日志(设备上没有剩余空间)”

每天早上,我的 Dovecot 服务都会宕机,我需要重新启动它,这种情况每天都在重复,所以我在寻找一些线索来找出它宕机的原因,我发现/var/log/邮件日志文件:

"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

那么磁盘没有满,为什么会出现“设备上没有剩余空间”的警告?我不知道该尝试什么。

笔记:这个错误从两周前开始发生,但我的服务器已经运行了 6 个多月。

答案1

这是因为df,我们du以不同的方式计算了已用/可用空间。df计算层次结构中文件使用的空间,同时du计算 FS 的 inode。

如果您已旋转日志文件,并且该文件已被某个进程打开,则该进程将继续写入旧文件而不是新文件,因为文件描述符与 inode 相关联,而不是文件名。因此,您已写入似乎在几天前“旋转”的文件,但其 inode 仍在使用中,并且文件会不断增长,直到空闲 inode 耗尽。

为了获得正确的行为,您必须在日志文件轮换后重新启动进程。另一种方法是使用syslog而不是直接登录文件。

请记住,问题不应该与之相关,dovecot而应该与每个具有密集日志记录功能的软件相关apache

答案2

我建议你检查一下空闲的 inode 数量

DF-我

如果已满,则删除其中一些

相关内容