Article ID: 10044, created on Feb 21, 2012, last review on May 11, 2014

  • Applies to:
  • Virtuozzo
  • Virtuozzo containers for Linux
  • Virtuozzo hypervisor

问题

有时配置内核崩溃转储是非常有用的,可以解决 Parallels Server Bare Metal 或 Parallels Virtuozzo Containers for Linux 上的一些故障。

注意:在基于 RHEL 6.x 的套件中,KEXEC 是内置的,而且不需要进行以下步骤。
注意:对应内核 2.6.32-042stabXXX 与更新版本,必须选择 p.2  中的“
crashkernel=129M@0M”选项。
 

解决方案

  1. 在硬件节点上安装 kexec-tools:
    [root@pvcfl46x64 ~]# yum install kexec-tools
  2. 给 GRUB 配置附加内核选项“crashkernel=128M@16M”(针对 i386 或 x86_64) 与“crashkernel=256M@256M”(针对 4.7 之前的 PVC 版本的 Itanium)。 对于较 4.7 更新的版本,针对 i386 and x86_64 架构可考虑使用“crashkernel=129M@0M”。
    [root@pvcfl46x64 ~]# grep crash /etc/grub.conf
    kernel /boot/vmlinuz-2.6.18-028stab070.14 ro root=LABEL=/1 debug console=ttyS0,115200 console=tty crashkernel=128M@16M
  3. 重启硬件。
  4. 在硬件上启用 Kdump:
    [root@pvcfl46x64 ~]# chkconfig kdump on
    [root@pvcfl46x64 ~]# chkconfig --list kdump
    kdump 0:off 1:off 2:on 3:on 4:on 5:on 6:off
  5. 在硬件上启动 Kdump:
    [root@pvcfl46x64 ~]# service kdump start
    No kdump initial ramdisk found. [WARNING]
    Rebuilding /boot/initrd-2.6.18-028stab070.14kdump.img
    Starting kdump: [ OK ]
  6. 如果您想要在外部服务器上存储转储,就需要进行额外的步骤: 编辑 "/etc/kdump.conf" 使用适合的服务器:
    [root@pvcfl46x64 ~]# cat /etc/kdump.conf
    net root@10.55.63.11
    path /var/crash/pvcfl46x64/
    注意: 确定已指定该分区且其“路径”足够存储内核转储。 可用空间容量应足够存储等于内存大小的多个转储。
     
  7. 传播设置:
    [root@pvcfl46x64 ~]# service kdump propagate
    Generating new ssh keys... done.
    root@10.55.63.11's password:
    /root/.ssh/kdump_id_rsa.pub has been added to ~root/.ssh/authorized_keys2 on 10.55.63.11
    [root@pvcfl46x64 ~]#
  8. 重启 Kdump:
    [root@pvcfl46x64 ~]# service kdump restart
    Stopping kdump: [ OK ]
    Detected change(s) the following file(s):
    /etc/kdump.conf
    Rebuilding /boot/initrd-2.6.18-028stab070.14kdump.img
    Starting kdump: [ OK ]
    [root@pvcfl46x64 ~]#
现在,当内核崩溃时,就可在 "/var/crash/pvcfl46x64/." 下找到转储
您可在一个非生产服务器上测试以下配置:
echo 1 > /proc/sys/kernel/sysrq
echo c > /proc/sysrq-trigger
如果一切都正常,您应该会在服务器控制台上看到类似以下显示的输出:
崩溃转储应该显示如下:
[root@pvcfl46x64 ~]# ls -la /var/crash/2011-03-03-05\:55/
total 649940
drwxr-xr-x 2 root root 4096 Mar 3 05:56 .
drwxr-xr-x 3 root root 4096 Mar 3 05:55 ..
-r-------- 1 root root 2018588492 Mar 3 05:56 vmcore

其他信息

Parallels Containers 用户指南:
使用 Kexec 与 Kdump 排除系统故障

Dedoimedo.com 而且还有很多有关内核崩溃故障排除的有用信息:
利用崩溃信息分析 Linux 内核崩溃转储 - 涵盖其所有信息的教程
收集并分析 Linux 内核崩溃 - Kdump

a26b38f94253cdfbf1028d72cf3a498b e8e50b42231236b82df27684e7ec0beb d02f9caf3e11b191a38179103495106f 2897d76d56d2010f4e3a28f864d69223 0dd5b9380c7d4884d77587f3eb0fa8ef

Email subscription for changes to this article