选存储这事儿,特别像装修房子时决定东西往哪儿搁。S3、EBS、EFS这三个AWS的存储服务,名字听着像三兄弟,活儿可完全不一样。选错了,要么性能拉胯,要么月底看账单心梗。
别被一堆缩写绕晕,咱们就按“你家数据怎么被用”这条线来捋。搞清楚这仨的本质区别,以后闭着眼都不会选错。
最直白的大白话比喻
先给个特别土的类比,帮你一秒建立直观印象:
S3:像百度网盘或Dropbox。存东西、取东西得通过链接或者专门的客户端(API),适合放那些不常改动的“文件包”,比如图片、视频、备份。
EBS:像你电脑里的那块硬盘(C盘、D盘)。直接插在主板上,反应贼快,但一块硬盘通常只能给一台电脑用。最适合装操作系统、跑数据库。
EFS:像办公室里的公共共享文件夹(网络邻居那种)。好几台电脑都能同时打开、编辑里面的同一个文件,适合需要多台服务器共享一份代码或者素材的场景。
什么时候选S3?—— 存“物件”
S3存的是“对象”(Object),不是文件系统意义上的“文件”。你存取它,是用API调用的,没法像操作文件夹那样直接在里面改一个字,要改只能整个替换。
最适合干的活儿:
用户上传的图片、视频、PDF文档。
网站的静态资源(CSS、JS、HTML文件)。
海量的应用日志、备份归档。
当数据湖,存原始数据供大数据分析。
为什么选它:便宜、无限容量、极高持久性(11个9)。你不用操心空间不够用。而且能配合CDN加速内容分发。
避坑提醒:别拿它当系统盘或者数据库的存储盘,延迟扛不住,也没法用标准的文件读写命令去操作。
什么时候选EBS?—— 系统盘和数据库专用
EBS是“块存储”(Block Storage),说白了就是一块虚拟的裸硬盘,必须挂载到一台EC2上才能用,格式化后当系统盘或数据盘。
最适合干的活儿:
EC2实例的操作系统根卷(/根目录)。
跑数据库(比如PostgreSQL、MySQL)的数据目录,它延迟极低,IOPS(每秒读写次数)可调且稳定。
跑那些对磁盘读写延迟敏感的企业级应用。
为什么选它:延迟最低、性能最稳。一块EBS默认只给一台EC2用(特定类型支持多挂载,但极其有限),数据独享,不跟别的实例抢带宽。
避坑提醒:EBS和EC2必须在同一个可用区(AZ),跨区挂载不了。另外,它按预置容量和性能收费,用多少付多少,别没事儿就开个大容量高IOPS的卷闲着。
什么时候选EFS?—— 多台服务器共用一个文件夹
EFS是托管的NFS(网络文件系统),也就是一个共享文件夹。它最大的特点是支持同时挂载到上百台EC2上,所有实例看到的是同一份数据,修改彼此实时可见。
最适合干的活儿:
多台应用服务器共享一份配置文件或代码目录。
CMS系统(比如WordPress)多台服务器共用一个上传目录,用户从任意一台服务器上传图片,其他服务器都能立刻看到。
大数据分析的共享数据源。
为什么选它:天然支持多实例并发读写,不用你自己折腾分布式文件系统。而且它全托管,空间会自动扩容。
避坑提醒:价格比EBS贵不少(大概3倍以上)。只跑一台实例的场景就别用它了,纯粹浪费。而且EFS目前只适合Linux系统,Windows环境得用FSx。
一张表看明白核心差异

决策小口诀
你要存的东西是通过链接上传下载的,用S3。
你要给单台服务器配硬盘(尤其是装系统和数据库),用EBS。
你要让一堆服务器共享同一个文件夹,实时同步,用EFS。
把这三点刻脑子里,以后跟同事聊存储方案,底气足得很。