一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

Linux|Centos|Ubuntu|系統(tǒng)進(jìn)程|Fedora|注冊(cè)表|Bios|Solaris|Windows7|Windows10|Windows11|windows server|

服務(wù)器之家 - 服務(wù)器系統(tǒng) - Ubuntu - 在Ubuntu系統(tǒng)上安裝Kdump來(lái)處理系統(tǒng)崩潰

在Ubuntu系統(tǒng)上安裝Kdump來(lái)處理系統(tǒng)崩潰

2019-06-14 11:43China_OS服務(wù)器之家 Ubuntu

這篇文章主要介紹了在Ubuntu系統(tǒng)上安裝Kdump來(lái)處理系統(tǒng)崩潰的方法,Kdump基于kexec的內(nèi)核崩潰轉(zhuǎn)儲(chǔ)機(jī)制,需要的朋友可以參考下

什么是Kdump?

Kdump 是一種的新的crash dump捕獲機(jī)制,用來(lái)捕獲kernel crash時(shí)候產(chǎn)生的crash dump。Kdump需要配置兩個(gè)不同目的的kernel,其中一個(gè)我們?cè)谶@里稱作standard(production) kernel;另外一個(gè)稱之為Crash(capture)kernel。

standard(production)kernel,是指我正在使用的kernel,當(dāng)standard kernel在使用的過(guò)程中出現(xiàn)crash的時(shí)候, kdump會(huì)切換到crash kernel, 簡(jiǎn)單來(lái)說(shuō),standard kernel會(huì)正運(yùn)行時(shí)發(fā)生crash,而crash(capture) Kernel 會(huì)被用來(lái)捕獲production kernel crash時(shí)候產(chǎn)生的crash dump。

捕獲crash dump是在新的crash(capture) kernel 的上下文中來(lái)捕獲的,而不是在standard kernel上下文進(jìn)行。

具體是當(dāng)standard kernel方式crash的時(shí)候,kdump通過(guò)kexec(后面介紹)自動(dòng)啟動(dòng)進(jìn)入到crash kernel當(dāng)中。如果啟動(dòng)了kdump服務(wù),standard kernel會(huì)預(yù)留一部分內(nèi)存, 這部分內(nèi)存用來(lái)啟動(dòng)crash kernel。

kdump機(jī)制主要包括兩個(gè)組件:kdump和kexec

    kexec是一個(gè)快速啟動(dòng)機(jī)制,允許通過(guò)已經(jīng)運(yùn)行的內(nèi)核的上下文啟動(dòng)一個(gè)Linux內(nèi)核,不需要經(jīng)過(guò)BIOS。BIOS可能會(huì)消耗很多時(shí)間,特別是帶有眾多數(shù)量的外設(shè)的大型服務(wù)器。這種辦法可以為經(jīng)常啟動(dòng)機(jī)器的開(kāi)發(fā)者節(jié)省很多時(shí)間。Kexec是實(shí)現(xiàn)kdump機(jī)制的關(guān)鍵,它包括2個(gè)組成部分:一是內(nèi)核空間的系統(tǒng)調(diào)用kexec_load,負(fù)責(zé)在生產(chǎn)內(nèi)核(production kernel 或 first kernel)啟動(dòng)時(shí)將捕獲內(nèi)核(capture kernel或sencond kernel)加載到指定地址。二是用戶空間的工具kexec-tools,他將捕獲內(nèi)核的地址傳遞給生產(chǎn)內(nèi)核,從而在系統(tǒng)崩潰的時(shí)候能夠找到捕獲內(nèi)核的地址并運(yùn)行。沒(méi)有kexec就沒(méi)有kdump。先有kexec實(shí)現(xiàn)了在一個(gè)內(nèi)核中可以啟動(dòng)另一個(gè)內(nèi)核,才讓kdump有了用武之地。

    kdump是一種先進(jìn)的基于kexec的內(nèi)核崩潰轉(zhuǎn)儲(chǔ)機(jī)制。當(dāng)系統(tǒng)崩潰時(shí),kdump使用kexec 啟動(dòng)到第二個(gè)內(nèi)核。第二個(gè)內(nèi)核通常叫做捕獲內(nèi)核,以很小內(nèi)存啟動(dòng)以捕獲轉(zhuǎn)儲(chǔ)鏡像。第一個(gè)內(nèi)核保留了內(nèi)存的一部分給第二內(nèi)核啟動(dòng)用。由于kdump利用kexec啟動(dòng)捕獲內(nèi)核,繞過(guò)了 BIOS,所以第一個(gè)內(nèi)核的內(nèi)存得以保留。這是內(nèi)核崩潰轉(zhuǎn)儲(chǔ)的本質(zhì)。kdump需要兩個(gè)不同目的的內(nèi)核,生產(chǎn)內(nèi)核和捕獲內(nèi)核。生產(chǎn)內(nèi)核是捕獲內(nèi)核服務(wù)的對(duì)像。捕獲內(nèi)核會(huì)在生產(chǎn)內(nèi)核崩潰時(shí)啟動(dòng)起來(lái),與相應(yīng)的ramdisk一起組建一個(gè)微環(huán)境,用以對(duì)生產(chǎn)內(nèi)核下的內(nèi)存進(jìn)行收集和轉(zhuǎn)存。注意,在啟動(dòng)時(shí),kdump保留了一定數(shù)量的重要的內(nèi)存,為了計(jì)算系統(tǒng)需要的真正最小內(nèi)存,加上kdump使用的內(nèi)存數(shù)量,以決定真正的最小內(nèi)存的需求。

kexec和kdump的設(shè)計(jì)區(qū)別:

在Ubuntu系統(tǒng)上安裝Kdump來(lái)處理系統(tǒng)崩潰

Kexec的設(shè)計(jì)是用新內(nèi)核去覆蓋原內(nèi)核位置;而KDUMP是預(yù)留一塊內(nèi)存來(lái)加載第二個(gè)內(nèi)核(和相關(guān)數(shù)據(jù)),Crash后第二個(gè)內(nèi)核在原位置運(yùn)行(不然就達(dá)不到相關(guān)目的了),收集第一個(gè)內(nèi)核的相關(guān)內(nèi)存信息。

下面開(kāi)始試驗(yàn)kdump特性:

  操作系統(tǒng):ubuntu 12.10(3.5.0-17-generic)

安裝kdump工具
 

復(fù)制代碼
代碼如下:

apt-get install kexec-tools crash

  發(fā)現(xiàn)安裝過(guò)程中修改了grub,在引導(dǎo)內(nèi)核配置上(/boot/grub/grub.cfg)多了如下參數(shù)

復(fù)制代碼
代碼如下:

crashker nel=384M-2G:64M,2G-:128M

  crashkernel用來(lái)指定保留內(nèi)存的大小,我們可以知道crashkernel幫我們?cè)O(shè)定的保留區(qū)域的大小是:如果內(nèi)存小于384M,不保留內(nèi)存;如果內(nèi)存大于等于384M但小于2G,保留64M;如果內(nèi)存大于2G,保留128M。 
修改kdump配置文件(/etc/default/kdump-tools)

復(fù)制代碼
代碼如下:

USE_KDUMP=1

下載dbgsym文件,改文件是用來(lái)吊事內(nèi)核信息的文件

復(fù)制代碼
代碼如下:

wagt 'http://ddebs.ubuntu.com/pool/main/l/linux/linux-image-3.5.0-17-generic-dbgsym_3.5.0-17.28_amd64.ddeb'

dpkg -i linux-image-3.5.0-17-generic-dbgsym_3.5.0-17.28_amd64.ddeb

  重啟機(jī)器使配置生效。
啟動(dòng)kdump-tools

復(fù)制代碼
代碼如下:

/etc/init.d/kdump-tools start
Starting kdump-tools: setup_linux_vesafb: 1280x1024x32 @ d9800000 +500000
* loaded kdump kernel

kdump-tools配置(kdump-config show):

復(fù)制代碼
代碼如下:

USE_KDUMP: 1
KDUMP_SYSCTL: kernel.panic_on_oops=1
KDUMP_COREDIR: /var/crash
crashkernel addr: 0x2e000000
current state: ready to kdump

kernel link: 
/usr/lib/debug/boot/vmlinux-3.5.0-17-generic

kexec command:
/sbin/kexec -p --command-line="BOOT_IMAGE=/boot/vmlinuz-3.5.0-17-generic root=UUID=9386113e-a6db-4a1c-9565-8c8c1de4a55a ro irqpoll maxcpus=1 nousb" --initrd=/boot/initrd.img-3.5.0-17-generic /boot/vmlinuz-3.5.0-17-generic

可以通過(guò)sysrq強(qiáng)制系統(tǒng)崩潰。 

復(fù)制代碼
代碼如下:

echo ‘c’ > /proc/sysrq-trigger

    這造成內(nèi)核崩潰,如配置有效,系統(tǒng)將重啟進(jìn)入kdump內(nèi)核,當(dāng)系統(tǒng)進(jìn)程進(jìn)入到啟動(dòng) kdump服務(wù)的點(diǎn)時(shí),(dump.時(shí)間戳文件)將會(huì)拷貝到你在kdump配置文件中設(shè)置的位置。ubuntu的缺省目錄是:/var/crash/時(shí)間戳文件夾。然后系統(tǒng)重啟進(jìn)入到正常的內(nèi)核。一旦回復(fù)到正常的內(nèi)核,就可以在上述的目錄下發(fā)現(xiàn)dump文件,即內(nèi)存轉(zhuǎn)儲(chǔ)文件。可以使用之前安裝的crash工具來(lái)進(jìn)行分析。

 

生成dump文件后/var/crash的目錄結(jié)構(gòu):

├── 201305061817
│   ├── config_link -> /boot/config-3.5.0-17-generic
│   ├── dump.201305061817
│   ├── kernel_link -> /usr/lib/debug/boot/vmlinux-3.5.0-17-generic
│   └── system.map_link -> /boot/System.map-3.5.0-17-generic
├── config_link -> /boot/config-3.5.0-17-generic
├── kernel_link -> /usr/lib/debug/boot/vmlinux-3.5.0-17-generic
├── kexec_cmd
└── system.map_link -> /boot/System.map-3.5.0-17-generic
  ump.201305061817就是生成的dump文件,后面的一串?dāng)?shù)字誒當(dāng)時(shí)的時(shí)間戳。 
接下來(lái)用crash進(jìn)行分析
 

復(fù)制代碼
代碼如下:

crash /usr/lib/debug/boot/vmlinux-3.5.0-17-generic dump.201305061817

出現(xiàn)如下錯(cuò)誤提示: crash: cannot resolve: "xtime",此時(shí)crash的版本為5.1.6,版本太低,調(diào)試不了3.5的內(nèi)核,需要升級(jí)crash,可以手動(dòng)安裝crash。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 欧美一区二区三区精品国产 | 亚洲好色网 | 亚洲精品国产国语 | 日本欧美大码a在线视频播放 | 俄罗斯美女毛茸茸bbwbbw | 8x8x丝袜美女 | 好大好猛好爽好深视频免费 | 波多野结衣家庭教师 | 91麻豆影视| 亚洲国产精品无码中文在线 | 国产精品va在线观看不 | 午夜私人影院在线观看 视频 | 精品国产乱码久久久久久免费流畅 | 91精品国产高清久久久久久 | 日日操美女 | 精品国产国产精2020久久日 | 午夜爱 | 青草视频网站 | 日日免费视频 | 免费在线观看伦理片 | 继的朋友无遮漫画免费观看73 | 女班长的放荡日记高h | beeg日本高清xxxx18 | 亚洲精品久久久WWW游戏好玩 | 国产精品亚洲精品日韩已方 | 国产成+人+综合+亚洲欧美丁香花 | 亚洲天堂导航 | 国产综合亚洲专区在线 | 亚洲国产成人久久综合一区77 | 高清不卡免费一区二区三区 | 国产午夜免费视频 | 无耻三级在线观看 | 色多多在线视频 | 色女的乖男人 | 女高h| 午夜宅男宅女看在线观看 | 精精国产www视频在线观看免费 | 黑人chinese女人 | 逼逼爱| 天天狠天天透天干天天怕处 | 午夜欧美精品久久久久久久久 |