所选语种没有对应资源,请选择:

本站点使用Cookies,继续浏览表示您同意我们使用Cookies。Cookies和隐私政策>

提示

尊敬的用户,您的IE浏览器版本过低,为获取更好的浏览体验,请升级您的IE浏览器。

升级

华为服务器 操作系统 安装指南 27

本指南介绍华为服务器操作系统的安装过程、应用场景以及注意事项。

评分并提供意见反馈 :
华为采用机器翻译与人工审校相结合的方式将此文档翻译成不同语言,希望能帮助您更容易理解此文档的内容。 请注意:即使是最好的机器翻译,其准确度也不及专业翻译人员的水平。 华为对于翻译的准确性不承担任何责任,并建议您参考英文文档(已提供链接)。
Linux下配置内存转储Kdump

Linux下配置内存转储Kdump

Linux系统下由Kdump机制提供内存转储服务。目前主流的Linux系统如RHEL、SLES等都默认安装Kdump。若您使用的OS发行版本没有包含Kdump服务的安装,根据具体情况,联系OS提供商咨询相关事宜。

相关概念

Kexec

一般情况下,系统通过BIOS引导Linux内核,这是非常耗时的。Kexec是一个快速启动机制,允许从一个内核已经运行的环境下不通过BIOS引导Linux内核,特别是在大型服务器或带着大量外设的机器上,这个快速启动机制为开发者节省了大量的时间。

Kdump

Linux kernel是一个相当健全的实体,其稳定性和容错性使得系统一般情况下不会出现无法挽回的故障从而导致系统崩溃。但是,这类问题还是无法完全避免的,这类问题被称为Linux crash。

Kdump是一个可靠的新型内核故障转储机制。Kdump是Linux为了发现、收集、分析crash提供的工具,可以使用它来找到问题的根源,并寻求解决关键性错误的方法。

Kdump机制涉及两种内核:

  • 标准内核(业务内核):用于运行业务的内核。
  • 崩溃内核(捕获内核):用于收集崩溃信息的内核。

Kdump是一个可靠的新型内核故障转储机制。在一个新的内核中执行故障捕获转储而不是在崩溃内核中直接进行故障捕获,通过Kexec引导进入另一个内核中。这个内核被称为崩溃内核(crash kernel)或捕获内核(capture kernel),使用很少的内存启动并捕获故障内存映像。这一小部分内存是标准内核保留的用于Kexec启动崩溃内核,这实质上就是故障转储的内核。

但并非任何情况下Kdump都能够成功转储,例如中断跳转表挂起、触发严重内核故障、系统崩溃时存储故障时,就需要结合其他定位手段来获取定位信息。

RHEL 5下配置内存转储Kdump

本章节指导用户在RHEL 5下配置内存转储Kdump。具体版本OS配置内存转储Kdump的操作请参考《华为服务器 操作系统 安装指导 案例集》中各指导书的测试Kdump配置章节。

  1. 执行以下命令编辑/boot/grub/grub.conf文件,添加crashkernel=<size>M@16M参数。

    # vi /boot/grub/grub.conf

    根据环境中实际的物理内存配置kdump size,<size>取值请参考表11-1

    表11-1 crashkernel预留内存容量

    ram size

    crashkernel parameter

    >0GB

    128MB

    >2GB

    256MB

    >6GB

    512MB

    >8GB

    768MB

    下面以预留128MB容量为例:

    # grub.conf generated by anaconda
    # 
    # Note that you do not have to rerun grub after making changes to this file
    # NOTICE:  You have a /boot partition.      This means that
    #                 all kernel and initrd paths are relative to /boot/, eg.
    #                 root (hd0,0)
    #                 kernel /vmlinuz-version ro root=/dev/sda3
    #                 initrd /initrd-version.img
    #boot=/dev/sda
    default=0
    timeout=5
    splashimage=(hd0,0)/grub/splash.xpm.gz
    hiddenmenu
    title Red Hat Enterprise Linux Server (2.6.18-274.3.1.el5)
    root (hd0,0)
    kernel /vmlinuz-2.6.18-274.3.1.el5 ro root=/dev/sda3 crashkernel=128M@16M
    initrd /initrd-2.6.18-274.3.1.el5.img

  2. 执行:wq命令保存配置并退出编辑。
  3. 设置kdump开机启动。

    ~]# chkconfig kdump on

  4. 若当前服务器机型为4路服务器,需将/etc/sysconfig/kdump配置文件中“KDUMP_COMMANDLINE_APPEND”行下“nr_cpus”的大小设置为“4”。

    KDUMP_COMMANDLINE_APPEND="irqpoll nr_cpus=4 disable_cpu_apicid=0 reset_devices cgroup_disable=memory mce=off"

  5. 重启OS。

    ~]# reboot

  6. 执行以下命令检查kdump状态,当返回如下信息时表示kdump服务正常。

    ~]# service kdump status
    
    Kdump is operational

  7. 测试kdump配置。

    1. 执行如下两条命令迫使Linux内核奔溃。
      ~]# echo 1 > /proc/sys/kernel/sysrq
      ~]# echo c > /proc/sysrq-trigger
    2. OS自动重启后,查看“/var/crash/”目录下是否存在“address-YYYY-MM-DD-HH:MM:SS/vmcore”文件。
      • 如果存在,则kdump可正常使用。
      • 如果不存在,则需要重新调整预留内存容量。

RHEL 6下配置内存转储Kdump

本章节指导用户在RHEL 6下配置内存转储Kdump。具体版本OS配置内存转储Kdump的操作请参考《华为服务器 操作系统 安装指导 案例集》中各指导书的测试Kdump配置章节。

RHEL 6安装时默认使能Kdump,配置内存预留为crashkernel=auto,内核会自动为kdump内核保留适当的内存量 。如需修改预留内存大小,请参考手动调整预留内存容量

建议在安装所有应用程序后测试并验证kdump是否适用于所有系统。crashkernel=auto保留的内存仅考虑典型的配置。

测试kdump配置步骤如下:

  1. 执行以下命令确认kdump服务是否运行。

    ~]# service kdump status
    Kdump is operational

  2. 执行如下两条命令迫使Linux内核奔溃。

    ~]# echo 1 > /proc/sys/kernel/sysrq
    ~]# echo c > /proc/sysrq-trigger

  3. 若当前服务器机型为4路服务器,需将/etc/sysconfig/kdump配置文件中“KDUMP_COMMANDLINE_APPEND”行下“nr_cpus”的大小设置为“4”。

    KDUMP_COMMANDLINE_APPEND="irqpoll nr_cpus=4 disable_cpu_apicid=0 reset_devices cgroup_disable=memory mce=off"

  4. OS自动重启后,查看“/var/crash/”目录下是否存在“address-YYYY-MM-DD-HH:MM:SS/vmcore”文件。

    • 如果存在,则kdump可正常使用。
    • 如果不存在,则需要手动调整预留内存容量,详细操作请参考手动调整预留内存容量

手动调整预留内存容量

自动预留内存时,如果系统带有许多板卡并配置大容量内存可能导致kdump无法正常工作,建议调整预留内存为512M或更多。

如果使用第三方模块,则必须保留更多内存。

最小预留内存计算公式为:128MB+(每TB物理RAM添加额外的64MB)。

例如:一个系统有1TB内存,则最小预留内存需要128MB + 64MB=192MB。

下面以配置crashkernel=512M为例,操作如下:

  1. 执行vi命令,打开grub配置文件,配置crashkernel=512M。

    • Legacy模式打开“/boot/grub/menu.lst”文件。
    • UEFI模式打开“/boot/efi/EFI/redhat/grub.conf”文件。

  2. 执行:wq命令保存配置并退出编辑。
  3. 执行reboot命令,重启OS。
  4. 执行systemctl status kdump命令检查kdump状态,当返回如下信息时表示kdump服务正常。

  5. 执行14进行kdump测试,确认kdump功能可以正常使用。

RHEL 7下配置内存转储Kdump

本章节指导用户在RHEL 7下配置内存转储Kdump。具体版本OS配置内存转储Kdump的操作请参考《华为服务器 操作系统 安装指导 案例集》中各指导书的测试Kdump配置章节。

RHEL 7安装时默认使能Kdump,配置内存预留为crashkernel=auto,内核会自动为kdump内核保留适当的内存量 。如需修改预留内存大小,请参考手动调整预留内存容量

建议在安装所有应用程序后测试并验证kdump是否适用于所有系统。crashkernel=auto保留的内存仅考虑典型的配置。

测试kdump配置步骤如下:

  1. 执行以下命令确认kdump服务是运行的。

    ~]# systemctl is-active kdump
    active

  2. 执行如下两条命令迫使Linux内核奔溃。

    ~]# echo 1 > /proc/sys/kernel/sysrq
    ~]# echo c > /proc/sysrq-trigger

  3. 若当前服务器机型为4路服务器,需将/etc/sysconfig/kdump配置文件中“KDUMP_COMMANDLINE_APPEND”行下“nr_cpus”的大小设置为“4”。

    KDUMP_COMMANDLINE_APPEND="irqpoll nr_cpus=4 disable_cpu_apicid=0 reset_devices cgroup_disable=memory mce=off"

  4. OS自动重启后,查看“/var/crash/”目录下是否存在“address-YYYY-MM-DD-HH:MM:SS/vmcore”文件。

    • 如果存在,则kdump可正常使用。
    • 如果不存在,则需要手动调整预留内存容量,详细操作请参考手动调整预留内存容量。。

手动调整预留内存容量

最小预留内存计算公式为:160MB+(每4K系统内存预留2bits)

  • 8bit(位)=1Byte(字节)
  • 1024Byte(字节)=1KB
  • 1024KB=1MB
  • 1024MB=1GB
  • 1024GB=1TB

以1T内存为例,最小预留内存需要160MB+64MB=224MB。

下面以配置crashkernel=512M为例,操作如下:

  1. 执行vi /etc/default/grub命令编辑“grub”文件,配置crashkernel=512M。

  2. 执行:wq命令保存配置并退出编辑。
  3. 配置同步到“grub.cfg”文件中。

    • UEFI模式执行grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg命令。
    • Legacy模式执行grub2-mkconfig -o /boot/grub2/grub.cfg命令。

  4. 执行reboot命令,重启OS。
  5. 执行systemctl status kdump命令检查kdump状态,当返回如下信息时表示kdump服务正常。

  6. 执行14进行kdump测试,确认kdump功能可以正常使用。

SLES 11下配置内存转储Kdump

本章节指导用户在SLES 11下配置内存转储Kdump。具体版本OS配置内存转储Kdump的操作请参考《华为服务器 操作系统 安装指导 案例集》中各指导书的测试Kdump配置章节。

SLES 11安装时默认使能Kdump,配置内存预留为128M。

手动调整预留内存大小请参考如下配置:

  1. 进入SLES 11命令行。
  2. 执行yast2命令

    进入YaST控制中心界面,如图11-1所示。
    图11-1 YaST控制中心

  3. 选择“System > Kernel Kdump”。

    进入Kdump配置界面,如图11-2所示。
    图11-2 Kdump配置界面

  4. 勾选“Enable Kdump”,修改“Kdump Memory”参数值设置预留内存大小,如设置为“512”。
  5. 单击“OK”。
  6. 若当前服务器机型为4路服务器,需将/etc/sysconfig/kdump配置文件中“KDUMP_COMMANDLINE_APPEND”行下“nr_cpus”的大小设置为“4”。

    KDUMP_COMMANDLINE_APPEND="irqpoll nr_cpus=4 disable_cpu_apicid=0 reset_devices cgroup_disable=memory mce=off"

  7. 命令行执行reboot命令重启操作系统。
  8. 系统重启后,执行service boot.kdump status检查kdump是否正常启动。

    • 显示running表示正常启动,执行12
    • 显示dead表示无法正常启动,执行9-11

  9. 执行chkconfig boot.kdump on命令设置开机启动kdump服务。
  10. 执行service boot.kdump start命令设置启动kdump服务。
  11. 执行7-8检查kdump是否正常启动。

    如果仍无法正常启动,重复4-8修改kdump memory大小。

  12. 执行echo c > /proc/sysrq-trigger命令迫使Linux内核奔溃。
  13. OS自动重启后,查看“/var/crash/”目录下是否存在“address-YYYY-MM-DD-HH:MM:SS/vmcore”文件。

    • 如果存在,则kdump可正常使用。
    • 如果不存在,重复4-13修改kdump memory大小。

SLES 12下配置内存转储Kdump

本章节指导用户在SLES 12下配置内存转储Kdump。具体版本OS配置内存转储Kdump的操作请参考《华为服务器 操作系统 安装指导 案例集》中各指导书的测试Kdump配置章节。

SLES 12安装时默认使能Kdump,配置内存预留为crashkernel=auto。

  1. 进入SLES 12命令行。
  2. 执行yast2命令。

    进入YaST控制中心界面,如图11-3所示。
    图11-3 YaST控制中心

  3. 选择“System > Kernel Kdump”。

    进入Kdump配置界面,如图11-4所示。
    图11-4 Kdump配置界面

  4. 勾选“Enable Kdump”,修改“Kdump Low Memory”为“256”,“Kdump High Memory”为“512”。
  5. 单击“OK”。
  6. 若当前服务器机型为4路服务器,需将/etc/sysconfig/kdump配置文件中“KDUMP_COMMANDLINE_APPEND”行下“nr_cpus”的大小设置为“4”。

    KDUMP_COMMANDLINE_APPEND="irqpoll nr_cpus=4 disable_cpu_apicid=0 reset_devices cgroup_disable=memory mce=off"

  7. 命令行执行reboot命令重启操作系统。
  8. 执行echo c > /proc/sysrq-trigger命令迫使Linux内核奔溃。
  9. OS自动重启后,查看“/var/crash/”目录下是否存在“address-YYYY-MM-DD-HH:MM:SS/vmcore”文件。

    • 如果存在,则kdump可正常使用。
    • 如果不存在,重复4-9修改kdump memory大小。

下载文档
更新时间:2019-11-12

文档编号:EDOC1000040218

浏览量:326469

下载量:475963

平均得分:
本文档适用于这些产品

相关版本

相关文档

Share
上一页 下一页