我们遇到一个问题,当发生内核 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
最佳答案
修改以下参数后,我们能够可靠地获取故障转储:
- 将 crashkernel=auto 更改为 crashkernel=1G:我不确定为什么我们需要 1G,因为公式表明每 1TB 内存需要 128M+64M。
- /etc/sysconfig/kdump:从 KDUMP_COMMANDLINE_APPEND excpet irqpoll nr_cpus=1 中删除了所有内容,结果是:KDUMP_COMMANDLINE_APPEND="irqpoll nr_cpus=1
- /etc/kdump.cfg:向 makedump 添加压缩(“-c”)
不能 100% 确定为什么会这样,但确实如此。很想知道别人的想法
埃里克
关于linux - CentOs 7 无法启动崩溃内核并在/var/crash 中生成转储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27969444/