kdump是一個用於Linux系統在崩潰、死鎖或當機時轉儲記憶體運行參數的工具和服務。它基於kexec快速啟動工具,允許在正在運行的核心(生產核心)崩潰時,通過kexec快速啟動到一個新的核心(捕獲核心),並在新的核心中轉儲崩潰時的記憶體鏡像。以下是kdump的詳細介紹:
工作原理:kdump使用兩個核心:生產核心和捕獲核心。生產核心是一個普通核心,它使用特殊的kdump特定標誌啟動,並保留一部分物理記憶體用於載入捕獲核心。捕獲核心在生產核心崩潰時啟動,與相應的ramdisk一起組建一個微環境,用以對生產核心下的記憶體進行收集和轉存。
記憶體預留:在系統核心啟動時,需要給捕獲核心預留一塊記憶體空間。這個預留空間的大小可以自己設定,但必須確保是連續的,且物理地址低於4GB(SLES12無此要求)。
檔案生成:捕獲核心啟動後,會執行makedumpfile命令對記憶體數據進行挑選和壓縮,生成vmcore檔案並將其保留在磁碟中。vmcore檔案是分析系統崩潰原因的重要手段。
安裝與配置:要使用kdump,需要安裝kernel-debuginfo-common-$(uname -r)包,以及kernel-debuginfo包。安裝這些包後,可以通過gdb等調試工具分析vmcore檔案。
以上是kdump的基本介紹,希望對你有所幫助。