葡京网页登录 > IT系统 > 新匍京娱乐场Kdump 工作流程

新匍京娱乐场Kdump 工作流程
2019-12-06 09:46

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

什么是Kexec?

新匍京娱乐场,Kexec是生龙活虎种能够依照已经运行基本的上下文飞速运维新水源的风流罗曼蒂克种体制,而不通过BIOS。BIOS的开发银行在一些巨型机械大概有大气外设的机器上时特别耗费时间。这种体制能够节约要求在分裂底蕴之间切换的开拓人士的光阴。
Kexec在根本空间和客商空间都有照管的机件,内核提供了多少个kexec重启作用的体系调用。客户空间的软件包"kexec-tools"使用这么些系统调用,并进行加载和教导第叁个水源(捕获内核)。
Kexec由两有的构成,一是水源空间的体系调用kexec_load,负担在分娩根底(可能叫第三个根本)运行时将捕获内核(可能叫第一个基本)加载到内定之处。而是顾客空间的kexec-tools,它将捕获内核(second kernel)之处传递给坐蓐底蕴(first kernel),让系统在崩溃的时候能够找到捕获内核(second kernel)的地址并运维。

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

Kdump怎么专门的学问?

在时下系统产生崩溃时,新的破获内核被加载,然后依据已设置的命令去将眼下事情发生以前产生崩溃的系统的内部存款和储蓄器保存到三个非常的文书(vmcore)中。

下边以Fedora26做为测验演示。(Fedora和CentOS连串的系统已经在kenrel中开拓了CONFIG_KEXEC*选项。)

先是必要在系统运行时预先流出出给第四个根本运维的内部存款和储蓄器。内核参数"crashkernel=160M"会在系统运行时预先流出出160M内部存款和储蓄器的半空中给捕获内核运维使用。"crashkerel=xM"还协助任何的参数,详细的能够参见内核参数文书档案 水源参数。

# dmesg | grep -i reserving
[    0.000000] Reserving 160MB of memory at 656MB for crashkernel (System RAM: 2047MB)

系统运行后我们可以从下面的通令中看见曾经预先留下出了160M的内部存款和储蓄器从内部存款和储蓄器的656M处。

设置客户态的包"kexec-tools",软件包中会提供kdump所需的服务和"kexec"火速内核运行命令,和减少过滤内存的"makedumpfile"命令。

[root@localhost ~]# dnf install -y kexec-tools

新匍京娱乐场Kdump 工作流程。配置,修改kdump相关的配置文件。

[root@localhost ~]# grep -v ^# /etc/kdump.conf 

path /var/crash
core_collector makedumpfile -l --message-level 1 -d 31


[root@localhost ~]# grep -v ^# /etc/sysconfig/kdump
KDUMP_KERNELVER=""

KDUMP_COMMANDLINE=""

KDUMP_COMMANDLINE_REMOVE="hugepages hugepagesz slub_debug quiet"

KDUMP_COMMANDLINE_APPEND="irqpoll nr_cpus=1 reset_devices cgroup_disable=memory mce=off numa=off udev.children-max=2 panic=10 rootflags=nofail acpi_no_memhotplug transparent_hugepage=never nokaslr"

KEXEC_ARGS=""

KDUMP_IMG="vmlinuz"

KDUMP_IMG_EXT=""

布署文件/etc/kdump.conf设置了kdump发生时vmcore文件的仓库储存格局,此文件改良后供给重启kdump的劳动。

安排文件/etc/sysconfig/kdump,要是只是改善了COMMANDLINE相关的参数,则不需求去重新build生成新的initramfs文件。

启动kdump服务:

[root@localhost ~]# systemctl restart kdump
[root@localhost ~]# systemctl status kdump
● kdump.service - Crash recovery kernel arming
   Loaded: loaded (/usr/lib/systemd/system/kdump.service; enabled; vendor preset: disabled)
   Active: active (exited) since Sat 2017-07-15 10:46:22 UTC; 36s ago
  Process: 2172 ExecStop=/usr/bin/kdumpctl stop (code=exited, status=0/SUCCESS)
  Process: 2180 ExecStart=/usr/bin/kdumpctl start (code=exited, status=0/SUCCESS)
 Main PID: 2180 (code=exited, status=0/SUCCESS)

Jul 15 10:46:21 localhost dracut[4264]: -rw-r--r--   1 root     root          127 Mar 28 02:15 usr/share/zoneinfo/Etc/UTC
Jul 15 10:46:21 localhost dracut[4264]: drwxr-xr-x   3 root     root            0 Jun 22 13:38 var
Jul 15 10:46:21 localhost dracut[4264]: lrwxrwxrwx   1 root     root           11 Jun 22 13:38 var/lock -> ../run/lock
Jul 15 10:46:21 localhost dracut[4264]: lrwxrwxrwx   1 root     root            6 Jun 22 13:38 var/run -> ../run
Jul 15 10:46:21 localhost dracut[4264]: drwxr-xr-x   2 root     root            0 Jun 22 13:38 var/tmp
Jul 15 10:46:21 localhost dracut[4264]: ========================================================================
Jul 15 10:46:21 localhost dracut[4264]: *** Creating initramfs image file '/boot/initramfs-4.11.9-300.fc26.x86_64kdump.img' done ***
Jul 15 10:46:22 localhost kdumpctl[2180]: kexec: loaded kdump kernel
Jul 15 10:46:22 localhost kdumpctl[2180]: Starting kdump: [OK]
Jul 15 10:46:22 localhost systemd[1]: Started Crash recovery kernel arming.

具有的服务都配置达成,假诺这个时候系统一发布出了panic也许其余的有的招致系统崩溃的景色,那是kdump服务会将马上的内部存款和储蓄器镜像遵照顾客的配备保存起来。三个简洁明了的不二秘技是经过命令来触发:

[root@localhost ~]# echo c > /proc/sysrq-trigger

[some console log]
... ...
         Starting Kdump Vmcore Save Service...
kdump: dump target is /dev/vda1
kdump: saving to /sysroot//var/crash/127.0.0.1-2017-07-16-04:21:36/
[    2.718001] EXT4-fs (vda1): re-mounted. Opts: data=ordered
kdump: saving vmcore-dmesg.txt
kdump: saving vmcore-dmesg.txt complete
kdump: saving vmcore
Copying data                       : [100.0 %] -
kdump: saving vmcore complete
... ...
[/some console log]

当系统重启后就能够在钦点的目录下看看变化的vmcore文件。能够参谋布局文件"/etc/kdump.conf"里的"path"字段。

[root@localhost ~]# ls -lt /var/crash/*/
total 33492
-rw-------. 1 root root 34253115 Jul 16 04:21 vmcore
-rw-r--r--. 1 root root    40360 Jul 16 04:21 vmcore-dmesg.txt

转储文件被封存后得以用"crash"那么些软件包来解析那一个"vmcore"文件。

起头波及了Kexec内核部分提供了一些种类调用,"kexec_load()" 和 "kexec_file_load(卡塔尔国",个中四个用来加载捕获内核 - "kexec -l",其余二个来提供系统重启 - "kexec -e"。

系统调用"kexec_load(卡塔尔(英语:State of Qatar)"能够加载二个新的根本并随后能够被"reboot(卡塔尔"调用。它是被那样定义的:

long kexec_load(unsigned long entry, unsigned long nr_segments,
                       struct kexec_segment *segments, unsigned long flags);

其间一个特别首要的是"kexec_segment"结构体:

struct kexec_segment {
    void   *buf;        /* Buffer in user space */
    size_t  bufsz;      /* Buffer length in user space */
    void   *mem;        /* Physical address of kernel */
    size_t  memsz;      /* Physical address length */
};

当reboot(卡塔尔的参数为"LINUX_REBOOT_CMD_KEXEC"并被调用时,则运行新的功底时就调用"kexec_load(卡塔尔(英语:State of Qatar)"系统调用。其余“CONFIG_KEXEC”必得在编写翻译kernel时被展开。

系统调用"kexec_load_file(卡塔尔国"会设置2个参数"kernel"和"initramfs"给"kexec"命令。"kexec"会读取那些数量来创设对应的数据段。

long kexec_file_load(int kernel_fd, int initrd_fd,
                           unsigned long cmdline_len, const char *cmdline,
                           unsigned long flags);

同样的"CONFIG_KEXEC_FILE"参数也要在基本编写翻译时被张开。

眼前的好多发行版都已张开了"KEXEC"相关的布署参数。

上述正是二个kdump的轻便流程。有关"kdump"能够捕获到的基业崩溃时间足以参谋文书档案"/usr/share/doc/kexec-tools/kexec-kdump-howto.txt"。只怕请参谋大家写的测验用例 kdump-test。

参照他事他说加以考察资料:
kdump-paper
kdump-introduction
fedora-kexec-tools

  1. Kdump工具

什么是Kdump?

Kdump是三个依据kexec的木本崩溃转储机制,当系统崩溃时,kdump使用kexec运转到第贰个底蕴。地球热能个水源叫做捕获内核只怕又叫“2nd kernel”,它以相当少的内部存款和储蓄器运行捕获内核,并抓获转储镜像。Kdump的概念是时下最可信的幼功转储技能,已被重视的linux厂家使用。(举例Red Hat连串)

  Kdump是奔驰M级HEL7中自带的根本管理工具.在ENCOREHEL7.1事情未发生前的本子,kdump作为安装完成未来的可选组件自动安装,从LX570HEL7.1从头kdump被植入安装分界面,作为系统根底工具供安装选用.

  本文暗许Intel或INTEL X86_64结构, GL450HEL7系统碰着. 

sysctl -a | grep fs.aio    #查看内核默认的最大aio值
sysctl fs.aio-max-nr=2048576  #临时调整aio最大值
crashkernel=128M     #为kdump保留128M的内存空间.

新匍京娱乐场 1

  仍然为能够这么:

能够因此如下命令钦命kdump的内部存款和储蓄器空间大小.

sysctl net.ipv4.ip_forward = 1

1.2 通过命令行配置kdump内部存款和储蓄器容积

新匍京娱乐场 2

 sudo crash /usr/lib/debug/lib/modules/<kernel>/vmlinux /var/crash/<timestamp>/vmcore  #启动crash调试

测量试验一下:

  当然,crashkernel的值还能够由此如下情势落到实处越来越灵敏的配置.

  (1卡塔尔(英语:State of Qatar)在福睿斯HEL7早先的版本中,kdump的蕴藏目录会趁机kdump服务的起步而由系统自动创制. 汉兰达HEL7中,假使改造了kdump的存放目录,则必需在运行kdump服务在此以前,手动创立kdump的储存目录,不然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

1.3 Kdump的存储

  利用crash作用组件能够深入分析linux内核崩溃时的互连网、磁盘、CPU、系统基本状态,飞速稳固故障点.

(4卡塔尔设定系统中还要运行的最大进度数.

sysctl -a        #列出所有可调校的项
sysctl kernel.version    #列出kernel的版本信息

sysctl <tunable class>.<tunable>=<value>       #使调校参数临时生效
sysctl -W <tunable class>.<tunable>=<value>   #使调校参数永久生效

  必要注意的是

crash组件能够透过RPM包安装.

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

2 linux内核调校

  (2卡塔尔(英语:State of Qatar)借使在装置分界面禁止使用了kdump, 而安装完毕之后再经过systemctl start kdump运行kdump, 会报内存不足不大概起动的错误. kdump的内部存款和储蓄器空间是在基本加载此前由boot分配的, 所以必得修改boot. 最棒利用kdump的图片管理工科具 system-config-kdump 加载kdump的私下认可配置, 使kdump处于可用状态, 然后重启系统, systemctl status kdump 服务处于激活状态(active卡塔尔(قطر‎.

  (1)使用sysctl 命令;

  (2卡塔尔国改革/etc/sysctl.d/ 目录下的基本配置文件;

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

2.1 kernel的调校渠道

上一篇:没有了 下一篇:没有了