欢迎光临
我们一直在努力

服务器内存容量为何会发生变化?

服务器内存容量变了

一、现象描述

服务器内存容量变了

购买了2台云服务,控制台上面显示的内存是4GiB(4096MiB),登录到操作系统里面查看内存大小,通过 free -m 命令发现机器的total内存比实际购买的要小,10.0.1.229这台是CentOS6.5,系统内内存大小为3832MiB,少264MiB,10.0.1.228这台是CentOS7.8,系统内内存大小为3789MiB,少307MiB。

二、问题分析

看到这里,可能大家会猜想是不是服务器有问题,给我们少分配了一点内存,又或者不会太在意这一点点内存,下面将进行详细分析。

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。

3. 问题原因

服务器内存容量变了

此时再来看看自己的服务器配置发现是配置了内核转储,所以服务器预留了部分内存,故 free -m 看到的内存大小会偏小,再看另外一台CentOS7.8的配置同样是配置了内核转储,free -m 看到的内存大小也会偏小。

4. 关闭转储

CentOS6.5 机器在 /etc/grub.conf 删除crashkernel=auto,或者设置crashkernel=0,然后重启机器,此时内存为 3961MiB,多出了 129MiB,CentOS7.8机器在 /etc/default/grub 删除crashkernel=auto,或者设置crashkernel=0,执行 grub2-mkconfig -o /boot/grub2/grub.cfg,然后重启机器,此时内存为 3950MiB,多出了 161MiB,大家可能会说这时候的内存大小还是比控制台上面的 4096MiB小,这是因为操作系统本身会占用一定内存,但是free命令不会统计。

三、相关问题与解答

Q1: 为什么通过free -m命令看到的内存总量比云服务商提供的内存总量小?

A1: 这是因为Linux系统为了支持内核崩溃时的转储功能(kdump),会预留一部分内存用于存储转储文件,这部分内存的大小可以通过grub配置文件中的crashkernel参数进行设置,默认情况下,这个值通常是自动分配的,但也可以通过手动设置为特定大小或关闭它以释放更多可用内存。

Q2: 如果我想释放这些被预留的内存应该怎么办?

A2: 如果您确定不需要使用kdump功能,可以通过修改grub配置文件来关闭或调整这部分内存的大小,对于CentOS6系统,可以在/etc/grub.conf文件中删除crashkernel=auto行或者将其改为crashkernel=0;对于CentOS7及以上版本,则需要在/etc/default/grub文件中进行相应的修改,并运行grub2-mkconfig -o /boot/grub2/grub.cfg更新配置,完成上述步骤后重启服务器即可生效,这样做可能会影响系统的故障排查能力,请谨慎操作。

服务器内存容量变了

各位小伙伴们,我刚刚为大家分享了有关“服务器内存容量变了”的知识,希望对你们有所帮助。如果您还有其他相关问题需要解决,欢迎随时提出哦!

赞(0)
版权声明:本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权
文章名称:《服务器内存容量为何会发生变化?》
文章链接:https://yuyunkj.com/article/18763.html
本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。

评论 抢沙发