CentOS7配置kdump
阿新 • • 發佈:2020-12-14
CentOS7配置kdump
簡單生活,簡單愛2020-10-27 16:29:5656收藏1 分類專欄:Linux實際開發總結 版權文章目錄
1.kdump簡介
-
kexec是一個快速啟動機制,允許通過已經執行的核心的上下文啟動一個Linux核心,不需要經過BIOS。BIOS可能會消耗很多時間,特別是帶有眾多數量的外設的大型伺服器。這種辦法可以為經常啟動機器的開發者節省很多時間。
-
kdump是一個新的,而且非常可信賴的核心崩潰轉儲機制。崩潰轉儲資料可以從一個新啟動的核心的上下文中獲取,而不是從已經崩潰的核心的上下文。當系統崩潰時,kdump使用kexec啟動到第二個核心。第二個核心通常叫做捕獲核心(capture kernel),以很小記憶體啟動,並且捕獲轉儲映象。
-
第一個核心保留了記憶體的一部分,第二個核心可以用來啟動。注意,在啟動時,kdump保留了一定數量的重要的記憶體,這改變了紅帽企業Linux 5最小記憶體需求。為了計算系統需要的真正最小記憶體,可以參看 http://www.RedHat.com/rhel/details/limits/ 上列出的最小記憶體需求,加上kdump使用的記憶體數量,以決定真正的最小記憶體的需求。
-
因為第一個核心的記憶體內容已經被保留,所以kexec可以不經過BIOS,啟動捕獲核心。這是核心崩潰轉儲的根本。
2.配置kdump
- (1)安裝kexec-tools:使用kdump服務,必須要用到kexec-tools工具包。
sudo yum update
sudo yum install kexec-tools
安裝完成之後可以通過kexec -version檢視kexec的版本。
- 1
- 2
- 3
- 4
- (2)配置kdump kernel,也可以不配置
1.修改grub檔案
vim /etc/default/grub
需要將GRUB_CMDLINE_LINUX="crashkernel=auto..."中的auto修改為128M。一般設為128M或256M。
2.更新grub配置
只要更改了grub檔案,都需要更改grub配置。
sudo grub2-mkconfig -o /boot/grub2/grub.cfg
3.重啟系統
reboot
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- (3)修改kdump預設配置,也可以不配置
vim /etc/kdump.conf
其中,需要注意的三行內容是
path /var/crash #指定coredump檔案放在/var/crash資料夾中
core_collector makedumpfile -c -l -message-level 1 -d 31 #加上-c表示壓縮,原檔案中沒有
default reboot #生成coredump後,重啟系統
- 1
- 2
- 3
- 4
- 5
- 6
- (4)開啟kdump服務
systemctl start kdump.service //啟動kdump
systemctl enable kdump.service //設定開機啟動
檢查kdump開啟成功
service kdump status
- 1
- 2
- 3
- 4
- 5
如下所示,表示開啟成功
- (5)手動觸發crash
#echo 1 > /proc/sys/kernel/sysrq
#echo c > /proc/sysrq-trigger
- 1
- 2
如果配置成功,系統將自動重啟,重新進入系統,可以看到/var/crash資料夾下生成了相應檔案,是一個以生成coredump日期為檔名的檔案,如圖所示:
開啟dmesg檔案可以看到核心轉儲內容於你觸發crash的內容是對的上的
[1212551.621023] __handle_sysrq.cold.9+0x45/0xec
[1212551.621491] write_sysrq_trigger+0x2b/0x30
[1212551.621959] proc_reg_write+0x3c/0x60
[1212551.622426] vfs_write+0xa5/0x1a0
[1212551.622889] ksys_write+0x4f/0xb0
[1212551.623369] do_syscall_64+0x5b/0x1b0
[1212551.623835] entry_SYSCALL_64_after_hwframe+0x65/0xca
- 1
- 2
- 3
- 4
- 5
- 6
- 7