kdump簡單的介紹


    kdump是2.6.16之后,內核引入的一種新的內核崩潰現場信息收集工具。當一個內核崩潰后(我們稱之為panic),內核會使用kexec(類似於進程的exec,把當前內核換掉)進入到一個干凈的備份內核(只使用少量內存,由第一個內核預留放在一塊內存中),干凈的內核啟動后,仍舊是用戶態服務初始化,這時會使用kdump工具會從內核讀出需要的信息,再寫到磁盤上的一個vmcore的文件中。之后就可以使用crash工具來分析vmcore文件了(就像gdb分析用戶態崩潰現場core文件一樣)。

    當系統崩潰時,kdump 使用 kexec 啟動到第二個內核。第二個內核通常叫做捕獲內核,以很小內存啟動以捕獲轉儲鏡像。第一個內核保留了內存的一部分給第二內核啟動用。由於 kdump 利用 kexec 啟動捕獲內核,繞過了 BIOS,所以第一個內核的內存得以保留。這是內核崩潰轉儲的本質。kdump 需要兩個不同目的的內核,生產內核和捕獲內核。生產內核是捕獲內核服務的對像。捕獲內核會在生產內核崩潰時啟動起來,與相應的 ramdisk 一起組建一個微環境,用以對生產內核下的內存進行收集和轉存。

    kdump配置文件存放在/etc/kdump.conf 配置文件中配置了一些相關信息,包括系統崩潰時,dump的路徑,默認情況下是放在/var/crash目錄下面。可以通過sysrq強制讓系統產生一個vmcore。

echo c > /proc/sysrq-trigger

    這造成內核崩潰,如配置有效,系統將重啟進入 kdump 內核,當系統進程進入到啟動 kdump 服務的點時,vmcore 將會拷貝到你在 kdump 配置文件中設置的位置。RHEL 的缺省目錄是 : /var/crash;SLES 的缺省目錄是 : /var/log/dump。然后系統重啟進入到正常的內核。一旦回復到正常的內核,就可以在上述的目錄下發現 vmcore 文件,即內存轉儲文件。可以使用之前安裝的 kernel-debuginfo 中的 crash 工具來進行分析。


免責聲明!

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



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