一句话先记住
- EBS = 给一台 EC2 用的硬盘
- EFS = 多台 EC2 共享的文件系统
- S3 = 不挂载服务器的对象存储
一、核心对比表(重点中的重点)
| 对比维度 | EBS | EFS | S3 |
|---|---|---|---|
| 存储类型 | 块存储 (Block) | 文件存储 (File) | 对象存储 (Object) |
| 是否有目录结构 | ❌(OS 自己管理) | ✅ | ❌(扁平) |
| 是否可直接挂载 | ✅ | ✅ | ❌ |
| 是否依附 EC2 | ✅ | ❌ | ❌ |
| 多实例共享 | ❌(默认) | ✅ | ✅ |
| 数据持久性 | ✅ | ✅ | ✅ |
| 延迟 | 最低 | 低 | 高 |
| 吞吐扩展 | 需配置 | 自动 | 无限 |
| 典型协议 | Block | NFS | HTTP / API |
| 典型服务定位 | 硬盘 | 网络文件系统 | 云原生存储 |
二、EBS(Elastic Block Store)
本质
- EC2 的“外接硬盘”
核心特点
一块卷 ≈ 一台 EC2
低延迟、高 IOPS
操作系统、数据库首选
生命周期独立于 EC2
适合场景
操作系统启动盘
数据库(MySQL / PostgreSQL / MongoDB)
企业应用
需要频繁随机 I/O 的系统
不适合
多台 EC2 共享同一份数据
海量静态文件
三、EFS(Elastic File System)
本质
- 云上的 NFS(共享文件系统)
核心特点
多台 EC2 / ECS / Lambda 可同时挂载
自动扩缩容
POSIX 文件系统
文件锁、目录结构完整
适合场景
多实例共享代码或数据
Web 服务器共享上传目录
CI/CD
用户 home 目录
不适合
超低延迟数据库
单机性能敏感应用
四、S3(Simple Storage Service)
本质
- 对象存储 + HTTP 访问
核心特点
不挂载
不在 VPC 里
无限容量
高耐久(11 个 9)
适合场景
图片 / 视频 / 音频
静态网站资源
备份 / 日志
大数据 / 数据湖
不适合
需要文件锁的应用
需要随机小写入的数据库
五、一个“秒选存储”的判断口诀(非常好用)
需要像硬盘一样用 → EBS
需要多台机器共享文件 → EFS
需要存很多文件、不关心目录 → S3
六、和传统数据中心的类比(帮助理解)
| AWS | 传统 |
|---|---|
| EBS | DAS / SAN |
| EFS | NAS |
| S3 | (云原生对象存储) |
七、真实架构中常见组合(加深理解)
Web 应用
EC2 Root Disk → EBS
用户上传文件 → S3
多实例共享配置 → EFS
数据库
数据文件 → EBS
备份 → S3
Serverless
数据 → S3
状态 → DynamoDB(不是 EBS / EFS)
八、最容易被问的“误区澄清”
❌ EFS 能不能替代 EBS?
不能
👉 性能模型完全不同
❌ S3 能不能当硬盘用?
不能
👉 没有文件系统语义
❌ EBS 能不能跨 AZ 共享?
不能
👉 卷固定在一个 AZ
九、一句话“架构师级总结”
EBS 提供性能与控制,EFS 提供共享与协作,S3 提供规模与弹性;它们解决的是完全不同层次的问题,选错存储,系统一定会出问题。