最近我 9 岁的 Apple G4 文件服务器随机崩溃。通常这是内核恐慌,但有时系统只是锁定。当我不在办公室时,这似乎总是会发生……但即使我在办公室,系统也位于单独的服务器机房中,几乎从来没有人在控制台上。怀疑内存不好,我跑了 memtest,但经过 20 次后发现没有问题。(我跑了 10 次,重新启动,又跑了 10 次。两次都是单用户模式)。Apple Hardware Test 也报告没有问题(在循环运行超过 100 个循环后)
我怀疑硬件只是变坏了……毕竟它已经有9 年历史了。但我们目前没有更换服务器的预算。在我们下一次升级之前,我最好的选择是什么?有什么方法可以解决崩溃的问题吗?或者至少,有什么方法可以让系统在内核恐慌或锁定后自动重新启动,以便它可以恢复服务?
panic.log 显示:
Mon Jun 29 12:52:23 2009
panic(cpu 1 caller 0x00040180): zalloc: "socket" (751876 elements) retry fail 3
Latest stack backtrace for cpu 1:
Backtrace:
0x000954F8 0x00095A10 0x00026898 0x00040180 0x0026B868 0x00290E10 0x00290F1C 0x00296B40
0x002ABDB8 0x000ABD30 0x00000000
Proceeding back via exception chain:
Exception state (sv=0x32288780)
PC=0x9001B08C; MSR=0x0000F030; DAR=0x12555000; DSISR=0x42000000; LR=0x8EF88A00; R1=0xBFFFF700; XCP=0x0000003
0 (0xC00 - System call)
Kernel version:
Darwin Kernel Version 8.11.0: Wed Oct 10 18:26:00 PDT 2007; root:xnu-792.24.17~1/RELEASE_PPC
*********
Fri Jul 3 10:15:24 2009
panic(cpu 1 caller 0x00040180): zalloc: "socket" (762004 elements) retry fail 3
Latest stack backtrace for cpu 1:
Backtrace:
0x000954F8 0x00095A10 0x00026898 0x00040180 0x0026B868 0x00290E10 0x00290F1C 0x00296B40
0x002ABDB8 0x000ABD30 0x00000000
Proceeding back via exception chain:
Exception state (sv=0x2C543000)
PC=0x9001B08C; MSR=0x0000F030; DAR=0x11A41000; DSISR=0x42000000; LR=0x8EF88A00; R1=0xBFFFF700; XCP=0x0000003
0 (0xC00 - System call)
Kernel version:
Darwin Kernel Version 8.11.0: Wed Oct 10 18:26:00 PDT 2007; root:xnu-792.24.17~1/RELEASE_PPC
*********
Tue Jul 21 20:44:47 2009
panic(cpu 1 caller 0x00040180): zalloc: "socket" (762004 elements) retry fail 3
Latest stack backtrace for cpu 1:
Backtrace:
0x000954F8 0x00095A10 0x00026898 0x00040180 0x0026B868 0x00290E10 0x00290F1C 0x00296B40
0x002ABDB8 0x000ABD30 0x00000000
Proceeding back via exception chain:
Exception state (sv=0x2C543000)
PC=0x9001B08C; MSR=0x0000F030; DAR=0x11A41000; DSISR=0x42000000; LR=0x8EF88A00; R1=0xBFFFF700; XCP=0x0000003
0 (0xC00 - System call)
Kernel version:
Darwin Kernel Version 8.11.0: Wed Oct 10 18:26:00 PDT 2007; root:xnu-792.24.17~1/RELEASE_PPC
*********
我假设如果它作为文件服务器运行它正在运行 Mac OS X Server,对吗?如果内核崩溃后它没有自动重启,那么你的硬件已经足够老了,可能不支持它,因为它是服务器上的默认设置。
显然,如果不是内核恐慌并且只是挂起,Server 不会尝试重新启动,但我发现了Sophisticated Circuits 的启动!成为该问题的绝佳解决方案。基本上,他们的软件每隔一段时间就会在电源通道中对硬件进行 ping 操作,如果盒子锁定并停止 ping 它,那么它会循环电源。快!自动重启,内核恐慌或没有!
我假设您已经查看了 CrashReporter 和其他系统日志,看看那里是否显示了任何有趣的东西。
但是当试图从旧机器上挤出一些额外的时间时,我做的第一件事就是检查冷却——把所有的灰尘从盒子里拿出来,然后检查以确保风扇运转良好。
...如果您正在运行客户端,并在重启电源时采纳 morgant 的建议,请在“节能器 - > 选项”中查看“电源故障后自动重启”。如果您正在运行 OS X Server,您还可以在此处找到“如果服务器“冻结”则自动重新启动”的设置。
你知道导致内核恐慌的原因是什么吗?计算机在哪个特定的内核扩展上失败了?
我在Super User上的一个无关问题上发布了一些关于如何阅读内核恐慌日志的信息,希望对您有所帮助:
在您的服务器上,您可以运行该
last
命令以查看它何时启动(以及正常重新启动)。系统日志中是否有任何有趣的事情发生在这段时间?此外,作为文件服务器,请务必检查硬盘驱动器。我们有一个连接到 RAID 的 G5 (?),当 RAID 不满意时,它无法正常工作。
还要看看内存,损坏或其他内存故障很可能会导致那种随机的事情。
如果您可以将 DIMM 交换到 x86 PC 中,请尝试使用 MemTest x86+ 来查看是否有任何明显的错误,尽管如果错误是随机的或足够模糊的,MemTest 可以显示干净。
http://www.memtest.org/