??最近的實(shí)驗(yàn)內(nèi)容是修改內(nèi)核源碼實(shí)現(xiàn)屏蔽Linux頁(yè)面替換功能素挽。然后使用brk寫一個(gè)驗(yàn)證程序一直往內(nèi)存中寫入數(shù)據(jù)延届,同時(shí)保證這個(gè)驗(yàn)證程序不被OOM殺死(實(shí)驗(yàn)的詳細(xì)過程以后會(huì)進(jìn)行詳細(xì)整理)删壮,觀察在內(nèi)存占用比較多的時(shí)候骂因,是否使用交換區(qū)空間灼卢,以此來(lái)驗(yàn)證是否屏蔽成功绍哎。
??經(jīng)過這種方法,已經(jīng)能確定屏蔽是成功的鞋真。但同時(shí)還是出現(xiàn)了一些問題崇堰,就是當(dāng)寫入內(nèi)存超出一定數(shù)量的時(shí)候,系統(tǒng)會(huì)出現(xiàn)死機(jī)的情況涩咖,要想確定系統(tǒng)的極限情況海诲,就要首先弄清楚在接近臨界區(qū)的時(shí)候到底發(fā)生了什么,這就要用到內(nèi)核轉(zhuǎn)儲(chǔ)的技術(shù)檩互。使用kdump配合crash查看崩潰信息的特幔。
1 kdump簡(jiǎn)介
??kdump是一種基于kexec的內(nèi)核崩潰轉(zhuǎn)儲(chǔ)技術(shù)。kdump需要兩個(gè)內(nèi)核闸昨,分別是生產(chǎn)內(nèi)核和捕獲內(nèi)核蚯斯,生產(chǎn)內(nèi)核是捕獲內(nèi)核服務(wù)的對(duì)象薄风,且保留了內(nèi)存的一部分給捕獲內(nèi)核啟動(dòng)使用。當(dāng)系統(tǒng)崩潰時(shí)拍嵌,kdump使用kexec啟動(dòng)捕獲內(nèi)核遭赂,以相應(yīng)的ramdisk一起組建一個(gè)微環(huán)境,用以對(duì)生產(chǎn)內(nèi)核下的內(nèi)存進(jìn)行收集和轉(zhuǎn)存撰茎。
2 配置kdump
??實(shí)驗(yàn)環(huán)境:CentOS7
??實(shí)驗(yàn)內(nèi)核:linux-3.10.0-514.el7.x86_64
2.1 安裝kexec-tools
??使用kdump服務(wù)嵌牺,必須要用到kexec-tools工具包。
sudo yum update
sudo yum install kexec-tools
??安裝完成之后可以通過kexec -version查看kexec的版本龄糊。
2.2 配置kdump kernel
??需要為kdump kernel配置內(nèi)存區(qū)域逆粹,kdump要求系統(tǒng)正常使用時(shí),不能使用kdump kernel所占用的內(nèi)存炫惩。
??1.修改grub文件
vim /etc/default/grub
??需要將GRUB_CMDLINE_LINUX="crashkernel=auto..."中的auto修改為128M僻弹。一般設(shè)為128M或256M。
??2.更新grub配置
??只要更改了grub文件他嚷,都需要更改grub配置蹋绽。
sudo grub2-mkconfig -o /boot/grub2/grub.cfg
??3.重啟系統(tǒng)
reboot
2.3 修改kdump默認(rèn)配置
vim /etc/kdump.conf
??其中,需要注意的三行內(nèi)容是
path /var/crash #指定coredump文件放在/var/crash文件夾中
core_collector makedumpfile -c -l -message-level 1 -d 31 #加上-c表示壓縮筋蓖,原文件中沒有
default reboot #生成coredump后卸耘,重啟系統(tǒng)
2.4 開啟kdump服務(wù)
systemctl start kdump.service //啟動(dòng)kdump
systemctl enable kdump.service //設(shè)置開機(jī)啟動(dòng)
2.5 測(cè)試kdump是否開啟
??1.檢查kdump開啟成功
service kdump status
??如下所示,表示開啟成功
??2.手動(dòng)觸發(fā)crash
#echo 1 > /proc/sys/kernel/sysrq
#echo c > /proc/sysrq-trigger
??如果配置成功粘咖,系統(tǒng)將自動(dòng)重啟蚣抗,重新進(jìn)入系統(tǒng),可以看到/var/crash文件夾下生成了相應(yīng)文件瓮下,是一個(gè)以生成coredump日期為文件名的文件,如圖所示: