1. Kdump工具
  1. Kdump工具

  Kdump的工作机制是在内核崩溃时, 通过kexec 工具由BIOS启动一个备用内核,
由备用内核执行一系列任务,保存内存中崩溃内核的状态, 供后续故障分析用.

  Kdump的工作机制是在内核崩溃时, 通过kexec 工具由BIOS启动一个备用内核,
由备用内核执行一系列任务,保存内存中崩溃内核的状态, 供后续故障分析用。

  本文默认AMD或INTEL X86_64架构, RHEL7系统环境. 

  本文默认AMD或INTEL X86_64架构, RHEL7系统环境.

1.1 内核管理工具Kdump安装

1.1 内核管理工具Kdump安装

  Kdump是RHEL7中自带的内核管理工具.在RHEL7.1之前的版本,kdump作为安装完成之后的可选组件自动安装,从RHEL7.1开始kdump被植入安装界面,作为系统基础工具供安装选择.

  Kdump是RHEL7中自带的内核管理工具.在RHEL7.1之前的版本,kdump作为安装完成之后的可选组件自动安装,从RHEL7.1开始kdump被植入安装界面,作为系统基础工具供安装选择.

可以通过下面命令直接RPM包安装.

可以通过下面命令直接RPM包安装.

yum -y install kexec-tools
rpm -q kexec-tools

yum -y install kexec-tools
rpm -q kexec-tools

同时,Kdump还配备了图形化管理工具,可以通过下面命令安装.

同时,Kdump还配备了图形化管理工具,可以通过下面命令安装.

yum -y install system-config-kdump

yum -y install system-config-kdump

  对于RHEL7.4及之后的版本,kdump支持INTEL IOMMU.
而不支持RHEL7.3及之前的版本.

  对于RHEL7.4及之后的版本,kdump支持INTEL IOMMU.
而不支持RHEL7.3及之前的版本.

1.2 通过命令行配置kdump内存容量

1.2 通过命令行配置kdump内存容量

  kdump能监控系统内核运行状态,其地位比较特殊.
kdump的内存空间是在系统启动时,由引导程序分配的,相对于系统内核,kdump内存是一个独立的空间.

  kdump能监控系统内核运行状态,其地位比较特殊.
kdump的内存空间是在系统启动时,由引导程序分配的,相对于系统内核,kdump内存是一个独立的空间.

可以通过如下命令指定kdump的内存空间大小.

可以通过如下命令指定kdump的内存空间大小.

crashkernel=128M     #为kdump保留128M的内存空间.

crashkernel=128M    #为kdump保留128M的内存空间.

   crashkernel的值可以设置成“auto”,在一些拥有较大内存的系统中,利于实现Kdump的自动化管理.

   crashkernel的值可以设置成“auto”,在一些拥有较大内存的系统中,利于实现Kdump的自动化管理.

crashkernel=auto

crashkernel=auto

  当然,crashkernel的值还可以通过如下形式实现更灵活的配置.

  当然,crashkernel的值还可以通过如下形式实现更灵活的配置.

  crashkernel=<范围1>:<大小1>, <范围2>:<大小2>

  crashkernel=<范围1>:<大小1>, <范围2>:<大小2>

crashkernel=512M-2G:64M,2G-:128M    #当系统内存在512M-2G之间时,为Kdump保留64M的内存空间;当系统内存大于2G时,为Kdump保留128M的内存空间.

crashkernel=512M-2G:64M,2G-:128M    #当系统内存在512M-2G之间时,为Kdump保留64M的内存空间;当系统内存大于2G时,为Kdump保留128M的内存空间.

  还可以这样:

  还可以这样:

crashkernel=128M@16M    #为Kdump保留128M的内存空间,内存地址从16M(physical address 0x01000000)开始.

crashkernel=128M@16M    #为Kdump保留128M的内存空间,内存地址从16M(physical
address 0x01000000)开始.

1.3 Kdump的存储

1.3 Kdump的存储

  Kdump的配置在/etc/kdump.cnf中.
kdump提供多种方式将捕获到内核崩溃数据本地保存或保存到远程主机.

  Kdump的配置在/etc/kdump.cnf中.
kdump提供多种方式将捕获到内核崩溃数据本地保存或保存到远程主机.

#path /var/crash    #kdump本地存储目录,默认是存放在/var/crash目录下,可以根据使用习惯设置.
path /usr/local/cores 
...
#raw /dev/vg/lv_kdump    #kdump可以直接写入移动介质.
raw /dev/sdb1
...
#nfs my.server.com:/export/tmp    #kdump可以通过NFS保存到网络上其它存储设备中.
nfs test.example.com:/export/cores
...
#ssh user@my.server.com      #kdump可以通过SSH传输协议,保存远程主机上.
#sshkey /root/.ssh/kdump_id_rsa
ssh user@test.example.com
sshkey /root/.ssh/mykey

#path
/var/crash    #kdump本地存储目录,默认是存放在/var/crash目录下,可以根据使用习惯设置.
path /usr/local/cores 

#raw /dev/vg/lv_kdump    #kdump可以直接写入移动介质.
raw /dev/sdb1

#nfs
my.server.com:/export/tmp    #kdump可以通过NFS保存到网络上其它存储设备中.
nfs test.example.com:/export/cores

#ssh
user@my.server.com      #kdump可以通过SSH传输协议,保存远程主机上.
#sshkey /root/.ssh/kdump_永利皇宫手机版下载 ,id_rsa
ssh user@test.example.com
sshkey /root/.ssh/mykey

  kdump.conf中还可以在 core_collector makedumpfile 选项后加上” -c “,
使kdump文件能够被压缩,以节省存储空间.

  kdump.conf中还可以在 core_collector makedumpfile 选项后加上” -c “,
使kdump文件能够被压缩,以节省存储空间.

core_collector makedumpfile -c

systemctl start kdump.service    #启动Kdump服务
systemctl enable kdump.service    #使Kdump开机自启
systemctl is-active kdump       #检查Kdump是否已启动
active
echo 1 > /proc/sys/kernel/sysrq   #模拟内核崩溃,检查/var/crash/是否自动保存Kdump捕获的内核崩溃数据, 以确定Kdump是否正常工作
echo c > /proc/sysrq-trigger

core_collector makedumpfile -c

  需要注意的是

systemctl start kdump.service    #启动Kdump服务
systemctl enable kdump.service    #使Kdump开机自启
systemctl is-active kdump       #检查Kdump是否已启动
active
echo 1 >
/proc/sys/kernel/sysrq   #模拟内核崩溃,检查/var/crash/是否自动保存Kdump捕获的内核崩溃数据,
以确定Kdump是否正常工作
echo c > /proc/sysrq-trigger

  (1)在RHEL7之前的版本中,kdump的存储目录会随着kdump服务的启动而由系统自动创建.
RHEL7中,如果改变了kdump的存储目录,则必须在启动kdump服务之前,手动创建kdump的存储目录,否则kdump服务会启动失败.

  需要注意的是

  (2)如果在安装界面禁用了kdump, 而安装完成之后再通过systemctl start
kdump启动kdump, 会报内存不足无法启动的错误.
kdump的内存空间是在内核加载之前由boot分配的, 所以必须修改boot.
最好使用kdump的图形管理工具 system-config-kdump 加载kdump的默认配置,
使kdump处于可用状态, 然后重启系统, systemctl status kdump
服务处于激活状态(active).

  (1)在RHEL7之前的版本中,kdump的存储目录会随着kdump服务的启动而由系统自动创建.
RHEL7中,如果改变了kdump的存储目录,则必须在启动kdump服务之前,手动创建kdump的存储目录,否则kdump服务会启动失败.

1.4 利用crash功能分析内核崩溃

  (2)如果在安装界面禁用了kdump, 而安装完成之后再通过systemctl start
kdump启动kdump, 会报内存不足无法启动的错误.
kdump的内存空间是在内核加载之前由boot分配的, 所以必须修改boot.
最好使用kdump的图形管理工具 system-config-kdump 加载kdump的默认配置,
使kdump处于可用状态, 然后重启系统, systemctl status kdump
服务处于激活状态(active).

  利用crash功能组件能够分析linux内核崩溃时的网络、磁盘、CPU、系统内核状态,快速定位故障点.

1.4 利用crash功能分析内核崩溃

crash组件可以通过RPM包安装.

  利用crash功能组件能够分析linux内核崩溃时的网络、磁盘、CPU、系统内核状态,快速定位故障点.

sudo yum -y install crash       #安装crash
sudo debuginfo-install kernel    #安装内核调试模块

crash组件可以通过RPM包安装.

网站地图xml地图