直接给结论:在纯最小化安装(Minimal/Server install)且未启动非必要服务的前提下,CentOS(以 CentOS 7/8 或 Stream 为例)和 Ubuntu Server 的裸机内存占用差异极小,通常在 5MB-15MB 之间波动,很难说谁绝对更低。
但如果非要分个高下,Ubuntu Server 往往在“初始空闲内存”上看起来略低一点点,但这更多是表象,核心区别在于后续的系统行为和管理方式。
下面从几个维度拆解这个看似简单实则充满陷阱的问题:
1. “最小化安装”的定义差异
首先要明确,两家厂商对“最小化”的理解不同:
- CentOS/RHEL 系:官方 ISO 提供的
Everything或DVD镜像中,选择Minimal Install时,默认只包含内核、基础工具包(coreutils, bash, vim 等)、systemd 和网络配置。它非常干净,几乎没有任何图形界面组件,甚至连curl或wget在某些版本里都需要手动勾选(虽然新版通常默认带了)。 - Ubuntu Server:官方 ISO 提供的
Server安装选项,默认会安装cloud-init(用于云环境初始化)、ssh-server、netplan以及一套基础的 systemd 服务。即使你选了“最小化”,Ubuntu 也会预装一些用于云主机快速初始化的脚本和服务。
2. 实测数据参考(基于最新稳定版)
为了让你有直观感受,我们看一组典型的空载内存占用数据(即系统启动后,无任何业务进程运行,仅保留内核和基础守护进程):
| 系统版本 | 安装类型 | 典型空闲内存 (RSS) | 说明 |
|---|---|---|---|
| CentOS 7 | Minimal | ~40 – 60 MB | 依赖较多传统 SysVinit 兼容层,但整体依然轻量。 |
| CentOS 8 / Stream | Minimal | ~30 – 50 MB | 完全转向 systemd,去除了部分冗余组件,比 C7 更轻。 |
| Ubuntu 18.04 LTS | Server | ~45 – 65 MB | 预装了 cloud-init,开机后会短暂拉高内存进行初始化。 |
| Ubuntu 20.04/22.04 LTS | Server | ~50 – 70 MB | 同样预装 cloud-init,且 snapd 若被触发可能占额外资源(虽可禁用)。 |
注意:以上数据是在同一台虚拟机(如 1核 1G 内存)中,经过至少 5 分钟静置后的
free -m输出结果。
3. 为什么你会觉得 Ubuntu 更“重”?
很多人认为 Ubuntu 内存占用高,主要源于以下几个原因:
A. Cloud-init 的“副作用”
Ubuntu Server 默认启用 cloud-init。当你首次启动一台新创建的 Ubuntu 云主机时,cloud-init 会联网获取元数据、设置主机名、配置 SSH 密钥等。这个过程会消耗 CPU 和内存,并在 /var/log/cloud-init.log 中产生大量日志。对于刚开机的几分钟内,Ubuntu 的内存占用确实会比 CentOS 高 10-20MB。
B. Snap 服务的潜在开销
Ubuntu 近年来大力推广 Snap 包管理器。虽然最小化安装不会预装所有 Snap 应用,但 snapd 服务可能被默认启用。如果系统尝试更新或检查 Snap 仓库,它会占用一定的内存和磁盘 I/O。而 CentOS 没有类似的强制包管理机制,更加“安静”。
C. 内核与驱动优化
Ubuntu 的内核通常更新更快,包含更多硬件兼容性补丁。这意味着它在某些新型硬件上可能需要加载更多的模块,从而略微增加基础内存 footprint。而 CentOS 的内核更新保守,模块更少,理论上更精简。
4. 关键变量:你是否真的用了“最小化”?
在实际生产环境中,“最小化安装”只是起点,真正的内存杀手是后续操作。
- CentOS 用户习惯:很多老手会用
yum groupinstall "Development Tools"或直接编译源码,这些过程本身不占常驻内存。 - Ubuntu 用户习惯:很多人喜欢用
apt install nginx mysql php一键部署 LAMP/LNMP 栈。这些服务一旦启动,内存占用立刻飙升到几百 MB,与操作系统本身无关。
所以,不要比较“谁的最小化安装更省内存”,而要比较“谁更容易保持最小化状态”。
在这方面,CentOS/RHEL 系更具优势:
- 它的包管理策略更偏向于“按需安装”,默认不附带任何自动化运维脚本。
- 没有 snapd、cloud-init 等后台服务在静默运行时争夺资源。
- 更适合追求极致精简、自定义程度高的资深用户。
5. 给你的建议
如果你正在为以下场景选型:
✅ 选 CentOS(或 Rocky Linux/AlmaLinux):
- 你需要一台长期运行的、功能单一的服务器(如 DNS、静态 Web、内部 API)。
- 你对内存极其敏感,希望每一 MB 都用在刀刃上。
- 你熟悉 RHEL 体系,能接受较少的社区支持文档(相比 Ubuntu)。
- 你不想处理 cloud-init 或 snapd 带来的意外行为。
✅ 选 Ubuntu Server:
- 你是新手或团队规模较小,需要丰富的文档和社区支持。
- 你打算运行容器化应用(Docker/Kubernetes),Ubuntu 对 Docker 的支持更无缝。
- 你使用公有云,并且希望利用 cloud-init 实现自动配置(这是 Ubuntu 的强项)。
- 你愿意牺牲几 MB 的初始内存,换取更好的软件包新鲜度和易用性。
总结
CentOS 最小化安装的初始内存占用略低于 Ubuntu Server,差距约 5-10MB,可忽略不计。
真正影响内存的是你是否禁用了 cloud-init、snapd 等非必要服务,以及你安装了什么业务软件。
终极技巧:无论选哪个,都建议在安装后执行一次“清理”:
- Ubuntu:
sudo apt autoremove && sudo apt clean,并考虑禁用snapd(如果不用的话)。 - CentOS:确保没有安装额外的 GUI 包组,定期清理 yum cache。
最后提醒一句:随着硬件成本下降和内存价格走低,5-10MB 的差异在现代云计算环境中已无实际意义。与其纠结这个,不如关注你的应用架构是否合理、是否有内存泄漏、是否使用了 Swap 导致性能抖动——那才是真正决定系统稳定性的因素。
云技术博客