Debian Linux 服务器被锁定 - 日志中没有线索?

Debian Linux 服务器被锁定 - 日志中没有线索?

今天早上我的服务器死机了。下面是控制台的屏幕截图:

在此处输入图片描述

屏幕截图中的任何消息对我来说都没有任何意义。我感觉重要的东西可能从控制台上滚了出去。我无法在系统日志、消息、dmesg、调试日志或崩溃时记录的任何内容中找到上述屏幕截图中的任何消息。这些东西不应该被记录下来吗?

这是一个运行 Proxmox 的 Debian 盒子。uname 输出:

2.6.32-4-pve #1 SMP 2011 年 5 月 9 日星期一 12:59:57 CEST x86_64 GNU/Linux

该服务器已上线约一年,没有出现其他崩溃,并且可以正常重新启动。

我很想弄清楚问题可能出在哪里,以便我们能够防止将来再次发生这种情况。但是,从我目前掌握的证据来看,我甚至不知道这是硬件问题还是软件问题。有什么想法吗?

答案1

您运行的 Debian 内核版本到底是哪个?如果您执行“dpkg -l | grep linux-image”,则可以看到完整的版本和修订号。

看起来你打得相当不错普遍存在的错误我已经多次看到过这种情况:在 3.2 主线之前的内核中,在2.6.32.50 稳定版在 Debian 之前2.6.32-45(基于 2.6.32.50 稳定版),在正常运行约 208 天后,将发生时钟溢出,从而导致潜在的崩溃。我不知道在那之后到底是什么原因导致崩溃;补丁本身对此很模糊也:

Although we may still have enough bits to store the value of ns,
in some cases, we may not have enough bits to store cycles * cyc2ns_scale,
leading to an incorrect result.

在确定问题原因并部署补丁之前,我已经看到由于此问题导致的数百次崩溃。

该错误是详细讨论在 2011 年底的 lkml 中。可能存在与这个除以零的错误,但我还没有找到任何结论。

TL;DR:可能的解决方法是升级到 Debian 的 linux-image 版本 2.6.32-四十五或更高版本。

答案2

这是内核崩溃的屏幕截图。回溯信息是从内向外打印的,因此最终导致内核死亡的函数位于屏幕顶部,但从顶部开始是内核中定义的对divide_error()in 的调用,作为hpet_msi_next_event() divide_error()函数调用指针,因此某些内容hpet_msi_next_event()试图除以零。

不幸的是,造成这种情况的原因可能是硬件、软件,甚至只是暂时的位翻转错误。(您使用的是 ECC RAM 吗?)

相关内容