- 論壇徽章:
- 1
|
看了kdump - A kexec based dumping mechanism (Paper) - Vievek Goyal et al, OLS 2005這篇paper
簡(jiǎn)單做個(gè)總結(jié)
1. crash capture kernel的位置是配置時(shí)硬編碼指定的,相應(yīng)的production kernel啟動(dòng)時(shí)要通過crashkernel參數(shù)將對(duì)應(yīng)內(nèi)存保留出來
2. crash capture kernel可以直接加載到保留內(nèi)存區(qū)域,準(zhǔn)備崩潰時(shí)派上用場(chǎng)
3. crash capture kernel的大小有個(gè)限制,kexec工具通過memmap=exactmap參數(shù)限制capture kernel的大小,該操作是自動(dòng)進(jìn)行的,
用戶不需要關(guān)心
這樣就可以根據(jù)保留區(qū)域的起始位置和內(nèi)核大小判斷出backup region的位置
4. crash capture kernel啟動(dòng)時(shí)并沒有關(guān)閉設(shè)備,這表示DMA可能還在運(yùn)行,為避免沖突,不使用前16MB啟動(dòng)crash capture內(nèi)核
但是還需要前640KB的信息,這部分信息會(huì)復(fù)制到backup region
具體何時(shí)復(fù)制并不是太清楚,但是由于production kernel配置了kexec支持,又使用了crashkernel參數(shù),又知道crash kernel大小的上限,
這就可以計(jì)算出backup region的位置,可以在系統(tǒng)啟動(dòng)后就先將啟動(dòng)需要的系統(tǒng)信息等復(fù)制到backup region;但是論文中描述的backup region大小至少為16M
(參考2.2A Brief History of Kdump Development),要是在系統(tǒng)啟動(dòng)時(shí)就復(fù)制會(huì)丟失掉系統(tǒng)崩潰時(shí)的該部分的信息;前1MB的物理布局不是太清楚,
猜想雖然linux啟動(dòng)時(shí)覆蓋一部分,但是啟動(dòng)需要的那部分關(guān)于系統(tǒng)硬件的信息沒有被破壞,后來也沒有被覆蓋,因此可以在系統(tǒng)崩潰時(shí)復(fù)制。實(shí)際根據(jù)論文中3.3節(jié)
3.3 Post Crash Processing的描述,復(fù)制到backup region應(yīng)該是在系統(tǒng)崩潰后進(jìn)行的
5. kexec使用的內(nèi)存不必連續(xù),但是/proc/vmcore使用的內(nèi)存要求連續(xù),這樣kdump使用的也就是連續(xù)內(nèi)存了
6. CPU寄存器信息以ELF note section format存放,每個(gè)CPU狀態(tài)信息占用1KB
7. 崩潰時(shí)系統(tǒng)執(zhí)行關(guān)閉操作
->保存CPU狀態(tài)(每個(gè)CPU占用1KB)
->purgatory代碼進(jìn)行完整性檢測(cè)并復(fù)制前640KB信息到backup region
->capture kernel執(zhí)行
這里感覺論文中描述的有些混亂,前面講要復(fù)制16MB,后面又只提到復(fù)制前640KB(3.3 Post Crash Processing)。姑且理解為著重強(qiáng)調(diào)吧
8. 系統(tǒng)映像編碼為ELF Core Header進(jìn)行保存,這樣既壓縮了存儲(chǔ),又便于根據(jù)ELF格式信息進(jìn)行調(diào)試
9. ELF core header包含處理器寄存器信息、RAM布局信息和backup region;RAM布局信息從/proc/iomem中獲取
類型PT_LOAD的header描述內(nèi)存信息,包括物理內(nèi)存布局和線性區(qū)域的信息
PT_NOTE類型的header描述CPU狀態(tài)信息
PT_LOAD類型的header描述backup region信息
(kdump時(shí)系統(tǒng)好像變忙了,估計(jì)要對(duì)內(nèi)核映像和內(nèi)存信息進(jìn)行細(xì)致分析;具體這部分信息如何構(gòu)造估計(jì)要好好看看實(shí)現(xiàn)代碼了。
我這里只是為了了解kdump的工作流程,哪位要是了解可以給講講)
10. crash capture kernel啟動(dòng)后獲取保留的映像信息,可以通過/proc/vmcore或者/dev/oldmem訪問
[ 本帖最后由 openspace 于 2009-12-21 18:24 編輯 ] |
|