直接给结论:裸机最小安装(Minimal Install)预留 10GB – 15GB 是绝对安全的底线,8GB 能装但会非常难受,强烈不建议低于 10GB。
如果你打算在这个系统上跑点东西(比如 Docker、Nginx、或者简单的 Python/Go 服务),20GB – 30GB 是个更舒服的起步空间。
下面从几个维度拆解一下为什么是这个数,以及实际部署中容易踩的坑:
1. 系统本身的“吃土”能力
Ubuntu Server 的安装选项里有一个 ubuntu-minimal 或者在安装镜像启动时选择 “Minimal Ubuntu Server”。这个模式只包含最核心的内核、基础工具和 SSH 服务。
- 初始占用:刚装完,不含任何用户数据,通常占用 1.5GB – 2.5GB。
- 关键变量:你选不选
OpenSSH server,选不选cloud-init(云环境必备)。这些加起来也就几百 MB 的差距。
所以,光看系统本体,4GB 其实都够装。但问题不在这里。
2. 真正的内存杀手:日志和更新
很多新手以为装完就没事了,结果两天后磁盘爆满。原因主要有两个:
A. 系统更新(apt upgrade)
这是最大的隐形占用。Ubuntu 默认开启了自动安全更新,或者你手动执行 apt update && apt upgrade。
- 安装包缓存:
/var/cache/apt/archives/会堆积 deb 包。一次大版本或大量包更新,轻松吃掉 500MB – 1GB。 - 旧内核残留:如果你不配置清理策略,每次内核升级,旧版本的 initrd 和 headers 都会留在
/boot和/lib/modules下。虽然单个不大,但累积起来很可观。 - 建议:至少预留 2-3GB 专门给
/var/lib/apt和/var/cache。
B. 日志文件(/var/log)
- syslog/kern.log:默认情况下,Linux 不会严格限制日志大小,除非你配了
logrotate。在服务器刚启动、网络波动或应用报错时,日志膨胀速度可能比你想象得快。 - journalctl:如果使用 systemd-journald,且没有配置持久化存储上限,它也可能占地方。
- 建议:确保配置好
logrotate,并预留 1-2GB 缓冲。
3. 业务场景决定论
你说的是“精简版”,那大概率你是要拿它当容器主机、轻量级 Web 服务器或 API 网关。不同场景需求不同:
| 场景 | 推荐磁盘容量 | 理由 |
|---|---|---|
| 纯系统测试/学习 | 10 GB | 够用,但别存什么大文件,别频繁升级内核。 |
| Docker/K8s Node | 30-50 GB | 重点注意:Docker 默认使用 overlay2 存储驱动,每个镜像、容器层、volume 都会占空间。即使镜像很小,元数据和层叠也会快速消耗空间。 |
| LNMP/LAMP 栈 | 20-30 GB | Nginx/Apache + MySQL/PostgreSQL。MySQL 的数据目录(/var/lib/mysql)是随时间增长的,初期虽小,但备份文件和 binlog 会撑爆小盘。 |
| GitLab CI Runner / Jenkins | 50+ GB | 这类工具本身依赖多,加上构建缓存、Docker-in-Docker 的镜像层,磁盘增长极快。 |
4. 国内云厂商的现实考量
既然你提到熟悉国内云厂商,这点必须强调:
- ECS/CVM 的最小规格:阿里云、腾讯云、华为云的 Linux 实例,系统盘最小通常是 20GB 或 40GB(取决于地域和促销策略)。很少有提供 10GB 以下系统盘的选项。
- 快照与备份:如果你开了自动快照策略,磁盘空间会被快照占用。如果磁盘只有 10GB,快照可能直接把你写满。
- 扩容便利性:云服务器的磁盘扩容虽然方便,但涉及分区表调整(
growpart+resize2fs),对于极简主义者来说,一开始多给 10-20GB 比后期折腾分区表要省心得多。
5. 实操建议(如何优雅地管理空间)
如果你真的只有 10GB 可用,想活得久一点,请做以下几件事:
- 禁用不必要的服务:
systemctl disable ufw # 如果不需要防火墙规则 systemctl disable snapd # 如果不用 Snap - 定期清理 apt 缓存:
apt clean - 配置 logrotate:
检查/etc/logrotate.d/syslog等文件,确保日志按天或周轮转,并且保留数量不超过 7 天。 - 监控磁盘使用:
装一个ncdu或简单脚本,每周跑一次df -h和du -sh /*,看看是谁在偷吃你的空间。
总结
- 理论极限:8GB 可以装,但属于“刀尖跳舞”。
- 舒适区间:20GB。这是大多数云服务器最小可用规格的甜蜜点,既能装系统,又能跑点小服务,还有余地处理突发日志和更新。
- 生产建议:如果是正式业务,不要小于 30GB。因为未来的不确定性(如数据库膨胀、日志爆炸、临时文件)远超你的预期。
记住,磁盘空间便宜,但排查“磁盘满导致服务不可用”的时间成本很高。预留多一点,是运维中最划算的XX。
云技术博客