linux6下kdump的配置

linux6下kdump的配置


背景知識:

 kexec是一個快速啓動機制,允許通過已經運行的內核的上下文啓動一個Linux內核,不需要經過BIOS。BIOS可能會消耗很多時間,特別是帶有衆多數量的外設的大型服務器。這種辦法可以爲經常啓動機器的開發者節省很多時間。

    kdump 是一個新的,而且非常可信賴的內核崩潰轉儲機制。崩潰轉儲數據可以從一個新啓動的內核的上下文中獲取,而不是從已經崩潰的內核的上下文。當系統崩潰 時,kdump使用kexec啓動到第二個內核。第二個內核通常叫做捕獲內核(capture kernel),以很小內存啓動,並且捕獲轉儲鏡像。

    第一個內核保留了內存的一部分,第二個內核可以用來啓動。注意,在啓動時,kdump保留了一定數量的重要的內存,這改變了紅帽企業Linux 5最小內存需求。

常見問題:
(1)如果服務器經常死機(coredump),但是由苦於沒有輸出信息可以分析,可以嘗試一下Linux自帶的kdump。kdump會在系統內核崩潰時,啓動第二個內核來記錄當前內存信息。

(2)kdump經常是在系統安裝過程中進行設置的,但如果是操作系統安裝完成後,kdump的值需要更改。這種情況重裝操作系統是很浪費時間的。

解決方法:

方法一:

  1. 安裝kexec-tools

    通過命令rpm -q kexec-tools查看該工具是否安裝,沒有則安裝(yum install kexec-tools*)

  2. 配置kdump使用的內存大小

    編輯grub.conf文件,在kernel一行最後加上crashkernel=128M@16M,如:
    title Red Hat Enterprise Linux Server (2.6.18-128.el5)
     root (hd0,2)
     kernel /vmlinuz-2.6.18-128.el5 ro root=/dev/lvg/lvsysroot rhgb quiet crashkernel=128M@16M
     initrd /initrd-2.6.18-128.el5.img

    修改之後,重啓系統。128M內存(從16M開始)不被正常的系統使用,爲捕獲內核保留。注意,free -m的輸出會顯示內存比不加參數時少了128M,這就是我們所期望的。

    說明:可以使用小於128M,但是隻使用64M做測試被證實是不可靠的。(我設置的是128M)

  3. 指定vmcore將被轉儲的路徑

    配置/etc/kdump.conf文件,指定vmcore將被轉儲的路徑。可以通過scp拷貝到另一個服務器,也可以是裸設備,或者本地的文件系統。如下圖帶顏色所示,即爲轉儲路徑:

    wKiom1mkITTSssoFAAALboTS0uE467.png

  4. 配置和啓動服務

    # chkconfig kdump on
    # service kdump start

    說明: 這個時候啓動肯定會失敗的,因爲內存已經被使用完。重啓服務器(reboot)即可,core文件默認記錄在/var/crash目錄中。

  5. 測試

    輸入echo "c">/proc/sysrq-trigger,界面會出現一些信息,類似下面一樣:

    wKioL1mkJk_Rc07qAAD6KglvP44076.png

    過一會系統就會自動重啓,這個時候就說明你的kdump已經配置成功了,重啓之後/var/crash目錄下就可以看到有一個文件夾,文件夾的名字是日期,裏面就是你需要的core文件。


方法二:

通過命令system-config-kdump來配置(如果沒有該命令,可能是相應工具沒有安裝)。 kdump也支持傳輸到另一個服務器,也可以存儲到裸設備。

安裝system-config-kdump命令:

 yum install setuptool

 yum install -y system-config-kdump.noarch

更多信息,請訪問這裏:http://www.dedoimedo.com/computers/kdump.html
system-config-kdump

或者是這樣的:

wKiom1mkJKOAUxXVAAQQjWJYd4M755.png

說明:在界面中先點擊reload按鈕,然後再點擊“apply”讓配置生效,重啓系統。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章