根据问题的标题,AWS EFS、EBS和S3之间的实际区别是什么?

我对每一个的理解:

S3是一种在任何地方都可以访问的存储设施 EBS是可以挂载到EC2上的设备 EFS是一个可以挂载到EC2上的文件系统

为什么要用EBS而不是EFS呢?看起来他们有相同的用例,但有轻微的语义差异?尽管EFS是跨az复制的,因为EBS只是一个挂载设备。我想我对EBS的理解不足,所以我无法区分。

为什么选择S3而不是EFS?它们都可以存储文件、缩放和复制。我想S3必须使用SDK,而EFS是文件系统,您可以使用您选择的编程语言中的标准I/O方法来创建文件。但这是唯一真正的区别吗?


当前回答

简单地说

Amazon EBS提供块级存储。

Amazon EFS提供网络连接的共享文件存储。

Amazon S3提供对象存储功能。

其他回答

修正比较:

S3是一种在任何地方都可以访问的存储设施 EBS是可以挂载到EC2上的设备 EFS是一个可以同时挂载到多个EC2实例上的文件系统

在这一点上,比较EFS和EBS还为时过早——EFS的性能还不知道,可靠性也不知道。

为什么要使用S3?

对于一个或多个EC2实例,您不需要文件是“本地”的。 (有效地)无限容量 内置web服务,身份验证

我想知道为什么人们不强调支持EFS的最令人信服的原因。EFS可以同时挂载到多个EC2实例上,从而允许同时访问EFS上的文件。

(编辑2020年5月,EBS现在也支持同时挂载到多个EC2,请参阅: https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-volumes-multi.html)

这个问题很多人都回答了,我只是想说明一点,无论何时决定在AWS中加入任何服务,都要了解每个服务的用例,并看到该服务将提供的良好架构框架的解决方案,你是否需要高可用性,故障相关,成本优化。这将有助于决定要使用的任何类型的服务。

除了价格和功能之外,吞吐量也有很大差异(正如user1677120所提到的):

EBS

摘自EBS文档:

| EBS volume | Throughput |           Throughput          |
|    type    |   MiB/s    |         dependent on..        |
|------------|------------|-------------------------------|
| gp2 (SSD)  | 128-160    | volume size                   |
| io1 (SSD)  | 0.25-500   | IOPS (256Kib/s per IOPS)      |
| st1 (HDD)  | 20-500     | volume size (40Mib/s per TiB) |
| sc1 (HDD)  | 6-250      | volume size (12Mib/s per TiB) |

请注意,对于io1, st1和sc1,您可以将吞吐量流量突发到至少125Mib/s,但也可以突发到500Mib/s,这取决于卷大小。

您可以通过将EBS卷部署为RAID0来进一步提高吞吐量

EFS

摘自EFS文档

| Filesystem |    Base    |   Burst    |
|    Size    | Throughput | Throughput |
|    GiB     |   MiB/s    |   MiB/s    |
|------------|------------|------------|
|         10 |        0.5 |        100 |
|        256 |       12.5 |        100 |
|        512 |       25.0 |        100 |
|       1024 |       50.0 |        100 |
|       1536 |       75.0 |        150 |
|       2048 |      100.0 |        200 |
|       3072 |      150.0 |        300 |
|       4096 |      200.0 |        400 |

基本吞吐量是有保证的,爆发吞吐量会消耗你在低于基本吞吐量时所收集到的积分(所以你只能在有限的时间内拥有它,参见这里了解更多详细信息。

S3

S3是完全不同的东西,所以它不能真正与EBS和EFS相比。另外:S3没有公布的吞吐量指标。您可以通过并行下载来提高吞吐量(我在某个地方读到AWS的声明,这样基本上可以获得无限的吞吐量),或者将CloudFront添加到组合中

EFS和S3有相同的用途,你可以存储任何类型的对象或文件。

但对我来说,唯一的区别是EFS允许您在VM(EC2)云中拥有一个传统的文件系统,具有更大的灵活性,例如可以附加到多个实例。

另一方面,S3是对象的一个独立的灵活且有弹性的服务器。它可以用于你的静态文件,图像,视频,甚至托管静态应用程序(js)。

EBS显然是用于块存储的,您可以在其中安装操作系统或与操作系统相关的任何东西。