AWS EFS和S3有什么区别?

5
本周AWS发布了新的弹性文件系统。请查看http://aws.amazon.com/efs/。 该页面并未包含很多细节。我想知道它与S3相比的性能,以及其他差异。

1
可能是以下问题的重复:AWS EFS vs EBS vs S3 (区别和何时使用?) - PSR
5个回答

14

你几乎无法把EFS和S3进行比较,因为它们是两个非常不同的东西,尽管它们的功能有些重叠或者至少表面上看起来是这样。

它们都用于存储数据,并且它们的存储价格模型随着时间的推移呈线性增长。

但是S3是一个具有HTTP接口和混合一致性模型的对象存储...

而EFS是一个实际的文件系统,具有NFS接口,因此几乎肯定会提供即时一致性。

使用像s3fs这样的工具将S3与其它组件结合使用可以模拟文件系统的方式,但并不能在所有情况下完全像实际的文件系统那样运行。

从某种意义上说,EFS是回答“如何将EBS卷同时附加到多个实例?”这个问题的答案。以前,当然是“你不能”。您可以在任意数量的实例上挂载EFS公开的文件系统,结果应该与您拥有“共享卷”时看到的非常相似。

与S3相比,它的性能并不是一个公平的比较,因为它们是为不同目的而设计的不同东西,但从任何有意义的定义来看,EFS几乎毫无疑问会更“快”。

另外,在Linux系统上挂载EFS文件系统不需要任何软件。


不清楚为什么这个答案会收到踩,因为它并不是我认为的极其草率、毫不费力的帖子或者明显而且可能危险的错误答案。也许那个不喜欢这个答案的用户会再次出现并解释我的错误。 - Michael - sqlbot
S3现在支持强一致性,截至2020年。 - AustinP

9

如前所述,EFS与S3完全不同。最简单的方法是查看底层技术。

S3是对象存储,意味着它是一种更高层次的数据存储系统,本质上是一个数据库“blob”存储,将数据以对象的形式存储在底层的简单数据库中。它被设计为“一次写入,多次读取”访问,非常适合像图像或视频这样的媒体数据,特别是因为它是分布式的,并提供非常高的冗余性。

EFS是网络存储系统,底层是存储阵列(SAN),并且它提供了用于多会话网络文件系统(NFS)的标准协议。它构建在高速SSD驱动器上,旨在用于您的EC2实例的共享存储,类似于文件服务器。这对于AWS来说是一个漫长的过程,我认为这是AWS缺失的最重要的关键组件之一,以便真正成为竞争对手。

EFS的性能将是可扩展的,虽然我还没有看到详细信息,但我相信它将允许像EBS一样提供预配置的IOPS。


在AWS论坛上,EFS的性能一直是投诉的来源。似乎很多投诉都来自那些期望与EBS类似的性能的人。 - curious_george
1
那真是太天真了,我经常看到DBA和其他数字分析人员抱怨网络存储的性能问题。归根结底,网络可访问存储阵列甚至光纤通道阵列的性能都无法与直接连接的存储相比。你可以购买一款1000美元的PCIe SSD驱动器,它的随机IOPS写入速度高达一百万,但在分布式系统中有什么用呢?它们是完全不同的解决方案,适用于完全不同的用例。 - Josh James Saunders

7

EFS比S3要贵很多(10倍),价格为0.30美元/GB vs 0.03美元/GB。从IOPs的角度来看,EFS应该会表现得更好,因为它是基于SSD的,而且不像S3那样在顶部有HTTP的开销。它是必要的作为一项NAS服务。


2

两者之间的两个额外差异:

  1. AWS S3提供服务器端加密:http://docs.aws.amazon.com/AmazonS3/latest/dev/serv-side-encryption.html 目前AWS EFS不提供此功能。
  2. AWS S3中存储为公共的文件可通过公共URL被任何人访问。 然而,在AWS EFS中,为了实现相同的功能,您需要部署一个将为您提供文件的Web服务器。

0
选择EFS和S3取决于您的使用模式。
EFS的可用性和耐久性与S3相同,
但两者有不同的使用模式。
S3有四种常见的使用模式:
- 静态网页内容 - 托管整个静态网站 - 存储大规模分析数据 - 备份和归档重要数据
EFS专为同时从多个EC2实例访问数据的应用程序而设计。
简单地说,通过一个EFS,您可以将其附加到多个EC2上。而这是EBS所无法做到的。
亚马逊声称S3的性能超出了任何当前用户的需求。
EFS的性能有两种模式:
- 通用目的 - 最大I/O
通用目的是默认设置,适用于大多数操作类型。
但是,如果您的工作负载将超过每秒7000次文件操作,则应选择最大I/O模式。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接