zoukankan      html  css  js  c++  java
  • Linux中Kdump服务的配置

    Kdump 是一种的新的crash dump捕获机制,用来捕获kernel crash时候产生的crash dump。Kdump需要配置两个不同目的的kernel,其中一个我们在这里称作standard(production) kernel;另外一个称之为Crash(capture)kernel。

    standard(production)kernel,是指我正在使用的kernel,当standard kernel在使用的过程中出现crash的时候, kdump会切换到crash kernel, 简单来说,standard kernel会正运行时发生crash,而crash(capture) Kernel 会被用来捕获production kernel crash时候产生的crash dump。

    捕获crash dump是在新的crash(capture) kernel 的上下文中来捕获的,而不是在standard kernel上下文进行。

    具体是当standard kernel方式crash的时候,kdump通过kexec(后面介绍)自动启动进入到crash kernel当中。如果启动了kdump服务,standard kernel会预留一部分内存, 这部分内存用来启动crash kernel。

    kdump机制主要包括两个组件:kdump和kexec

    kexec 是一个快速启动kernel的机制,它运行在某一正在运行的kernel中,启动一个新的kernel(这里是crash kernel),而且不用重新经过BIOS 就可以完成启动。因为一般BIOS都会花费很长的时间,尤其是在大型并且同时连接许多外部设备的Server上的环境下,BIOS会花费更多的时间。

    目前RHEL5、6 的linux distribution都会默认安装kdump,kdump的具体配置方法如下:

    1、kdump服务退避区以所用磁盘设置

        kdump退避区大小为:(memory容量+2GB)*2以上

        kdump退避区磁盘的文件格式: 要求与根目录的格式一样,通常为ext3格式,但RHEL6系统支持ext4格式。

    2、分区后dump规避域的label设置

       此处sda5作为退避去为例:

    # e2label /dev/sdb5 /dump    #设置

    # e2label /dev/sdb5              #确认

    /dump

    3、 Kdump服务相关包的安装确认

    • busybox
    • kexec-tools
    • kernel-debuginfo
    • kernel-debuginfo-common
    • kernel-devel
    • FJSVdumptools   (只有RHEL6系列上测试kdump时需要安装)

    4、kernel信息的设置

    需要在/etc/sysctl.conf文件中,做如下修改:

    kernel.sysrq = 1

    kernel.panic_on_oops = 1

    kernel.panic = 1

    kernel.panic_on_unrecovered_nmi = 1 *

    kernel.unknown_nmi_panic = 1 *

    注意:在IA64上设置时,不要设置*标记的两项。

    5、kdump配置文件的设置

    在文件/etc/kdump.conf中,做一下设置:

    ext3 LABEL=/dump

    path /

    core_collector makedumpfile

    default reboot

    注:①dump采集区域中定义/dump和标签,并将该标签定义为dump退避域。

          ②采集dump后的动作指定为reboot。采集dump后的动作只能是重启系统。

    6、kdump服务的设置

    设置kdump开机启动,通过以下命令设置:

    # chkconfig kdump on

    设置结果确认,通过以下命令确认:

    # chkconfig --list kdump

    kdump 0:off 1:off 2:on 3:on 4:on 5:on 6:off

    7、grub的相关配置

    x86和x64上设置文件/etc/grub.conf(即/boot/grub/grub.conf文件),ia64上设置文件/etc/efi/efi/redhat/elilo.conf,对文件中系统启动项对应的kernel参数进行如下设置:

    kernel ・・・nmi_watchdog=0 crashkernel=128M@16M  ①

    注:

    ①在RHEL5系列的系统中,指定格式为“128M@16M”(在RHEL6系中由于存在BUG,格式只能为128M)。其中128M表示分配给kdump使用的内存大小,16M表示所分配内存在物理内存中的起点。

    Kdump保留内存大小 = 128MB + (LUN数x80KB + )CPU数x1.2MB

    8、重启系统,查看Kdump服务是否成功

    # service kdump status

    Kdump is operational

    9、测试,通过sysrq强制系统崩溃,方法如下:

    # echo “c” > /proc/sysrq-trigger

    这造成kernel panic,紧跟着系统重启kdump内核。当启动进程进入到启动kdump服务器时,vmcore将会被拷贝到你所设定的退避去的位置。

  • 相关阅读:
    洛谷 P6295
    洛谷 P4240
    洛谷 P3287
    My rating is 1064.
    洛谷 P5071
    C语言 #include <> 与 #include “” 区别
    C语言 #pragma once
    C语言 typedef 和 define 区别
    C语言 define 定义函数(多行书写)
    C语言 define 定义函数
  • 原文地址:https://www.cnblogs.com/poiqwe/p/2824731.html
Copyright © 2011-2022 走看看