【Linux知識積累】 CentOS開啟Kdump的方法


Linux內核崩潰轉存機制

kdump概念:
    當系統崩潰時,kdump 使用 kexec 啟動到第二個內核,第二個內核通常叫做捕獲內核,以很小內存啟動以捕獲轉儲鏡像。第一個內核保留了內存的一部分給第二內核啟動用。由於 kdump 利用 kexec 啟動捕獲內核,繞過了 BIOS,所以第一個內核的內存得以保留。這是內核崩潰轉儲的本質。
    繼續學習:https://link.jianshu.com?t=http://www.ibm.com/developerworks/cn/linux/l-cn-kdump1/index.html#major3

kdump正常運行的條件:
    1. 系統中開啟kdump服務
    2. 啟動文件配置中,合理分配了崩潰內存容量
    
檢查系統中kdump狀態的方法:
    CentOS6:    service kdump status
    CentOS7:    systemctl status kdump.service
    
開啟系統中kdump的方法:
    1. Centos6.x操作說明:
        (1) grub修改預留內存
            a. 切換至root用戶
            b. vi /etc/grub.conf
            c. 找到title 條目后我們要使用的系統及內核項
            d. 找到條目中kernel配置項下的“crashkernel=????”字段(如果沒有則手動添加)
            e. 將=????修改為合適的大小
                可選大小:
                    crashkernel=128M:
                    crashkernel=256M:     建議值
                    crashkernel=512M:
                    crashkernel=auto:     如果系統的內存 <= 8 GB 對kdump kernel不會保留任何內容(等同於關閉kdump),如果系統的內存> 8 GB但是<= 16 GB,crashkernel=auto會保留256M,等同於crashkernel=256M,如果系統內存> 16GB, crashkernel=auto會保留512M, 等同於crashkernel=512M.
            f. 保存文件后退出
        (2) 開啟kdump服務
            a. 設置開機啟動:    chkconfig kdump on
            b. 啟動kdump:         service kdump start
            c. 查看dkump狀態:    service kdump status
        (3) 檢查
            a. 重新啟動系統
            b. 查看dkump狀態:    service kdump status
            c. 檢查grub:        cat /proc/cmdline 內容與步驟1中修改的內容相同即為操作成功
        (4) 測試
            a. 查看log目錄內容:    ls /var/crash/
            b. 觸發系統崩潰:    echo c > /proc/sysrq-trigger
                                此時系統崩潰,進行轉儲,轉儲后系統自動重啟
            c. 查看是否生成新的崩潰文件,同步驟a,有新文件生成則kdump運行正常
    
    2. Centos7.x操作說明:
        (1) grub修改預留內存
            a. 切換至root用戶
            b. vi /etc/default/grub
            c. 找到GRUB_CMDLINE_LINUX項
            d. 將配置項中的“crashkernel=????”字段(如果沒有則手動添加)
            e. 將=????修改為合適的大小
                可選大小:
                    crashkernel=128M:
                    crashkernel=256M:     建議值
                    crashkernel=512M:
                    crashkernel=auto:     如果系統的內存 <= 8 GB 對kdump kernel不會保留任何內容(等同於關閉kdump),如果系統的內存> 8 GB但是<= 16 GB,crashkernel=auto會保留256M,等同於crashkernel=256M,如果系統內存> 16GB, crashkernel=auto會保留512M, 等同於crashkernel=512M.
            f. 保存文件后退出
            g. 執行命令:    grub2-mkconfig -o /boot/grub2/grub.cfg
            h. 再執行命令:    grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg
            (g和h為冗余項,分別對應不同的系統安裝方式,這里為了簡化操作,所以全部執行)
        (2) 開啟kdump服務
            a. 啟動kdump:         systemctl start kdump.service
            b. 設置開機啟動:    systemctl enable kdump.service
            c. 查看dkump狀態:    systemctl status kdump.service
        (3) 檢查
            a. 重新啟動系統
            b. 查看dkump狀態:    systemctl status kdump.service
            c. 檢查grub:        cat /proc/cmdline 內容與步驟1中修改的內容相同即為操作成功
        (4) 測試
            a. 查看log目錄內容:    ls /var/crash/
            b. 觸發系統崩潰:    echo c > /proc/sysrq-trigger
                                此時系統崩潰,進行轉儲,轉儲后系統自動重啟
            c. 查看是否生成新的崩潰文件,同步驟a,有新文件生成則kdump運行正常

修改kdump默認配置:
    vim /etc/kdump.conf
        coredump文件目錄                path /var/crash
        加上-c表示壓縮,原文件中沒有    core_collector makedumpfile -c -l -message-level 1 -d 31
        生成coredump后,重啟系統        default reboot
        
        
        echo 1 > /proc/sys/kernel/sysrq
        echo c > /proc/sysrq-trigger


免責聲明!

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



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