一種Kdump的配置方法及計算機(jī)設(shè)備的制造方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及操作系統(tǒng)技術(shù)領(lǐng)域,尤其涉及一種Kdump的配置方法及計算機(jī)設(shè)備。
【背景技術(shù)】
[0002] 隨著科學(xué)技術(shù)的發(fā)展,計算機(jī)設(shè)備被廣泛的應(yīng)用。由于計算機(jī)設(shè)備中可能存在的 系統(tǒng)問題,導(dǎo)致計算機(jī)設(shè)備可能出現(xiàn)系統(tǒng)崩潰、死鎖或者死機(jī)的情況。此時需要在計算機(jī)設(shè) 備發(fā)生系統(tǒng)崩潰、死鎖或者死機(jī)時,捕獲系統(tǒng)的內(nèi)存等信息,將捕獲的信息進(jìn)行存儲,以便 后續(xù)進(jìn)行問題分析時使用。Kdump是較為可靠的內(nèi)核轉(zhuǎn)存機(jī)制,如何在Linux系統(tǒng)中進(jìn)行 Kdump的配置,進(jìn)而在計算機(jī)設(shè)備出現(xiàn)系統(tǒng)崩潰、死鎖或者死機(jī)時,通過Kdump捕獲所需信 息,顯得尤為重要。
【發(fā)明內(nèi)容】
[0003] 本發(fā)明的實施例提供一種Kdump的配置方法及計算機(jī)設(shè)備,用以在Linux系統(tǒng)中 進(jìn)行Kdump的配置,進(jìn)而可以使計算機(jī)設(shè)備通過Kdump捕獲所需信息。
[0004] 為達(dá)到上述目的,本發(fā)明的實施例采用如下技術(shù)方案:
[0005]本發(fā)明實施例提供了一種Kdump的配置方法,包括:確定是否安裝kexec軟件;若 安裝所述kexec軟件,則根據(jù)內(nèi)存的大小,在操作系統(tǒng)的Kernel命令中添加所述內(nèi)存對應(yīng) 的預(yù)留內(nèi)存參數(shù);確定Kdump服務(wù)是否開啟;若確定所述Kdump服務(wù)未開啟,則開啟所述 Kdump服務(wù)。
[0006] 進(jìn)一步的,在所述確定Kdump服務(wù)是否開始之前,還包括:為所述Kdump的配置文 件,重新配置存儲地址。
[0007] 進(jìn)一步的,在所述確定Kdump服務(wù)是否開始之前,還包括:通過不可屏蔽中斷監(jiān)控 機(jī)匪IWatchdog機(jī)制,配置Kdump服務(wù)的硬件觸發(fā)條件。
[0008] 進(jìn)一步的,所述若確定所述Kdump服務(wù)未開啟,則開啟所述Kdump服務(wù)之后,還包 括:將所述開啟所述Kdump服務(wù)設(shè)置為開機(jī)自啟動的服務(wù)。
[0009] 進(jìn)一步的,在所述若安裝所述kexec軟件,則根據(jù)內(nèi)存的大小,在操作系統(tǒng)的 Kernel命令中添加所述內(nèi)存對應(yīng)的預(yù)留內(nèi)存參數(shù)之前,還包括:若確定沒有安裝kexec軟 件,貝丨】通過yuminstallkexec-tools指令,安裝所述kexec軟件。
[0010] 進(jìn)一步的,本發(fā)明實施例提供了一種計算機(jī)設(shè)備,包括:
[0011] 確定單元,用于確定是否安裝kexec軟件;處理單元,用于若安裝所述kexec軟件, 則根據(jù)內(nèi)存的大小,在操作系統(tǒng)的Kernel命令中添加所述內(nèi)存對應(yīng)的預(yù)留內(nèi)存參數(shù);所述 確定單元,還用于確定Kdump服務(wù)是否開啟;所述處理單元,還用于在所述確定單元確定所 述Kdump服務(wù)未開啟時,開啟所述Kdump服務(wù)。
[0012] 進(jìn)一步的,配置單元,用于為所述Kdump的配置文件,重新配置存儲地址。
[0013] 進(jìn)一步的,所述配置單元,還用于通過不可屏蔽中斷監(jiān)控機(jī)匪IWatchdog機(jī)制,配 置Kdump服務(wù)的硬件觸發(fā)條件。
[0014] 進(jìn)一步的,所述處理單元,還用于將所述開啟所述Kdump服務(wù)設(shè)置為開機(jī)自啟動 的服務(wù)。
[0015] 進(jìn)一步的,所述處理單元,還用于若確定沒有安裝kexec軟件,則通過yuminstall kexec-tools指令,安裝所述kexec軟件。
[0016] 本發(fā)明實施例提供了一種Kdump的配置方法及計算機(jī)設(shè)備,包括:確定是否安裝 kexec軟件;若安裝kexec軟件,則根據(jù)內(nèi)存的大小,在操作系統(tǒng)的Kernel命令中添加內(nèi)存 對應(yīng)的預(yù)留內(nèi)存參數(shù);確定Kdump服務(wù)是否開啟;若確定Kdump服務(wù)未開啟,則開啟Kdump 服務(wù)。這樣利用本發(fā)明的上述方法可以在Linux系統(tǒng)中進(jìn)行Kdump的配置,進(jìn)而可以使計 算機(jī)設(shè)備在發(fā)生系統(tǒng)崩潰、死鎖或者死機(jī)時,通過Kdump捕獲所需信息,為后續(xù)問題分析提 供了可靠的內(nèi)存的信息,提高了用戶體驗。
【附圖說明】
[0017] 為了更清楚地說明本發(fā)明實施例的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中 所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實 施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖 獲得其他的附圖。
[0018] 圖1為本發(fā)明實施例提供的一種Kdump的配置方法的流程示意圖;
[0019] 圖2為本發(fā)明實施例提供的另一種Kdump的配置方法的流程示意圖;
[0020] 圖3為本發(fā)明實施例提供的另一種Kdump的配置方法的流程示意圖;
[0021] 圖4為本發(fā)明實施例提供的另一種Kdump的配置方法的流程示意圖;
[0022] 圖5為本發(fā)明實施例提供的另一種Kdump的配置方法的流程示意圖;
[0023] 圖6為本發(fā)明實施例提供的一種計算機(jī)設(shè)備的結(jié)構(gòu)示意圖;
[0024] 圖7為本發(fā)明實施例提供的另一種計算機(jī)設(shè)備的結(jié)構(gòu)示意圖。
【具體實施方式】
[0025] 下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進(jìn)行清楚、完 整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例?;?本發(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他 實施例,都屬于本發(fā)明保護(hù)的范圍。
[0026] 本發(fā)明實施例提供了一種Kdump的配置方法,如圖1所示,包括:
[0027] 步驟101、確定是否安裝kexec軟件。
[0028] 具體的,kexec是實現(xiàn)kdump機(jī)制的關(guān)鍵,它包括2個組成部分:一是內(nèi)核空間的 系統(tǒng)調(diào)用kexec_load,負(fù)責(zé)在生產(chǎn)內(nèi)核(productionkernel或firstkernel)啟動時將 捕獲內(nèi)核(capturekernel或sencondkernel)加載到指定地址。二是用戶空間的工具 kexec-tools,將捕獲內(nèi)核的地址傳遞給生產(chǎn)內(nèi)核,從而在系統(tǒng)崩潰的時候能夠找到捕獲內(nèi) 核的地址并運(yùn)行。沒有kexec就沒有kdump。先有kexec實現(xiàn)了在一個內(nèi)核中可以啟動另 一個內(nèi)核,才讓kdump有了用武之地。因此計算機(jī)設(shè)備在進(jìn)行Kdump配置時,需要先檢測一 下kexec軟件是否安裝。
[0029] 需要說明的是,kdump有兩個不同目的的內(nèi)核,即為生產(chǎn)內(nèi)核和捕獲內(nèi)核。生產(chǎn)內(nèi) 核是捕獲內(nèi)核服務(wù)的對像。捕獲內(nèi)核會在生產(chǎn)內(nèi)核崩潰時啟動起來,與相應(yīng)的ramdisk(虛 擬內(nèi)存盤)一起組建一個微環(huán)境,用以對生產(chǎn)內(nèi)核下的內(nèi)存進(jìn)行收集和轉(zhuǎn)存。
[0030] 進(jìn)一步的,計算機(jī)設(shè)備通過指令rpm-qkexec-tools,來確定是否安裝kexec軟 件。
[0031] 步驟102、若安裝kexec軟件,則根據(jù)內(nèi)存的大小,在操作系統(tǒng)的Kernel命令中添 加內(nèi)存對應(yīng)的預(yù)留內(nèi)存參數(shù)。
[0032] 具體的,計算機(jī)設(shè)備在確定出安裝了kexec軟件后,需要為kdump的捕獲內(nèi)核預(yù)留 內(nèi)存。此時,計算機(jī)設(shè)備需要根據(jù)其自身內(nèi)存的大小,確定為kdump的捕獲內(nèi)核預(yù)留內(nèi)存的 大小,進(jìn)而在操作系統(tǒng)的Kernel命令中添加內(nèi)存對應(yīng)的預(yù)留內(nèi)存參數(shù)。
[0033] 其中,在計算機(jī)設(shè)備中,可以預(yù)先設(shè)置不同內(nèi)存對應(yīng)的預(yù)留內(nèi)存的大小。
[0034] 在Linux操作系統(tǒng)為RHEL5(RedHatEnterpriseLinux5)版本時,可以設(shè)置不 同內(nèi)存對應(yīng)的預(yù)留內(nèi)存的大小如下表1所示。
[0035] 表 1
[0036]
[0037] 其中,crashkernel表示預(yù)留內(nèi)存參數(shù),memory表示Kdump捕獲內(nèi)核保留的內(nèi)存。 Offset表示保留部分內(nèi)存的開始位置。
[0038] 也就是說,計算機(jī)設(shè)備根據(jù)其實際內(nèi)存的大小,可以確定出在配置Kdump時,需 要為捕獲內(nèi)核預(yù)留的內(nèi)存的大小,在操作系統(tǒng)的Kernel命令中添加指令crashkernel= memoryOoffset,將預(yù)留內(nèi)存參數(shù)添加至Kernel命令中。
[0039] 進(jìn)一步的,計算機(jī)設(shè)備通過編輯/boot/grub/grub,conf,在Kernel命令那一行增 加crashkernel=memoryOoffset實現(xiàn)根據(jù)內(nèi)存的大小,在操作系統(tǒng)的Kernel命令中添加 內(nèi)存對應(yīng)的預(yù)留內(nèi)存參數(shù)。
[0040] 例如,計算機(jī)設(shè)備的內(nèi)存為2G時,可以確定出在配置Kdump時,需要為捕獲內(nèi)核 預(yù)留的內(nèi)存的大小為128M,且此內(nèi)存開始的位置為16M,這樣計算機(jī)設(shè)備可以編輯/boot/ grub/grub.conf,在Kernel命令那一行增加crashkernel= 128M016M,將預(yù)留內(nèi)存參數(shù)添 加至Kernel命令中。
[0041] 在Linux操作系統(tǒng)為RHEL6版本時,可以設(shè)置不同內(nèi)存對應(yīng)的預(yù)留內(nèi)存的大小如 下表2所示。
[0042] 表 2
[0043]
[0044] 例如,計算機(jī)設(shè)備的內(nèi)存為1G,則計算機(jī)設(shè)備可以確定出在配置Kdump時,需要 為捕獲內(nèi)核預(yù)留的內(nèi)存