相信很多公司都在使用云服务器,不知道大家有没有注意到,当你购买了一台云服务器以后,在操作系统里面通过 free 命令查看服务器的内存,容量总是会小于在云厂商控制台上面看到的内存容量。
![图片[1]-内存去哪儿了——linux free 命令查看内存偏小 - 小小博客 - 记录与学习前端知识-小小博客 - 记录与学习前端知识](https://gcore.jsdelivr.net/gh/bootsp/cdn/xiaoil_cn/20251122113045081.png)
CentOS7.9,系统内内存大小为3819,少200MiB左右。
问题分析
看到这里,可能大家会猜想是不是服务器有问题,给我们少分配了一点内存,又或者不会太在意这一点点内存。下面将进行详细分析。
1. kdump介绍
在分析这个问题之前,先来了解下kdump。
kdump是Linux系统的一种高级故障处理机制,它可以在Linux系统内核崩溃时收集内存转储文件(crashdump),以便在分析转储文件时诊断问题。kdump可以帮助开发人员在内核崩溃时,更快地找到问题所在,以便更快地修复问题。
2. grub配置
kdump需要预留部分内存供转储内核使用,所以需要配置grub文件。
CentOS6
配置/etc/grub.conf,在 kernel 后面添加如下:
kernel crashkernel=auto
CentOS7
配置/etc/default/grub,GRUB_CMDLINE_LINUX 后面添加如下:
crashkernel=auto
其中crashkernel表示预留给转储的内存大小,auto表示系统自动分配,也可以直接写大小,比如预留128M写成crashkernel=128M
我的是centos7.9
CentOS7.9机器在 /etc/default/grub 删除crashkernel=auto,或者设置crashkernel=0,执行 grub2-mkconfig -o /boot/grub2/grub.cfg,然后重启机器。









暂无评论内容