一、起因
今年四月份买了个阿里2H2G99一年的云服务器,到手查看发现2G内存实测只有1.71G,觉得很奇怪,问客服说是系统占用了(别人家的服务器系统难道不占用吗?我在隔壁跑路云买的2G都能检测出1.9G)
dmidecode -t memory | grep Size: | grep -v "No Module Installed"
二、意外发现
直到昨天闲来无事,在bing搜了一下,找到了一个帖子 https://www.v2ex.com/t/998120 ,本身对linux就不熟悉,第一次听说crashkernel
这个玩意会占用一部分内存,那就关掉它好了(本身就低配内存都不够用了还要什么kdump)
三、回来吧,丢失的内存
先来看一下crashkernel
是在哪配置的(我用的是Ubuntu22,其他的系统类似)
ssh上服务器,cat /etc/default/grub
查看内容(以去除无效的注释部分)
GRUB_DEFAULT=0
GRUB_TIMEOUT_STYLE=hidden
GRUB_TIMEOUT=1
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT=""
GRUB_CMDLINE_LINUX=" vga=792 console=tty0 console=ttyS0,115200n8 net.ifnames=0 noibrs iommu=pt crashkernel=0M-1G:0M,1G-4G:192M,4G-128G:384M,128G-:512M nvme_core.io_timeout=4294967295 nvme_core.admin_timeout=4294967295"
其中GRUB_CMDLINE_LINUX
中的crashkernel就是控制大小的,可以看到阿里云此处是根据物理内存大小分级设置的,我们可以直接将0M-1G:0M,1G-4G:192M,4G-128G:384M,128G-:512M
替换为
使用vim编辑一下此文件,按以上修改并保存
sudo vi /etc/default/grub
执行命令使修改生效
grub-mkconfig -o /boot/grub/grub.cfg
reboot重启服务器,缺失的内存回来了(错怪阿里云了,虽然但是也只能识别到1.882G,但好在够便宜且不是轻量服)