linux - CentOs 7 无法启动崩溃内核并在/var/crash 中生成转储

标签 linux kernel coredump panic

我们遇到一个问题,当发生内核 panic 时,我们的 CentOS 7 服务器不会在/var/crash 中生成内核转储文件。看来崩溃内核永远不会启动。我们遵循 Rhel 指南 ( http://red.ht/1sCztdv ) 配置故障转储,乍一看,一切似乎都配置正确。我们正在引发这样的 panic :

echo 1 > /proc/sys/kernel/sysrq
echo c > /proc/sysrq-trigger

这会导致系统卡住。我们在控制台上没有收到任何消息,并且控制台变得无响应。此时,我想象系统将启动崩溃内核并开始将转储写入/var/crash。我将其置于卡住状态长达 30 分钟,以便有时间完成整个转储。然而,在硬冷重启后/var/crash 是空的。

此外,我已按预期复制了 KVM 虚拟机和 kdump 单词中的配置。因此,要么是我的物理系统配置有问题,要么是硬件配置有问题导致挂起而不是转储。

我们的服务器是 HP G9,24 核、128GB 内存。以下是一些其他详细信息:

[user@host]$ cat /proc/cmdline

BOOT_IMAGE=/vmlinuz-3.10.0-123.el7.x86_64 root=UUID=287798f7-fe7a-4172-a35a-6a78051af4d2 ro rd.lvm.lv=vg_sda/lv_root vconsole.font=latarcyrheb-sun16 rd.lvm.lv=vg_sda/lv_swap crashkernel=auto vconsole.keymap=us rhgb nosoftlockup intel_idle.max_cstate=0 mce=ignore_ce processor.max_cstate=0 idle=mwait isolcpus=2-11,14-23

[user@host]$ systemctl is-active kdump
active

[user@host]$ cat /etc/kdump.conf 

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

[user@host]$ cat /proc/iomem |grep Crash
2b000000-357fffff : Crash kernel

[user@host]$ dmesg|grep Reserving
[    0.000000] Reserving 168MB of memory at 688MB for crashkernel (System RAM: 131037MB)

[user@host]$ df -h
Filesystem                  Size  Used Avail Use% Mounted on
/dev/mapper/vg_sda-lv_root  133G  4.7G  128G   4% /
devtmpfs                     63G     0   63G   0% /dev
tmpfs                        63G     0   63G   0% /dev/shm
tmpfs                        63G  9.1M   63G   1% /run
tmpfs                        63G     0   63G   0% /sys/fs/cgroup
/dev/sda1                   492M  175M  318M  36% /boot
/dev/mapper/vg_sdb-lv_data  2.8T  145G  2.6T   6% /data

最佳答案

修改以下参数后,我们能够可靠地获取故障转储:

  1. 将 crashkernel=auto 更改为 crashkernel=1G:我不确定为什么我们需要 1G,因为公式表明每 1TB 内存需要 128M+64M。
  2. /etc/sysconfig/kdump:从 KDUMP_COMMANDLINE_APPEND excpet irqpoll nr_cpus=1 中删除了所有内容,结果是:KDUMP_COMMANDLINE_APPEND="irqpoll nr_cpus=1
  3. /etc/kdump.cfg:向 makedump 添加压缩(“-c”)

不能 100% 确定为什么会这样,但确实如此。很想知道别人的想法

埃里克

关于linux - CentOs 7 无法启动崩溃内核并在/var/crash 中生成转储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27969444/

相关文章:

linux - 如何获取gdb调用堆栈跟踪?

linux - Linux 中的核心转储

linux - SVN冲突与硬盘上没有文件

linux - DBSight 不适用于 Linux

linux - 如何使用 Perl 获取 bash 内置命令

c - 如何使用回调函数在 Tizen 中获取方向?

c - 使用 CLOCK_REALTIME 的内核 4.X 的纳秒精度可变计时器

linux - 用户空间进程和中断上下文代码之间的同步

ubuntu - bpftrace 单行命令在 wsl ubuntu 中不起作用

进程的 GDB 完整内存转储