有时系统在运行的过程中挂起,有时会自动重起,我们需要对相关的情况进行分析。Crash Dump主要是与软件相关,HPMC通常是硬件相关。将它们放在一起写主要是因为它们的表现有相似之处。Crash Dump是在系统出现故障时,将内存中的内容保存到硬盘上以进行进一步分析的过程。详细地描述如何做分析并不在本文的范围中,后面主要讲一下Crash Dump的种类及如何收集以及初步处理。 Crash Dump可以被分为以下三类:
1. Panic:Panic是由操作系统自已调用相关进程进行的过程
2. TOC:Transfer of Control,有几种情况会发生TOC:
a. 触动主机上TOC按键或在CM(GSP)状态下发出TC命令,有时主机挂起,我们就会主动用这种方式生成一个dump文件进行分析。
b. MC/SG不能与后台进程通讯(cmcld)
c. 在多CPU系统,某一CPU在Panic状态下会令其他CPU TOC。
3. HPMC:有时HPMC(High Priority Machine Check)也会引起Crash Dump.
配置Dump Device
在以前的OS版本中,对Dump Device有一些限制,比如说一定要在VG00中,大小不能大于2GB等。在11.X中这样的限制都不存在了。因为10.X系统已经不被支持了,所以后面讲的部分内容可能只适用于11.X系统。 通常刚安装完OS后,SWAP(一般是/dev/vg00/lvol2)设备也做为Dump设备。这样的好处是不需要额外的空间来专门做dump,缺点是在系统发生故障重起时,要等到所有的dump的内容拷贝到存放crash dump的文件系统下之后系统才会继续启动过程,造成恢复业务的时间变长。
配置的步骤
首先要产生相关的LV。对做Dump的LV来说,有一些特殊要求。首先,要完全连续;其次,Bad Block Relocation属性要关闭。要生成这样的LV,可以用类似于这样的命令:
#lvcreate –C y –r N –n lvswap –L 10240m /dev/vg02
#crashconf
#lvlnboot –v
对于做了mirror的根盘,Dump区不会被镜像。
Crash Dump的配置文件是/etc/rc.config.d/savecrash,执行脚本是/sbin/init.d/savecrash.
编辑/etc/rc.config.d/savecrash文件
SAVECRASH = 1 -> save a crashdump (default)
0 ->do not save a crashdump SAVECRASH_DIR directory for the crashfiles. Default is /var/adm/crash
COMPRESS = 0 -> never compress
1 ->always compress
2 ->compress in case of insufficient space (default)
有时工程师会到现场收集crash dump文件交由响应中心进行分析,通常是在/var/adm/crash文件系统下。如果在这里没有发现crash dump文件,就要去检查相关配置文件看是否系统未保存dump文件或设置为保存到其他文件系统。
手工保存crash dump
如果crash dump因为存储空间不足未被完全保存下来,还有机会手工再保存,这一次可能需要加上-r参数(resave)
# savecrash -v [-r]
# savecrash -v [-r] -t /dev/rmt/0m #save to DDS tape
如果DUMP区与SWAP区设为同一个设备,那么可能有一部分Dump内容已经被覆盖掉了,这也是只用SWAP区来做DUMP的缺点之一。
分析Crash Dump
通常crash dump是由响应中心进行分析的,因为深入地分析需要对操作系统的内部有深入地了解。然面有时crash dump的原因很简单,如果能够很快找到原因,就会缩短解决故障的周期。
下面只介绍一种最简单的方法,需要用到Q4工具(默认安装都有)。
#cd /var/adm/crash/crash.0(enter the dump dir you want to analysis)
#q4pxdb vmunix(may not be neccessary)
#echo "run WhatHappened" | q4 -m –Np . > wh.txt
以上命令通过调用名为WhatHappened脚本将系统发生crash时的状况大致列出来,保存到wh.txt文件中。如果Crash是因为MC/SG发出的TOC命令,或是因为HPMC等原因,在这里就已经可以清楚地看到了。
阅读(899) | 评论(0) | 转发(0) |