相信大家会有这种经历:购买了一台1G内存的VPS,结果发现内存不够1G。内存的厂家一般是按照1G=1000MB来算,计算机是二进制,1G=1024MB,所以有一点点误差是可以理解的,可是明明买的是2G内存的VPS可是可用内存只有1.7G多,这就不对了,究其原因原来是打开了kdump导致的。
1.什么是kdump?
kdump是在系统崩溃、死锁或者死机的时候用来转储内存运行参数的一个工具和服务,打个比方,如果系统一旦崩溃那么正常的内核就没有办法工作了,在这个时候将由kdump产生一个用于capture当前运行信息的内核,该内核会将此时的内存中的所有运行状态和数据信息收集到一个dump core文件中以便于Red Hat工程师分析崩溃原因,一旦内存信息收集完成,系统将自动重启。这和以前的diskdump,netdump是同样道理。
2.为什么要关闭?
kdump是个好东西,不过在低配VPS面前,就变成了一个鸡肋,现在内存1G、2G的vps内存本来就不够,还启动这个kdump,这就导致经常因为内存不足而导致的各种错误,如sql崩溃什么的。
3.关闭kdump
登陆root用户
3.1、关闭kdump服务
service kdump stop
3.2、禁止开机启动
chkconfig kdump off
3.3、修改grub文件
nano /etc/default/grub
可以看到类似如下的内容,将crashkernel改为0M
GRUB_TIMEOUT=2
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="crashkernel=0M rhgb net.ifnames=0 biosdevname=0"
GRUB_DISABLE_RECOVERY="true"
3.4、重新生成grub配置文件后重启系统生效
grub2-mkconfig -o /boot/grub2/grub.cfg
reboot