Ubuntu 12.04 崩溃分析 - 崩溃时所有打开的文件上都有奇怪的二进制数据

Ubuntu 12.04 崩溃分析 - 崩溃时所有打开的文件上都有奇怪的二进制数据

几个小时前,Ubuntu 12.04 系统崩溃了。我们检查了所有日志文件,没有发现任何可疑原因。

最后记录的是一些 dovecot 活动。没有内核崩溃消息。什么都没有。

这是一台新服务器(新硬件),我们正在生产前进行测试。由于它是新硬盘,我怀疑问题可能是由某些硬件故障引起的。

我们已经运行了 memtester,没有发现任何问题。我很高兴收到其他硬件测试工具的反馈(机器有 SSD)。

无论如何,我想问你的是另一件事。奇怪的是,在崩溃时,我们发现每个打开的文件都写入了下一个符号序列:“@^@^@^@^@^@^@...”。

例如,在 syslog 日志文件中我们得到:

Apr 16 15:53:56 odyssey dovecot: pop3-login: Aborted login (auth failed, 1 attempts): user=<info>, method=PLAIN, rip=46.29.255.73, lip=5.9.58.177
^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^ [these continues for about 1000 chars...] ^@^@^@^@Apr 16 15:55:12 odyssey kernel: imklog 5.8.6, log source = /proc/kmsg started.

我们在所有打开的文件中都找到了这些符号。这些包括:syslog、mail.log、kern.log……但也包括用户帐户(非 root)在 CRON 中运行的 php 脚本输出的一些日志。

那么,您知道为什么崩溃期间所有打开的文件都写入了这些字符吗?这非常糟糕,因为崩溃损坏了许多文件(我们甚至不知道还有哪些文件可能受到影响)。我们怀疑崩溃时所有打开的文件(可能处于写入模式)都插入了所有这些符号。这是为什么呢?

顺便说一句 [希望有帮助],系统在崩溃后自动重启,但 Apache 没有启动。/var/apache2/*log 中没有记录 Apache 为什么没有启动。运行“service apache2 start”后,它启动正常。此外,我们手动重启了机器,Apache 也在重启时启动。但它在崩溃后没有启动,也没有报告任何错误。

多谢你们!

答案1

这些^@几乎肯定是二进制零。也就是说,xxd corruptfile | tail -3可能会发出类似以下内容的内容:

#######0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
#######0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
#######0: 0000 0000 0000 0000 0000 0000 0000 0000  ................

写入操作已发送给内核,但内容从未刷新到磁盘。因此,文件已扩展,以备写入,因此文件无意中变得稀疏。

如果你没有使用日志文件系统,那么这种情况尤其可能发生,因为日志应该如果写入操作没有正确完成(因为崩溃导致写入操作没有正确完成),则会导致写入操作回滚。

相关内容