努力
加油

部署一个精简版Ubuntu Server需要预留多少磁盘容量?

直接给结论:裸机最小安装(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 可用,想活得久一点,请做以下几件事:

  1. 禁用不必要的服务:
    systemctl disable ufw  # 如果不需要防火墙规则
    systemctl disable snapd # 如果不用 Snap
  2. 定期清理 apt 缓存:
    apt clean
  3. 配置 logrotate:
    检查 /etc/logrotate.d/syslog 等文件,确保日志按天或周轮转,并且保留数量不超过 7 天。
  4. 监控磁盘使用:
    装一个 ncdu 或简单脚本,每周跑一次 df -h 和 du -sh /*,看看是谁在偷吃你的空间。

总结

  • 理论极限:8GB 可以装,但属于“刀尖跳舞”。
  • 舒适区间:20GB。这是大多数云服务器最小可用规格的甜蜜点,既能装系统,又能跑点小服务,还有余地处理突发日志和更新。
  • 生产建议:如果是正式业务,不要小于 30GB。因为未来的不确定性(如数据库膨胀、日志爆炸、临时文件)远超你的预期。

记住,磁盘空间便宜,但排查“磁盘满导致服务不可用”的时间成本很高。预留多一点,是运维中最划算的XX。