• 首页
  • 关于

鸽子窝:Pigeon's Blog

笨蛋鸽子的小窝
默认分类

阿里云 2C2G 的小鸡为什么只有 1.6G内存?

2026-05-30 浏览量 0 暂无评论

最近在折腾自己的阿里云 2G 小鸡。

一开始只是觉得机器越来越紧张,free -h 看了一眼,发现有点不对劲:

free -h

输出大概是这样:

               total        used        free      shared  buff/cache   available
Mem:           1.6Gi       1.4Gi        67Mi       5.6Mi       385Mi       275Mi
Swap:          4.0Gi          0B       4.0Gi

这就很奇怪了。

服务器明明是 2G 内存规格,为什么系统里 Mem 的 total 只有 1.6Gi?

一开始我还以为是云厂商的 GB / GiB 口径差异。毕竟 2GB 按十进制换算成 GiB,本来就不是完整的 2GiB。

但这差得还是有点多。

Note

GB 和 GiB 确实不是一回事。
2GB 约等于 1.86GiB,但这里系统只显示 1.6GiB,说明还有别的内存被保留了。

先确认系统实际识别到多少内存

先看 /proc/meminfo:

grep MemTotal /proc/meminfo

输出:

MemTotal:        1716544 kB

换算一下:

1716544 / 1024 / 1024 ≈ 1.64 GiB

也就是说,Linux 最终可用的总内存确实只有大约 1.64GiB。

但这还不能说明云厂商真的少给了内存。还需要看看虚拟硬件层到底声明了多少。

继续看 dmidecode:

dmidecode -t memory

关键输出如下:

Physical Memory Array
    Maximum Capacity: 2 GB
    Number Of Devices: 1

Memory Device
    Size: 2 GB
    Manufacturer: Alibaba Cloud

这里可以看到,虚拟硬件层声明的内存设备确实是 2 GB。

所以现在情况变成了:

dmidecode:      2 GB
/proc/meminfo: 1.64 GiB

这说明实例规格大概率没错,但 Linux 启动后有一部分内存被预留掉了。

查启动参数

继续看内核启动参数:

cat /proc/cmdline

里面有这样一段:

crashkernel=0M-1G:0M,1G-4G:192M,4G-16G:256M,16G-64G:384M,64G-:512M crash_kexec_post_notifiers=1

看到 crashkernel 基本就有方向了。

Note

这是给 kdump / crash dump 用的预留内存。简单说,就是系统提前留出一块内存,万一内核崩溃,可以用另一套 crash kernel 把现场 dump 下来,方便后续分析。

这在生产环境排查内核崩溃时有用,但对一台 2G 小服务器来说,默认预留 192M 就有点奢侈了。

为什么 2G 最后只剩 1.6G?

大致可以这样理解:

阿里云实例规格:2GB
Linux 启动时识别 System RAM:约 1948MB
crashkernel 预留:192MB
其他 BIOS / ACPI / PCI / 内核 reserved:若干
最终 /proc/meminfo 中 MemTotal:约 1.64GiB

少掉的内存主要分成几类:

  1. GB 和 GiB 的单位差异;
  2. 虚拟机启动时的 BIOS / ACPI / PCI MMIO 等保留区域;
  3. 内核自身占用;
  4. crashkernel 给 kdump 预留的 192MB。

其中最明显、也最容易释放的,就是 crashkernel 这部分。

Note

kdump 不是没用,而是它更适合需要分析内核崩溃的场景。
对个人小服务器来说,释放这部分内存通常更实际。

修改 GRUB,关闭 crashkernel

我这台机器是 Debian,配置文件在:

nano /etc/default/grub

原本的 GRUB_CMDLINE_LINUX 里包含:

crashkernel=0M-1G:0M,1G-4G:192M,4G-16G:256M,16G-64G:384M,64G-:512M crash_kexec_post_notifiers=1

把这两段删掉。

保存后更新 grub:

update-grub

确认没有报错,再重启:

reboot

Warning

修改 GRUB 前最好确认。
如果启动参数写错导致机器起不来,还能从VNC救回来。
HiveD:意外朴素的算法
没有了

评论/ 取消评论

  • 文章目录
  • 站点概览
    author

    12 日志
    5 分类
    Creative Commons

    浏览量 : 0

    © 2026 鸽子窝:Pigeon's Blog. Power By Typecho . Theme by Shiyi

    This is just a placeholder img.