1. kdump简介

    coredump为用户态进程段错误等触发的crash现场转储机制, 可利用gdb进行corefile的调试.

    kdump为kernel crash/panic等而触发的转储机制, 一般使用crash工具进行调试.

 

2. kdump原理

     预留部分内存(如192MB) 供转储内核使用, 当panic/crash产生时 利用kexec系统调用直接拉起转储内核. 利用该内核进行crash现场的储存dump.

 

3. kdump使用

     ubuntu配置的内核已使能kdump的支持, 故仅需要安装linux-crashdump包即可,

     sudo apt-get install linux-crashdump

     该包包含crash, kdump-tools, grub等相关依赖.

     安装过程中会修改kernel cmdline已预留kdump转储内核内存空间. 以及使能kdump.

      reboot重启系统后,

 可用以下方式验证:

       kdump-config show

ubuntu Kiosk模式_ubuntu Kiosk模式

 

 

 

4、安装kdump
apt-get install linux-crashdump

根据提示操作

ubuntu Kiosk模式_sed_02

 

 

 

ubuntu Kiosk模式_重启_03

 

 

5. 调整crashkernel内存大小为768M(默认192M内存太小)
修改 /etc/defatul/grub.d/kdump-tools.cfg 中 crashkernel=512M-:768M
6. 重新生成grub.cfg
grub-mkconfig -o /boot/grub/grub.cfg
7. reboot 重启生效

 

手动测试kdump能否正常工作:
echo 1 > /proc/sys/kernel/sysrq
echo c > /proc/sysrq-trigger
此时系统会触发kdump,并重启
重启后,/var/crash会保存此次手动触发生成的vmcore

检查生产的文件:

ubuntu Kiosk模式_重启_04

 

 

ubuntu Kiosk模式_重启_05

 

 

kdump的高级配置

Centos系统和kdump相关的配置文件有两个:一个是/etc/sysconfig/kdump,该文件内的内容一般无需修改 -- 网上一些技术站上在kdump服务启动不成功时修改这里,这里提示下,如果是通过yum源正常安装的,该文件无需修改;一个是/etc/kdump.conf 。这里指的高级配置主机是/etc/kdump.conf ,该配置文件的可配置选项可通过man 5 kdump.conf 获取帮助,这里只列举下常用到的部分:

 ubuntu 这里主要配置/etc/default/kdump-tools 和/etc/defatul/grub.d/kdump-tools.cfg。

下面先介绍Centos的配置

1、设置kdump文件成生的位置

控制路径的主要有两部分: 

  1. #raw /dev/sda5
  2. #ext4 /dev/sda3
  3. #ext4 LABEL=/boot
  4. #ext4 UUID=03138356-5e61-4ab3-b58e-27507ac41937
  5. #nfs my.server.com:/export/tmp
  6. #ssh user@my.server.com
  7. path /var/crash

前面的部分用于设置存储的设备或分区位置--可以是raw裸设备、本地分区、网络路径在本地的挂载点或通过ssh传输,path则是相对的存储路径。如我们通过nfs 将远程的一个分区挂载到本地的/mnt分区下,kdump文件就存储在/mnt/var/crash/下。默认上面的部分不设置就是相对根分区的相对路径,即/var/crash 。

需要特别指出的是,如果使用ssh进行传输,需要配置key认证,使用/etc/init.d/kdump propagate即可配置ssh认证传输,如下: 

  1. kdump.conf中指定ssh网络传输
  2. ssh root@192.168.0.100/data/
  3. 执行下面的命令会配置本机到192.168.0.100主机的key认证传输
  4. # service kdump propagate
  5. Generating new ssh keys… done.
  6. The authenticity of host '192.168.0.100 (192.168.0.100)' can't be established.
  7. RSA key fingerprint is 31:c2:d8:b6:eb:2e:03:64:cd:ba:56:e9:49:6e:5d:6c.
  8. Are you sure you want to continue connecting (yes/no)? yes
  9. Warning: Permanently added '192.168.0.100' (RSA) to the list of known hosts.
  10. root@192.168.0.100's password:
  11. /root/.ssh/kdump_id_rsa.pub has been added to ~root/.ssh/authorized_keys2 on
  12. 192.168.0.100

按照上面的配置,当有kdump生成时,会通过scp传输存储在192.168.0.100主机的/data/var/crash 目录下。

 

2、core_collector控制 (dump保存内存的数据太大,这里配置下可以减少很多数据)

该处是信息收集大小的关键,主要用到makedumpfile命令,centos 上的默认配置如下: 

  1. core_collector makedumpfile -c --message-level 1 -d 31

-c 表示启动zlib进行数据压缩 

--message-level  指定了信息收集的级别,1为只打印process indicator 日志信息,默认值为7,具体见下表 

  1. Message | progress common error debug report
  2. Level | indicator message message message message
  3. ---------+------------------------------------------------------
  4. 0 |
  5. 1 | X
  6. 2 | X
  7. 4 | X
  8. * 7 | X X X
  9. 8 | X
  10. 16 | X
  11. 31 | X X X X X

-d 指定了kdump的过滤级别,具体见下表 

  1. | cache cache
  2. Dump | zero without with user free
  3. Level | page private private data page
  4. -------+---------------------------------------
  5. 0 |
  6. 1 | X
  7. 2 | X
  8. 4 | X X
  9. 8 | X
  10. 16 | X
  11. 31 | X X X X X 

31表示过滤掉以上五种全部信息,这样kdump生成的速度就会更快,生成的vmcore文件也会较小。如果此处使用值0 ,表示不过滤任何信息,在kdump生成时,会记录主机当前的所有信息。这就是为什么在kdump生成时,有些主机只有几十M大小生成,有些主机确有几十 G大小的原因。更多用法可以查看makedumpfile命令的帮助文档。

3、指定default配置

该处的配置,参考了网上的一些配置,一些技术文档上使用的是defult  reboot选项,而默认的是defult  shell  ,两者之间的区别是:

  1. reboot: If the default action is reboot simply reboot the system and loose the core that you are trying to retrieve.
  2. shell: If the default action is shell, then drop to an hush session inside the initramfs from where you can try to record the core manually.Exiting this shell reboots the system.

在查看/usr/share/doc/kexec-tools-2.0.0/kexec-kdump-howto.txt帮助手册中的解释更容易理解一些,如下:

  1. reboot --> reboot the system.
  2. shell --> drop to a shell with-in initrd. A user can try to capture the
  3. vmcore manually.

从这个解释可以看到选择shell 可以手工的DIY一些东西,而选择reboot 会在kdump生成后简单直接的reboot 系统。除了上在两个选项,还会poweroff 、halt 可选,如果不是技术研究的目录,在生产环境上我想谁不会选择kdump生成后让系统挂起吧。

除上面三处之外,还有其他配置部分,如debug_mem 的配置等。具体可以看kdump.conf 的man 结果。

下面介绍ubuntu16.04的配置

ubuntu 16.04 没有kdump.conf ,主要配置/etc/default/kdump-tools文件

 #MAKEDUMP_ARGS="-c -d 31"    默认是注释的,可以修改

改成 MAKEDUMP_ARGS="-c -d 31 --dump-dmesg"

 

 

 

 

ubuntu apt-get 比较快的国内源

方法:
1、修改源地址:

cp /etc/apt/sources.list /etc/apt/sources.list.bak

vim /etc/apt/sources.list


#添加阿里源

deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse

##清华源

deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse
deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main restricted universe multiverse
deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-proposed main restricted universe multiverse


更新看看速度:

sudo apt-get update

sudo apt-get upgrade



 

参考;


https://www.jianshu.com/p/c3f001d6b765?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

 

 

无法联网的情况下手动下载:

总共需要下面几个包:

ubuntu Kiosk模式_ubuntu Kiosk模式_06

 

下载完成之后执行

dpkg -i *.deb 可安装 

 

所有包都可以在下面的网站下载安装:

https://packages.ubuntu.com/xenial/linux-crashdump