kdump

本頁使用了標題或全文手工轉換
維基百科,自由的百科全書

kdumpLinux內核的一個功能,可在發生內核錯誤時建立核心轉儲。當被觸發時,kdump會匯出一個內存映像(也稱為vmcore),該映像可用於除錯和確定崩潰的原因。 主內存的轉儲映像作為可執行與可連結格式(ELF)對象匯出,可以在處理內核崩潰時通過/proc/vmcore直接訪問,也可以自動儲存到本地可訪問的檔案系統、 裸裝置或通過網絡訪問的遠端系統。[1][2]

內部[編輯]

一個「雙核」佈局,kdump使用kexec來啟動另一個內核並獲得內存轉儲。:10

在內核崩潰的情況下,kdump通過引導另一個Linux內核(稱為轉儲擷取內核)並使用它來匯出和儲存內存轉儲來保持系統一致性。因此,系統將會啟動到一個乾淨、可靠的環境,而不是依賴已經崩潰的內核,(繼續使用已崩潰的內核)這可能會導致各種問題,例如在寫入內存轉儲檔案時導致檔案系統損壞。為了實現這個「雙內核」佈局,kdump在內核崩潰後立即使用kexec引導到轉儲擷取內核,使用kexec引導「覆蓋」當前執行的內核,同時避免執行bootloader和硬件初始化系統韌體(BIOSUEFI)。轉儲擷取內核可以是專門為此目的而構建的單獨的Linux內核映像,也可以在支援可重定位內核的系統架構上重用主內核映像。[1][3][4][5]:5–6

通過預先保留少量RAM來引導並執行轉儲擷取內核時,主內存(RAM)的內容得以保留,轉儲擷取內核預先載入到此內存中,因此主內核使用的RAM都不是在處理內核崩潰時被覆蓋。這些保留的RAM僅由轉儲擷取內核使用,在正常系統操作期間未被使用。某些架構(包括x86ppc64)需要RAM的一個小的固定位置部分來引導內核,而不管它在哪裏載入;在這種情況下,kexec會建立該部分RAM的副本,以便轉儲擷取內核也可以訪問它。RAM保留部分的大小和可選位置通過內核啟動參數crashkernel指定,並且在主內核啟動之後使用kexec控制台應用程式來將轉儲擷取內核映像及其關聯的initrd映像預載入到保留部分的RAM。[1][3][4]

除了作為Linux內核一部分的功能外,其他用戶空間實用程式也支援kdump機制,包括上述的kexec實用程式。 除了作為kexec用戶空間實用程式套件的修補程式提供的官方實用程式外,某些Linux發行版還提供了其他實用程式,可簡化kdump操作的組態,包括自動儲存內存轉儲檔案的設置。[6][7][8] 可以使用GNU Debugger(gdb)或Red Hat的專用崩潰實用程式分析建立的內存轉儲檔案。[9][10]

歷史[編輯]

kdump功能與kexec一起被合併到內核版本2.6.13的Linux內核主線中,該版本於2005年8月29日發佈 [11]

參見[編輯]

  • debugfs英語debugfs – Linux一個專門為除錯目的而設計的基於RAM的檔案系統
  • kdump (BSD)英語kdump (BSD) – 用於檢視由ktrace實用程式生成的跟蹤檔案的BSD實用程式
  • Linux內核oops – 一個潛在的非致命性偏離正確的行為Linux內核

參考文獻[編輯]

  1. ^ 1.0 1.1 1.2 Jonathan Corbet. Crash dumps with kexec. LWN.net. October 27, 2004 [August 9, 2014]. (原始內容存檔於2020-04-01). 
  2. ^ 13.2 About Kdump (Chapter 13: Support Diagnostic Tools). Oracle Corporation. 2012 [August 9, 2014]. (原始內容存檔於2019-04-22). 
  3. ^ 3.0 3.1 Vivek Goyal; Eric W. Biederman; Hariprasad Nellitheertha. Kdump: A Kexec-based Kernel Crash Dumping Mechanism (PDF). lse.sourceforge.net. June 14, 2006 [August 9, 2014]. (原始內容存檔 (PDF)於2017-08-22). 
  4. ^ 4.0 4.1 Linux kernel documentation: Documentation/kdump/kdump.txt. kernel.org. August 12, 2013 [August 9, 2014]. (原始內容存檔於2020-08-06). 
  5. ^ Takashi Iwai. Debugging using Kdump (PDF). SUSE. July 26, 2006 [August 9, 2014]. (原始內容存檔 (PDF)於2016-11-30). 
  6. ^ 29.2.2. Using the Kernel Dump Configuration Utility (Red Hat Enterprise Linux 6 Deployment Guide). Red Hat. [August 9, 2014]. (原始內容存檔於2017-07-05). 
  7. ^ kexec and kdump: Basic kdump Configuration (System Analysis and Tuning Guide). SUSE. April 25, 2014 [August 9, 2014]. (原始內容存檔於2016-03-04). 
  8. ^ How to use kdump to debug kernel crashes. Fedora. April 9, 2014 [August 9, 2014]. (原始內容存檔於2020-11-12). 
  9. ^ David Anderson. White Paper: Red Hat Crash Utility. Red Hat. August 27, 2010 [August 9, 2014]. (原始內容存檔於2018-12-10). 
  10. ^ kexec and kdump: Analyzing the Crash Dump (System Analysis and Tuning Guide). SUSE. April 25, 2014 [August 9, 2014]. (原始內容存檔於2016-03-04). 
  11. ^ Linux kernel 2.6.13. August 29, 2005 [August 9, 2014]. (原始內容存檔於2020-10-19). 

外部連結[編輯]