freebsd下保存内核崩溃时的信息

 虽然unxi系统是非常稳定的,但是如果系统性能有瓶颈,还是有可能造成系统崩溃的。比如说,并发用户过多,造成cpu或内存负载无法承受,或者磁盘读写太频繁,造成磁盘无法承受,或者有内存泄漏程序。

一般,系统崩溃时的信息是不会保存下来的,所以无法追究其原由。

上网查了些资料,发现freebsd下有一种办法,可以把系统崩溃时的内存信息完全保留下来。这样可以通过对这些信息的研究来推断造成系统崩溃的原由,进一步对系统进行优化。

配置,在/etc/rc.conf中添加如下行:

dumpdev=/dev/hda5

dumpdir=/var/crash

其中,dumpdev指定交换分区的位置;dumpdir指定要把信息保存到哪个目录。

工作过程:

系统崩溃时,内核把内存内容保存到交换分区(swap)。因为swap在正常启动时,里面的内容会自动清空。所以这个位置不能长久保存崩溃信息。

当系统再一次正常启动时,会把内河崩溃信息拷贝到/var/crash目录。这样就把崩溃信息完全保留下来了。

注意:1.如果经常崩溃,/var/crash会占用很大空间,可以把不需要的信息删掉;崩溃信息的保存文件名是有规律的,vmcorex,其中,最新的信息保存在x最大的那个文件中。

2.如果系统崩溃后,无法正常启动,也有手动把swap中的信息拷贝出来。

首先启动一个系统,挂载/swap;使用savecore命令手动拷贝崩溃信息。比如savecore /var/crash /dev/hda5,就是把/dev/hda5交换分区中的内容拷贝到/var/crash中。

补充:研究solaris资料时发现,solaris也有类似的实现方法,他作的更简单,只要建立/var/crash目录,同时在启动时加载/etc/init.d/sysetup进程,如果系统崩溃,就是记录信息。并且,sun还提供一些工具帮助分析信息。在sun的网站上能下载这些脚本。

你可能感兴趣的:(优化,Solaris,脚本,FreeBSD,sun,磁盘)