kdump 是一種先進的基於 kexec 的內核崩潰轉儲機制。當系統崩潰時,kdump 使用 kexec 啓動到第二個內核。第二個內核通常叫做捕獲內核,以很小內存啓動以捕獲轉儲鏡像。第一個內核保留了內存的一部分給第二內核啓動用。由於 kdump 利用 kexec 啓動捕獲內核,繞過了 BIOS,所以第一個內核的內存得以保留。這是內核崩潰轉儲的本質。
測試操作系統:suse10 SP3
1、安裝kdump所需要的rpm包
——所需要的包在操作系統盤中都可以找到,無需到處下載
部署kdump工具,需要安裝三個rpm包,分別是kernel-kdump-2.6.16.60-0.54.5.x86_64.rpm、kdump-0.3.0-8.14.x86_64.rpm、kexec-tools-1.101-32.54.10.x86_64.rpm ,依順序安裝即可,其中需要注意kdump包和kexec-tools互爲依賴關係,在安裝時需要同時制定他們兩個包,如下:
2、測試rpm包是否正確安裝
執行 rckdump status 或者 service kdump status,如果出現“kdump kernel not loaded”則表示安裝成功:
3、爲kdump預留內存空間
在配置預留空間內存時,可以參考以下表格:
suse 10 系統X86和X86_64結構,參考以下配置預留表格
Memory |
crashkernel= |
0 - 12 GB |
64M@16M |
13 - 48 GB |
128M@16M |
49 - 128 GB |
256M@16M |
129 - 256 GB |
512M@16M |
如果是suse11 系統X86和X86_64結構,參考以下配置預留表格
Memory |
crashkernel= |
0 - 12 GB |
64M |
13 - 48 GB |
128M |
49 - 128 GB |
256M |
129 - 256 GB |
512M |
3、修改/boot/grub/menu.lst文件
在/boot/grub/menu.lst文件中找到resume=/dev/system/swap splash=silent showopts這行,然後在本行末尾增加:crashkernel=64M@16M
注:本機內存爲2G,因此crashkernel=64M@16M,實際情況請參考上面的表格。
本部分設置也可以使用suse自帶的圖形化工具yast,只需要點點鼠標即可,連預留空間都不要輸入,我就不贅述了。
4、配置kdump開機自啓動
執行命令:chkconfig kdump on
至此kdump的部署工作已經完成,我們需要重啓服務器 讓配置生效,執行reboot。
5、確認kdump配置是否成功。
執行 rckdump status
顯示kdump配置成功。
6、kdump的測試
kdump主要就是用來當系統出現內部錯誤時,可以自動轉儲錯誤信息,並自動完成服務器重啓,我們測試一下:
執行一下兩條命令:
1)sync
2)echo c >/proc/sysrq-trigger -----“c”必須小寫
執行完第二條命令,系統將會進入死機狀態,然後服務器會自動重啓。
重啓完成後,我們去dump目錄查看是否已經正確生成轉儲文件。
轉儲的文件位置:/var/log/dump
轉儲目錄正確生成,kdump配置成功。
博文最下面的附件是suse關於kdump官方文檔描述,可以下載下載下來看看。
另有關於kdump的系統介紹,大家可以去了解:
http://www.ibm.com/developerworks/cn/linux/l-cn-kdump1/