Chinaunix首页 | 论坛 | 博客
  • 博客访问: 129023
  • 博文数量: 30
  • 博客积分: 2090
  • 博客等级: 大尉
  • 技术积分: 301
  • 用 户 组: 普通用户
  • 注册时间: 2007-07-27 09:11
文章分类

全部博文(30)

文章存档

2011年(2)

2010年(2)

2009年(5)

2008年(21)

我的朋友

分类:

2008-12-11 11:25:10

    有时系统在运行的过程中挂起,有时会自动重起,我们需要对相关的情况进行分析。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等原因,在这里就已经可以清楚地看到了。 
阅读(959) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~