Linux中Kdump服務的配置


Kdump 是一種的新的crash dump捕獲機制,用來捕獲kernel crash時候產生的crash dump。Kdump需要配置兩個不同目的的kernel,其中一個我們在這里稱作standard(production) kernel;另外一個稱之為Crash(capture)kernel。

standard(production)kernel,是指我正在使用的kernel,當standard kernel在使用的過程中出現crash的時候, kdump會切換到crash kernel, 簡單來說,standard kernel會正運行時發生crash,而crash(capture) Kernel 會被用來捕獲production kernel crash時候產生的crash dump。

捕獲crash dump是在新的crash(capture) kernel 的上下文中來捕獲的,而不是在standard kernel上下文進行。

具體是當standard kernel方式crash的時候,kdump通過kexec(后面介紹)自動啟動進入到crash kernel當中。如果啟動了kdump服務,standard kernel會預留一部分內存, 這部分內存用來啟動crash kernel。

kdump機制主要包括兩個組件:kdump和kexec

kexec 是一個快速啟動kernel的機制,它運行在某一正在運行的kernel中,啟動一個新的kernel(這里是crash kernel),而且不用重新經過BIOS 就可以完成啟動。因為一般BIOS都會花費很長的時間,尤其是在大型並且同時連接許多外部設備的Server上的環境下,BIOS會花費更多的時間。

目前RHEL5、6 的linux distribution都會默認安裝kdump,kdump的具體配置方法如下:

1、kdump服務退避區以所用磁盤設置

    kdump退避區大小為:(memory容量+2GB)*2以上

    kdump退避區磁盤的文件格式: 要求與根目錄的格式一樣,通常為ext3格式,但RHEL6系統支持ext4格式。

2、分區后dump規避域的label設置

   此處sda5作為退避去為例:

# e2label /dev/sdb5 /dump    #設置

# e2label /dev/sdb5              #確認

/dump

3、 Kdump服務相關包的安裝確認

  • busybox
  • kexec-tools
  • kernel-debuginfo
  • kernel-debuginfo-common
  • kernel-devel
  • FJSVdumptools   (只有RHEL6系列上測試kdump時需要安裝)

4、kernel信息的設置

需要在/etc/sysctl.conf文件中,做如下修改:

kernel.sysrq = 1

kernel.panic_on_oops = 1

kernel.panic = 1

kernel.panic_on_unrecovered_nmi = 1 *

kernel.unknown_nmi_panic = 1 *

注意:在IA64上設置時,不要設置*標記的兩項。

5、kdump配置文件的設置

在文件/etc/kdump.conf中,做一下設置:

ext3 LABEL=/dump

path /

core_collector makedumpfile

default reboot

注:①dump采集區域中定義/dump和標簽,並將該標簽定義為dump退避域。

      ②采集dump后的動作指定為reboot。采集dump后的動作只能是重啟系統。

6、kdump服務的設置

設置kdump開機啟動,通過以下命令設置:

# chkconfig kdump on

設置結果確認,通過以下命令確認:

# chkconfig --list kdump

kdump 0:off 1:off 2:on 3:on 4:on 5:on 6:off

7、grub的相關配置

x86和x64上設置文件/etc/grub.conf(即/boot/grub/grub.conf文件),ia64上設置文件/etc/efi/efi/redhat/elilo.conf,對文件中系統啟動項對應的kernel參數進行如下設置:

kernel ・・・nmi_watchdog=0 crashkernel=128M@16M  ①

注:

①在RHEL5系列的系統中,指定格式為“128M@16M”(在RHEL6系中由於存在BUG,格式只能為128M)。其中128M表示分配給kdump使用的內存大小,16M表示所分配內存在物理內存中的起點。

Kdump保留內存大小 = 128MB + (LUN數x80KB + )CPU數x1.2MB

8、重啟系統,查看Kdump服務是否成功

# service kdump status

Kdump is operational

9、測試,通過sysrq強制系統崩潰,方法如下:

# echo “c” > /proc/sysrq-trigger

這造成kernel panic,緊跟着系統重啟kdump內核。當啟動進程進入到啟動kdump服務器時,vmcore將會被拷貝到你所設定的退避去的位置。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM