我有一台 Sun x4540,最近从早期的 OpenSolaris 转换为 NexentaStor Enterprise Edition。系统磁盘被清除,zpools 被导出并重新导入。我通过 NFS 和 10GbE 将大约 30 台虚拟机托管到 VMWare vSphere 上,并连接到多台主机。
从那时起,系统几乎每两周就会崩溃一次。崩溃会触发 ILOm 的 ASR,系统会在 5-10 分钟后自行重启。我在根目录中有这样的核心文件:
-rw------- 1 root root 2237608178 Mar 14 21:06 core
-rw------- 1 root root 81061304 Feb 8 01:23 core.mountd.1297149806
-rw------- 1 root root 69863784 Mar 6 16:34 core.mountd.1299450869
-rw------- 1 root root 36644272 Mar 6 16:39 core.mountd.1299451179
我该如何调试这些以mdb
了解发生了什么?我在以下网址看到了链接到 Nexenta 网站的简短教程:http://kristof.willen.be/node/1100,但似乎不能直接适用。
答案1
这里的关键是切换到目录并对崩溃转储文件/var/crash/myhost
运行命令。该过程会创建一个可供命令使用的文件,其中“x”是核心转储编号。savecore -f vmdump.x
unix.x
mdb -k unix.x vmcore.x
答案2
你知道内核本身是否崩溃了吗?启用内核转储可能也是值得的。
查看下面的 URL 以获取有关如何分析核心文件以及如何启用内核崩溃转储的说明。
http://developers.sun.com/solaris/articles/manage_core_dump.html
# mkdir -p /var/crash/`uname -n`
# dumpadm -y -s /var/crash/`uname -n`
# dumpadm
Dump content: kernel pages
Dump device: /dev/zvol/dsk/rpool/dump (dedicated)
Savecore directory: /var/crash/$hostname
Savecore enabled: yes
# mkdir -p /var/core/`uname -n`
# coreadm -g /var/core/`uname -n`/core.%n.%f.%p -G all -e log -e global
# coreadm
global core file pattern: /var/core/$hostname/core.%n.%f.%p
global core file content: all
init core file pattern: core
init core file content: default
global core dumps: enabled
per-process core dumps: enabled
global setid core dumps: disabled
per-process setid core dumps: disabled
global core dump logging: enabled