资源预览内容
第1页 / 共10页
第2页 / 共10页
第3页 / 共10页
第4页 / 共10页
第5页 / 共10页
第6页 / 共10页
第7页 / 共10页
第8页 / 共10页
第9页 / 共10页
第10页 / 共10页
亲,该文档总共10页全部预览完了,如果喜欢就下载吧!
资源描述
hanscLinux 操作系统死机处理方法总结Linux 操作系统死机处理方法总结 D*R c,z1通常在出现系统崩溃后,大家会担心再次出现故障,但是发现系统各日志中并没有记录到任何死机前后的信息,无法分析故障原因,认为已经无药可救。但是,实际上,Linux *D!W8VP X1o;v%F有多种机制来保证发生系统崩溃后,可以获取有价值的信息用以分析问题。确定是硬件故障,还是应用程序 bug 导致的。 +yU&yk RSn$YLinux 中,有如下几种方法来获取各种崩溃时产生的信息。1.Core dumpCore dump 通常用来调试应用程序错误,当某些应用程序运行出现异常崩溃时,可以开启系统的 core dump i Y a/y+u!s功能,来得到一个程序崩溃时的内存信息,用来分析崩溃原因:在/etc/profile 里加上(或者修改 )一条:MAB culimit -c 0运行命令:sysctl -w kernel.core_name_format=/coredump/%n.core该命令意思是指 core 文件放在/coredump 目录下,文件名是进程名+.core%wq.Z$n-2.Diskdumpdiskdump 工具提供了在单机上创建和采集 vmcore(kernel dump)的能力,而无须使用网络。当内核本身出现崩溃的时候,当前的内存和 CPU 状态以及相关的信息都会被保存到一个支持 diskdump 的磁盘上的保留分区上。在下一次重新启动的时候,当系统重新启动,diskdump 的初始化脚本会从保留分区中读取保存的信息并创建一个 vcore 文件, 然后这个文件被再次存放到 /var/crash/目录下,文件名为 127.0.0.1-如下是一个配置 HP SCSI 设备上启用 diskdump 的过程,如果不是 HP SCSI 设备(即设备名为 :r#y-JA2B6r/dev/sdX 的形式) ,则无须执行第三、四两个步骤。但需要在第一步前先执行命令: modprobediskdumpzq7X第一步:编辑 /etc/sysconfig/diskdump 文件,将一个空白分区的设备名填入后保存退出,例如:DEVICE=/dev/cciss/c0d0p2n aF*c(_8ebp1O第二步:初使化 dump 设备sO!cYN w sA,n#service diskdump initialformat警告:该分区的所以数据会丢失。pd&A!fSRC第三步:使用 cciss_dump 模块替换当前的 cciss 模块:6Z,D;lq&x在 /etc/modprobe.conf 找到如下行:alias scsi_hostadapter ccissS6W D Auht-K修改为:alias scsi_hostadapter cciss_dump7pPI7H K1PK*?u再增加一行:options cciss_dump dump_drive=1注:假设 diskdump 文件中配置的为 /dev/cciss/c0d#ap#b, 请设置为: options cciss_dump d PI7I*g+V3e pdump_drive=#a第四步:重建 initrd 文件:#mv /boot/initrd-uname -r.img /boot/initrd-uname -r.img.old1-i-s;f!h r$w n3r)#mkinitrd /boot/initrd-uname -r.img uname -r第五步:设置 diskdump 服务能够开机自启动:# chkconfig diskdump on3.Netdump;WLvUop如果使用红旗 DC4.0 或 3.0 版本系统,是不能支持 diskdump 的,可以利用 netdump 来达到输出 vmcore 的目的。但是 Netdump 要求至少有一个服务器以及任意数目的客户端。服务器用来接收客户端死机时的信息,客户端是经常死机的机器。E1j e$z tM(一)服务器配置:1a,cb7Cr(1). 检验 netdump 服务器是否安装完毕 :rpm -q netdump-server如果未安装,请在光盘 RedFlag/RPMS/ 目录中找到 netdump-server 打头的软件包,执行命令:rpm -ivh netdump-server-x.x.x.rpm (x 为版本号)进行安装。(2).服务器包安装后,用命令:passwd netdump*r JA -z?&C6更改用户的密码.(3).打开服务:1Tsw/:%caychkconfig netdump-server ondW+ge ha(4). 运行服务器:service netdump-server start(二)客户端配置:(1). 校验客户端是否已安装rpm -q netdump如果未安装,在光盘 RedFlag/RPMS/ 目录中找到 netdum 打头的软件包,执行命令:rpm -ivh netdump-x.x.x.rpm (x 为版本号)1KB:J8w 安装.(2).编辑文件/etc/sysconfig/netdump,添加如下行:DEV=eth0 ou+r3J6lv)l*NETDUMPADDR=172.16.81.182NETDUMPMACADDR=00:0C:29:79:F4:E0172.16.81.182 指 netdump 服务器地址。(3).运行下面的命令,出现提示符时输入密码:R OCp,v_ V|service netdump propagate(4). 打开客户端 :chkconfig netdump onu;c -y dh(5). 运行客户端:service netdump startWieo y+e(6).测试-C!N 4z:T.P为了测试 netdump 的配置是否正确,在 netdump 客户机上做下面操作:cp /usr/share/doc/netdump-xxxxxx/crash.c .;Q/c y6U8Dc&?gcc -DKERNEL -DMODULE -I/lib/modules/$(uname -r)/build/include -c crash.cinsmod ./crash.oj3y/G2Oh这会造成系统崩溃,你会在 netdump 服务器的/var/crash/目录下,看到一个核心转储。当客户机正在转储数据到服务器的时候,你会看到一个名叫“vmcore-incomplete的文件。当转储结束后,该文件会改名成 vmcore。vmcore文件的大小会变化,可能达到几个 GB.在一个内存是 512M 的系统上,上面的测试会产生大约 510M 的 vmcore 文件。 F*C VT怎么判断网卡是否支持 netdump 功能?内核调试工具 netdump 需要网卡驱动支持 netpoll 功能。netpoll 的目的是让内核在网络和I/O 子系统尚不能完整可用时,依然能发送和接收数据包。主要用于网络控制台(net |6t0D)wW YW%tN econsole)和远程内核调试(KGDBoE)中。实现 netpoll 功能,主要是要实现 kernel 中的poll_controller 函数,该函数定义:void (*poll_controller)(struct net_device a)z-H8UV*dev)。该函数的作用是在缺少设备中断的情况下,还能对控制器做出响应。几乎所有的poll_controller 函数都定义成如下形式:void my_poll_controller(struct net_device *dev) disable_device_interrupt(dev);t ?$mJ#Z*+X0Wcall_interrupt_handler(dev-irq, dev);3s B6H;Gw3tu1zxenable_device_interrupt(dev); -z%H)u!G-sN6fh所以, poll_controller 只是模拟了来自指定设备的中断。一个最简单的判断一个网卡驱动是否这次支持 netpoll 功能的方法是安装内核源代码,然后在代码树 /usr/src/kernel-version中搜索 HAVE_POLL_CONTROLLER 的定义, grep -r R _ p8T,eHAVE_POLL_CONTROLLER /usr/src/linux-version/drivers/net 示例如下:4xn7c-k# grep -r HAVE_POLL_CONTROLLER /usr/src/linux-2.4/drivers/net%?2$az a/usr/src/linux-2.4/drivers/net/3c59x.c:#ifdef HAVE_POLL_CONTROLLER/usr/src/linux-2.4/drivers/net/3c59x.c:#ifdef HAVE_POLL_CONTROLLER/usr/src/linux-2.4/drivers/net/e100/e100_main.c:#ifdef HAVE_POLL_CONTROLLER/usr/src/linux-2.4/drivers/net/e100/e100_main.c:#ifdef ,P$o_ o%qHAVE_POLL_CONTROLLER -cs.x N$s$/usr/src/linux-2.4/drivers/net/e1000/e1000_main.c:#ifdef /v_(_iQbHAVE_POLL_CONTROLLER%J% lAf i7r/c;R/usr/src/linux-2.4/drivers/net/e1000/e1000_main.c:#ifdef HAVE_POLL_CONTROLLER)Er1d)RX+xXk_/usr/src/linux-2.4/drivers/net/e1000/e1000_main.c:#ifdef HAVE_POLL_CONTROLLER/usr/src/linux-2.4/drivers/net/eepro100.c:#ifdef HAVE_POLL_CONTROLLER/usr/src/linux-2.4/drivers/net/eepro100.c:#ifdef HAVE_POLL_CONTROLLER/usr/src/linux-2.4/drivers/net/pcnet32.c:#ifdef HAVE_POLL_CONTROLLER/usr/src/linux-2.4/drivers/net/pcnet32.c:#ifdef HAVE_POLL_CONTROLLER/usr/src/linux-2.4/drivers/net/tg3.c:#ifdef HAVE_POLL_CONTROLLER/usr/src/linux-2.4/drivers/net/tg3.c:#ifdef HAVE_POLL_CONTROLLER/usr/src/linux-2.4/drivers/net/tlan.c:#ifdef HAVE_POLL_CONTROLLER/usr/src/linux-2.4/drivers/net/tlan.c:#ifdef HAVE_POLL_CONTROLLER2R r
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号