努力
加油

低配置服务器(如1核1G)适合安装Ubuntu还是CentOS Stream?

先给结论:在 1核1G 这种“极限低配”环境下,强烈建议首选 Ubuntu Server (LTS版本),或者更极致的 Debian。 CentOS Stream 在这种配置下体验会非常痛苦,甚至可能因为资源耗尽导致服务频繁崩溃。

这不是玄学,而是由两者的底层设计哲学、包管理习惯以及默认启动项决定的。下面从几个硬核维度给你拆解为什么这么选,以及如果你非要折腾该怎么优化。

1. 内存占用的“原生差异”

这是最致命的痛点。1GB 内存对于现代 Linux 发行版来说,连跑个 Docker 都捉襟见肘,必须精打细算。

  • Ubuntu Server:
    • 默认安装后(无 GUI),空闲内存占用通常在 200MB – 350MB 左右。
    • Ubuntu 的 systemd 服务虽然也在增长,但相比 RHEL 系还是收敛得多。
    • snapd 是个大坑,默认开启且占用大量内存和磁盘 IO。装完系统第一件事:禁用并卸载 snapd。
  • CentOS Stream / Rocky / Alma:
    • 基于 RHEL (Red Hat Enterprise Linux) 代码库。RHEL 的设计哲学是“企业级稳定”,这意味着它默认加载的服务更多,后台守护进程更重。
    • 同样最小化安装,空闲内存占用往往在 400MB – 600MB 甚至更高。
    • SELinux 默认处于 Enforcing 模式,虽然安全,但在低配机器上调试权限问题会消耗额外的 CPU 周期和内存。

数据对比参考:
在同等软件栈(Nginx + MySQL/PostgreSQL)下,CentOS 的基线内存水位线比 Ubuntu 高出 15%-25%。在 1G 内存里,这 100-200MB 的差异就是“能跑”和“OOM Kill(内存溢出杀死进程)”的区别。

2. 软件源与依赖管理

  • Ubuntu (APT):
    • 社区极其庞大,第三方软件(如 Node.js, Python, Java 环境)通常提供官方的 .deb 包或 PPA,安装路径清晰,依赖解析速度快。
    • 对于开发者而言,Ubuntu 的环境更接近大多数教程和开源项目的推荐环境。
  • CentOS Stream (DNF/YUM):
    • DNF 的性能本身不错,但 RHEL 系的仓库策略保守。很多新版本的软件可能需要你手动编译或添加第三方 Repo(如 EPEL)。
    • CentOS Stream 作为 RHEL 的上游滚动更新分支,其稳定性不如 CentOS 7/8 那样“死板”,但也意味着你可能需要处理更多的兼容性微调。在低配服务器上,维护成本是一个隐形负担。

3. 实际场景推演

假设你的服务器要跑一个典型的 Web 应用(比如 Nginx + PHP-FPM + MySQL):

组件 Ubuntu 1核1G 表现 CentOS Stream 1核1G 表现
开机启动 较快,服务少 较慢,后台服务多
MySQL 启动 容易 OOM,需大幅调优 my.cnf 更容易 OOM,需更大幅度调优
Docker 运行 勉强可跑轻量容器,需 swap 极易卡顿,swap 压力巨大
日常运维 apt update && apt upgrade 流畅 dnf update 相对耗时,CPU 占用高

关键点:在 1G 内存下,你几乎必然需要开启 Swap(交换空间)。Swap 的本质是用硬盘当内存,而云服务器通常是 SSD/NVMe,速度尚可,但频繁换页会导致 I/O 等待飙升,CPU 利用率看似不高,但响应极慢。

Ubuntu 的优势在于:它的默认配置对 Swap 的容忍度稍好,且社区有海量的针对“低配 VPS 优化”的现成脚本和教程(比如一键优化内核参数、禁用不必要的服务等)。

4. 如果你必须坚持用 CentOS Stream?

我知道有些人因为公司规范、个人偏好或特定软件兼容性(比如某些商业软件只支持 RHEL 系)非要用 CentOS Stream。那么你必须做以下“阉割”操作,否则别怪服务器卡:

  1. 最小化安装(Minimal Install):绝对不要选带 GUI 的,连基础开发工具都不要选。
  2. 关闭 SELinux:改为 Permissive 或 Disabled。虽然不安全,但在内网小项目里,性能提升显著。
  3. 精简 systemd 服务:使用 systemctl disable <service> 禁用所有非必要的服务(如 firewalld 换成 iptables 或直接关,auditd 等)。
  4. 调整 swappiness:将 /etc/sysctl.conf 中的 vm.swappiness 设置为 10 或更低,减少主动换页。
  5. 数据库优化:MySQL/MariaDB 的 innodb_buffer_pool_size 必须设得很小(比如 64M-128M),否则直接撑爆内存。

5. 终极建议:除了 Ubuntu,还可以考虑什么?

如果你的目标是“极致节省资源”,除了 Ubuntu,我强烈推荐以下两个选择:

  1. Debian 11/12 (Stable):

    • 比 Ubuntu 更轻量,没有 snapd 的包袱。
    • 社区同样活跃,兼容绝大多数 Ubuntu 的软件包。
    • 空闲内存可以压到 150MB 以下。
    • 缺点:部分新软件的支持滞后于 Ubuntu,需要自己搞定一些驱动或新特性。
  2. Alpine Linux:

    • 基于 musl libc 和 busybox,镜像只有几 MB。
    • 空闲内存 < 50MB。
    • 适合:纯 Docker 宿主、极简 API 服务。
    • 不适合:需要复杂编译环境、传统 LAMP/LNMP 堆栈的用户,兼容性较差。

总结

  • 追求省心、教程多、生态好 -> Ubuntu Server LTS(记得关掉 snap)。
  • 追求极致轻量、懂 Linux 原理 -> Debian Stable。
  • 为了公司合规、熟悉 RHEL 体系 -> CentOS Stream(但请做好深度优化的心理准备,1G 内存真的很难受)。

最后提醒:无论选哪个,1核1G 的配置上限很低。如果业务量稍有增长,第一反应不应该是“优化系统”,而是“加钱升级配置”。云服务器的成本现在很低,把时间花在调试低配系统的瓶颈上,不如直接升到 2核2G 来得高效。