努力
加油

运行一个基本的Ubuntu Server系统需要预留多少硬盘空间?

直接给结论:安装一个最基础的 Ubuntu Server(无桌面环境),系统本身占用通常在 4GB – 6GB 左右。但为了后续能正常跑业务、装依赖和留足日志空间,建议至少预留 20GB-30GB,生产环境强烈建议起步 50GB。

别被“基础”两个字忽悠了,咱们从几个维度拆解一下这个账怎么算:

1. 纯裸机安装后的真实占用

如果你只是执行 apt install ubuntu-server 或者下载最小化镜像(Minimal ISO)装完,连 SSH 服务都没开,这时候磁盘占用确实很低。

  • 核心系统文件:内核、基础库、udev 等,大概占 2-3GB。
  • 包管理器缓存:apt 的 cache 目录默认不删的话会占几百 MB。
  • 实际可用空间:装完后,你看到的已用空间大概在 3.5GB – 4.5GB 之间。

注意,这是“刚装好、啥也没干”的状态。

2. 为什么不能只分 5GB?

因为 Linux 不是 Windows,它不像你装个 Office 就完事了。Ubuntu Server 是用来跑服务的,以下几个因素会迅速吃掉你的空间:

  • Swap 分区/文件:虽然 SSD 时代 Swap 的重要性下降,但很多部署脚本或数据库(如 MySQL、PostgreSQL)依然推荐配置 Swap。哪怕只给 1GB,你也得预留出来。
  • 软件源缓存:当你执行 apt update && apt upgrade 时,下载的 .deb 包会暂存在 /var/cache/apt/archives/。一次全量升级可能轻松吃掉 500MB-1GB。
  • 日志文件:这是最大的隐形杀手。/var/log 下的 syslog、auth.log、kern.log 等,如果服务器有流量波动或程序报错,几天内就能涨到几百 MB 甚至 GB 级。
  • Docker/容器数据:现在谁还不用 Docker?Docker 的 overlay2 存储驱动非常吃空间。一个轻量级的 Nginx 镜像加上容器层,可能就要几百 MB。如果你跑个 Elasticsearch 或者 Java 应用,镜像拉取+运行时的临时文件,空间需求指数级上升。
  • 内核更新残留:Ubuntu 每次内核大版本更新,旧内核不会自动删除(除非你手动清理),这会多占几百 MB。

3. 不同场景的磁盘规划建议

场景 推荐最小磁盘大小 理由
极简测试/学习 10 GB 够装系统 + 装几个常用工具 + 跑个 Python 脚本。一旦想装 Docker 或大型语言模型,立刻爆满。
小型 Web 服务/Nginx XX 20 GB 足够容纳系统 + 几个容器 + 日常日志。适合个人博客、轻量 API 服务。
通用开发/CI Runner 50 GB 需要频繁拉取 Docker 镜像、编译代码产生大量中间文件。50GB 是“舒适区”的下限。
生产环境/数据库/大数据 100 GB+ 数据库数据文件增长不可控,日志归档策略复杂,必须预留充足余量以防 OOM 之外的 Disk Full 问题。

4. 给云用户的具体操作建议

如果你是在阿里云、腾讯云、AWS 等云厂商上购买 ECS/CVM:

  1. 不要按当前用量选盘:云硬盘通常支持在线扩容。你可以初始选一个 20GB 或 40GB 的系统盘,后续发现不够了,直接在控制台扩容即可,无需重装系统。
  2. 区分系统盘和数据盘:
    • 系统盘:装 OS 和软件,建议 20-50GB。
    • 数据盘:挂载到 /data 或 /var/lib/docker 等路径,专门存业务数据、日志、镜像。这样即使系统盘满了,数据盘还有救,也方便备份和迁移。
  3. 监控是关键:无论你怎么预估,一定要装监控插件(如 cloud-monitor-agent)。设置磁盘使用率超过 80% 报警。Linux 下磁盘写满会导致文件系统只读(Read-only file system),服务直接挂掉,比内存不足更麻烦。

总结

“够用”的定义取决于你要跑什么。
如果只是 ping 和 cat /etc/os-release,4GB 够了。
如果要跑任何正经服务,请至少分配 20GB,最好 50GB。省这点云服务器的钱,后期折腾扩容、清理日志的时间成本远高于磁盘差价。