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

我对每一个的理解:

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

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

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


当前回答

除了价格和功能之外,吞吐量也有很大差异(正如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的最令人信服的原因。EFS可以同时挂载到多个EC2实例上,从而允许同时访问EFS上的文件。

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

答案:D

1 GB存储在US-East-1: (更新至2016年12月20日)

冰川:0.004美元/月(注:2016年大幅降价) S3: 0.023美元/月 S3-IA(2015年9月公布): $0.0125/月(+$0.01/gig检索费用) EBS: $0.045-0.1/月(取决于速度- SSD与否)+ IOPS成本 EFS: 0.3美元/月

进一步的存储选项,可用于在处理数据时/之前临时存储数据:

SNS SQS 运动流 DynamoDB, SimpleDB

以上成本仅为样本。不同地区之间可能存在差异,并且在任何时候都可能发生变化。此外,数据传输(到互联网上)还需要额外的费用。然而,它们显示了服务价格之间的比率。

这些服务之间有很多区别:

EFS 是:

Generally Available (out of preview), but may not yet be available in your region Network filesystem (that means it may have bigger latency but it can be shared across several instances; even between regions) It is expensive compared to EBS (~10x more) but it gives extra features. It's a highly available service. It's a managed service You can attach the EFS storage to an EC2 Instance Can be accessed by multiple EC2 instances simultaneously Since 2016.dec.20 it's possible to attach your EFS storage directly to on-premise servers via Direct Connect. ()

EBS是:

A block storage (so you need to format it). This means you are able to choose which type of file system you want. As it's a block storage, you can use Raid 1 (or 0 or 10) with multiple block storages It is really fast It is relatively cheap With the new announcements from Amazon, you can store up to 16TB data per storage on SSD-s. You can snapshot an EBS (while it's still running) for backup reasons But it only exists in a particular region. Although you can migrate it to another region, you cannot just access it across regions (only if you share it via the EC2; but that means you have a file server) You need an EC2 instance to attach it to New feature (2017.Feb.15): You can now increase volume size, adjust performance, or change the volume type while the volume is in use. You can continue to use your application while the change takes effect.

S3是:

An object store (not a file system). You can store files and "folders" but can't have locks, permissions etc like you would with a traditional file system This means, by default you can't just mount S3 and use it as your webserver But it's perfect for storing your images and videos for your website Great for short term archiving (e.g. a few weeks). It's good for long term archiving too, but Glacier is more cost efficient. Great for storing logs You can access the data from every region (extra costs may apply) Highly Available, Redundant. Basically data loss is not possible (99.999999999% durability, 99.9 uptime SLA) Much cheaper than EBS. You can serve the content directly to the internet, you can even have a full (static) website working direct from S3, without an EC2 instance

冰川是:

长期存档存储 储存非常便宜 回收可能非常昂贵 “回读”你的数据需要4个小时(所以只存储你知道你在很长一段时间内不需要检索的项目)

正如JDL的评论中提到的,在定价方面有几个有趣的方面。例如,Glacier、S3、EFS根据您的使用情况为您分配存储,而在EBS,您需要预先定义分配的存储。也就是说,你需要高估。(然而,向EBS卷添加更多存储是很容易的,这需要一些工程,这意味着您总是“多付”EBS存储,这使得它更加昂贵。)

来源:AWS存储更新-新的低成本S3存储选项和冰川降价

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

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

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

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

修正比较:

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

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

为什么要使用S3?

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

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