关于S3,EBS,EFS的三角关系

我们知道,aws提供的存储服务有S3,EBS,EFS,有些同学在使用的时候会有些困扰,哪个才是最适合我自己的云存储方案呢,现在我就和大家一起来学习下aws的三个常用存储服务:Amazon Elastic Block Store (Amazon EBS), Amazon Simple Storage Service (Amazon S3), 和Amazon Elastic File System (Amazon EFS)

-- D.C

什么是Amazon EFS?

Amazon EFS 是AWS提供的NFS文件系统托管服务,能被多个Amazon EC2实例所共享。 它的工作模式类似于NAS设备,很适合用来做大数据分析多媒体处理流程 , 以及内容管理 。其实选择哪种存储服务关键取决于我们特定的系统需求,包括我们对成本的控制,性能,和访问的方式。

Amazon EFS提供简单、可扩展、完全托管的弹性 NFS 文件系统。它可按需扩展至 PB 级,而不会中断应用程序,并在添加和删除文件时自动增加和缩小,从而无需预置和管理容量以适应增长。

要注意,在考虑存储成本的同时,最好和计算资源成本同时考虑才有意义哦,另外EFS类似S3,也有非频繁访问模式(IA), 虽然工作负载模式有所不同,但客户通常会发现 80% 的文件不经常访问(并且适合 EFS IA),20% 的文件正在使用(适用于 EFS 标准),所以通过利用IA可以很好控制成本。

什么是Amazon S3?

Amazon S3 是AWS提供的对象存储服务。它是一个静态的存储服务,可用于静态网站托管,多媒体内容部署和分发(cloudfront),版本管理,大数据分析以及归档。要注意的是,S3自带数据湖的属性,可以和Athena(aws的简单sql查询服务)以及Glu(aws大数据ETL服务)搭配用于大数据分析。

什么是EBS?

Amazon EBS 是AWS提供的块存储服务。一个EBS卷可以理解为一块磁盘,用于存储数据库,部署各类分析流程等。

三类存储对比表

特点 S3 EBS EFS
存储成本 (宁夏区域为例) [标准型]
第一个50TB/月部分: 0.1755元/GB;
50TB-450TB部分: 0.1719元/GB
500TB以上/月部分:0.1629元/GB
gp2通用型SSD: 0.664元/GB-月
io1预配IOPS SSD: 存储0.764元/GB-月, 0.399元/预配置IOPS-月
st1吞吐优化HDD:0.299元/GB-月
sc1 cold HDD: 0.166元/GB-月
EBS 磁性介质:0.364元/GB-月,0.364/100万I/O请求
标准存储:2.145元/GB-月
不频繁访问存储:0.200元/GB-月
不频繁访问请求:0.071元(每GB传输数据)
预置吞吐量(MB/秒-月):42.891元(MB/S-月)
存储大小 存储对象数量无限制 最大为16TB 无限制,自动弹性扩展
文件大小 单个S3对象最小0 byte,最大5TB 无限制 单个文件最大47.9TiB
数据吞吐和I/O 支持分段上传,建议大于100MB的文件都采用该上传方式
调用PUT API进行上传的单个文件限制为5GB
基于SSD和HDD两类
如果对I/O有要求,推荐采用SDD+预留IOPS
所有连接的client:默认3GB/s,吞吐量和 IOPS 随着文件系统的扩大而扩展,可以在短时间内快速达到更高的吞吐量级别
性能 高扩展性,支持3500 PUT/LIST/DELETE 请求/秒
支持5500 GET 请求/秒
可手动扩展卷大小而不用停止实例
基准性能:3 IOPS/GB gp2
更高性能要求请选择io1
高度可扩展的托管服务
支持最高7000次/秒的文件系统操作
数据 数据存储在区域内
在一个区域内的多个可用区备份
可以通过跨区域复制(CRR)达到跨区域级的容灾
数据存储在同一可用区
可以在多个可用区创建副本提高可用性
EFS数据存储在区域内
在区域内的多可用区备份
数据访问 访问策略控制权限
可通过Internet访问
只能被一台EC2实例访问 能被1-1000s台EC2跨AZ的实例同时访问
文件系统限制 可以作为文件系统被mount(s3fs服务), 但不推荐。
默认情况下桶的权限不会自动传递到桶内的文件夹。
支持各类文件系统,包括ext3和ext4 EC2的文件存储服务
EFS还能基于AWS Direct Connect为本地服务器提供NFS服务
支持的加密机制 服务器端加密(SSE-Amazon S3, SSE-KMS, SSE-C)
客户端加密(CMK+客户端master key)
AWS KMS托管的CMK和AES 256-bit 加密标准 AWS KMS托管的CMK和AES 256-bit 加密标准
访问控制 设置桶策略和用户策略
通过ACLs(access control list)来管理访问
基于IAM角色的预签名 URL访问
安全组
NACL
基于用户的授权(如IAM)
安全组
基于用户的授权(如IAM)
可用性 一年内99.99%的可用性 99.99%可用性 高可用性
可用区容灾 能承受2个可用区挂掉 不能承受所在可用区挂掉(如果没有及时创建EBS镜像的话) 分布式存储
多个可用区
能承受1个可用区挂掉
持久性 99.999999999% 是普通硬盘的20倍 高持久性
最终一致性问题 S3 在所有区域提供PUTS和DELETES的最终一致性 无此问题 无此问题

总结

综上,在这三个存储选项中,S3最便宜,可以配置为从任何地方访问,适用于采用一次写入、多次读取的应用。

再看看EFS和EBS的成本对比,EFS 的价格要比EBS贵,但更便宜的EBS一次只能让你的一个AmazonEC2实例去访问,这就很难应用于集群或分布式应用程序的分析场景。然而EBS可以提供比EFS更强的性能。所以简单理解,EFS 其实是比EBS多了一个共享网络存储的功能,关键还是看我们的实际需求了。

静态EBS VS 自动扩展EFS

举个例子,我们使用EBS和使用EFS的区别可以比作你需要将汽车停放在家庭车库,还是将汽车停放在租赁停车场。使用EBS就像在你自己的私人车库停车:你经常使用你的车,而且这个空间非常安全。使用EFS更像是在一个大的出租停车场停车:有很多人,包括你自己,共享一个公共空间来容纳大量的个人。让我们看看AWS EBS和AWS EFS之间的类比在现实生活中是如何工作的。