AWS EFS vs EBS vs S3(差异和何时使用?)

AWS EFS vs EBS vs S3 (differences & when to use?)

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

我对每个的理解:

那么为什么我要使用 EBS 而不是 EFS?看起来他们有相同的用例但语义差异很小?尽管 EFS 是跨 AZ 复制的,但 EBS 只是一个安装的设备。我想我缺乏对 EBS 的理解,因此我无法区分。

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

修复比较:

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

此时比较 EFS 和 EBS 还为时过早——EFS 的性能未知,其可靠性也未知。

为什么要使用 S3?

  • 您不需要将文件 'local' 到一个或多个 EC2 实例。
  • (有效)无限容量
  • 内置网络服务、身份验证

一句话回答:钱 :D

1 GB 存储在 US-East-1: (更新于 2016.dec.20)

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

更多存储选项,可用于临时存储数据while/before 处理数据:

  • 社交网络
  • SQS
  • 运动流
  • DynamoDB、SimpleDB

以上费用仅供参考。地区之间可能存在差异,并且随时可能发生变化。数据传输(到互联网)也有额外费用。然而,它们 显示了服务价格之间的比率

这些服务之间还有很多差异:

EFS 为:

  • Generally Available (预览版结束),但您所在的地区可能尚不可用
  • 网络文件系统(这意味着它可能有更大的延迟,但它可以在多个实例之间共享;甚至在区域之间)
  • 它比 EBS 贵(大约高出 10 倍),但它提供了额外的功能。
  • 这是一项高可用性服务。
  • 这是一项托管服务
  • 您可以将 EFS 存储附加到 EC2 实例
  • 可以被多个EC2实例同时访问
  • 因为 2016.dec.20 可以将您的 EFS 存储直接附加到 on-premise servers via Direct Connect. ()

EBS 是:

  • 一个块存储(所以你需要格式化它)。这意味着您可以选择所需的文件系统类型。
  • 由于它是块存储,您可以将 Raid 1(或 0 或 10)与多个块存储一起使用
  • 真快
  • 比较便宜
  • 根据 Amazon 的新公告,您可以在 SSD-s 上每个存储空间存储多达 16TB 的数据。
  • 出于备份原因,您可以对 EBS 进行快照(当它仍然 运行 时)
  • 但它只存在于特定区域。虽然可以迁移到其他区域,但不能跨区域访问(只有通过 EC2 共享;但那意味着您有一个文件服务器)
  • 您需要一个 EC2 实例来将其附加到
  • New feature (2017.Feb.15):您现在可以在使用卷时增加卷大小、调整性能或更改卷类型。在更改生效期间,您可以继续使用您的应用程序。

S3 是:

  • 对象存储(不是文件系统)。
  • 您可以存储文件 "folders" 但不能像传统文件系统那样拥有锁、权限等
  • 这意味着,默认情况下您不能只挂载 S3 并将其用作网络服务器
  • 但它非常适合为您的网站存储图像和视频
  • 非常适合短期归档(例如几周)。它也适用于长期归档,但 Glacier 更具成本效益。
  • 非常适合存储日志
  • 您可以访问每个地区的数据(可能需要支付额外费用)
  • 高可用性,冗余。基本上数据丢失是不可能的(99.999999999% 耐用性,99.9 正常运行时间 SLA)
  • 比EBS便宜很多。
  • 您可以将内容直接提供给互联网,您甚至可以拥有一个直接从 S3 运行的完整(静态)网站,而无需 EC2 实例

冰川是:

  • 长期归档存储
  • 存储非常便宜
  • 检索成本可能非常高
  • "read back" 您的数据最多需要 4 小时(因此只存储您知道不需要很长时间检索的项目)

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

来源:AWS Storage Update – New Lower Cost S3 Storage Option & Glacier Price Reduction

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

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

添加到比较中:(burst)read/write-performance EFS 取决于收集的学分。积分的收集取决于您存储在其上的数据量。更多日期 -> 更多学分。这意味着当您只需要经常读取或写入的几 GB 存储空间时,您很快就会 运行 耗尽信用并且吞吐量下降到大约 50kb/s。 解决此问题的唯一方法(在我的情况下)是添加大型虚拟文件以增加获得的积分。但是更多的存储空间 -> 更多的成本。

除了价格和功能,吞吐量也有很大差异(如 user1677120 所述):

EBS

取自EBS docs:

| 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,具体取决于卷大小。

您可以进一步提高吞吐量,例如deploying EBS volumes as RAID0

EFS

取自EFS docs

| 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 |

基本吞吐量是有保证的,突发吞吐量会用完您在低于基本吞吐量时收集的积分(因此您只能在有限的时间内获得此积分,有关详细信息,请参阅here

S3

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

简单来说

Amazon EBS 提供块级存储。

Amazon EFS 提供网络附加共享文件存储。

Amazon S3 提供对象存储。

Amazon EBS 提供块级存储 - 它用于在其上创建文件系统并存储文件。 Amazon EFS - 它的共享存储系统类似于 NAS/SAN。您需要将它挂载到 unix 服务器并使用它。 Amazon S3 - 它是基于对象的存储,其中每个项目都使用 http URL 存储。

其中一个区别是 - EBS 可以一次附加到 1 个实例,而 EFS 可以附加到多个实例,这就是共享存储的原因。 无法挂载 S2 普通对象存储。

EBS 很简单 - 块级存储,可以附加到来自同一 AZ 的实例,并且无论实例寿命如何都可以存活。

但是,有趣的区别在于 EFS 和 S3 之间,并为其确定适当的用例。

成本:EFS 的成本大约是 S3 的 10 倍。

用例:

  • 每当我们有数千个需要同时处理文件的实例时,建议使用 EFS 而不是 S3。
  • 另请注意,S3 是基于对象的存储,而 EFS 是基于文件的,这意味着无论何时我们需要持续更新(刷新)文件,我们都应该使用 EFS。
  • S3是最终一致性,而EFS是强一致性。如果您无法承受最终一致性,您应该使用 EFS

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

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

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

EBS 显然适用于块存储,您可以在其中安装 OS 或与您的 OS.

相关的任何内容

AWS EFS、EBS 和 S3。从功能的角度来看,这是区别

EFS:

  1. 网络文件系统:可以跨多个服务器共享;甚至地区之间。同样不适用于 EBS 案例。 这可以用于 esp 存储 ETL 程序而没有安全风险

  2. 高可用性、可扩展的服务。

  3. 运行 任何具有高工作负载、需要可扩展存储并且必须快速生成输出的应用程序。

  4. 可以提供更高的吞吐量。它与突然的文件系统增长相匹配,即使是每秒高达 500,000 IOPS 或 10 GB 的工作负载。

  5. 直接迁移应用程序支持:EFS 具有弹性、可用性和可扩展性,使您能够轻松快速地移动企业应用程序,而无需重新构建它们。

  6. 大数据分析:它能够运行大数据应用程序,这些应用程序需要显着的节点吞吐量、低延迟文件访问和先写后读操作。

EBS:

  1. 对于 NoSQL 数据库,EBS 为 NoSQL 数据库提供了峰值性能所需的低延迟性能和可靠性。

S3:

强大的性能、可扩展性和可用性:Amazon S3 可扩展存储资源,不受资源采购周期或前期投资的影响。

2) 数据湖和大数据分析:创建数据湖以原始格式保存原始数据,然后使用机器学习工具、分析来得出见解。

  1. 备份和恢复:安全、可靠的备份和恢复解决方案
  2. 数据归档
  3. S3 是一个对象存储,擅长存储大量备份或用户文件。与 EBS 或 EFS 不同,S3 不限于 EC2。可以通过编程方式或直接从 AWS CloudFront 等服务访问存储在 S3 存储桶中的文件。许多网站使用它来保存他们的内容和媒体文件,这些文件可以通过 AWS CloudFront 高效地提供。

其他人已经回答了很多这个问题,我只想说明一点,每当决定将任何服务置于 AWS 中时,了解每个服务的用例并查看该服务将在其中提供的解决方案就 Well-Architected Framework 而言,您是否需要高可用性、容错性、成本优化。这将有助于决定要使用的任何类型的服务。

EBS 和 EFS 之间的主要区别在于,EBS 只能从您特定 AWS 区域中的单个 EC2 实例访问,而 EFS 允许您跨多个区域和实例安装文件系统。

最后,Amazon S3 是一个对象存储,擅长存储大量备份或用户文件。

AWS(亚马逊网络服务)以其广泛的产品线而闻名。有(可能)一些 Amazon Web Services 忍者确切地知道如何以及何时使用哪种 Amazon 产品来完成哪些任务。我们其他人迫切需要帮助。

AWS 提供三种常见的存储服务:S3、弹性块存储 (EBS) 和弹性文件系统 (EFS),它们的功能各不相同,并提供不同级别的性能、成本、可用性和可扩展性。我们将比较这些存储选项的性能、成本和存储数据的可访问性,以及它们的用例。

AWS 存储选项:

Amazon S3 是一种基本的对象存储服务,可用于托管网站图像和视频,以及数据分析和智能手机和网络应用程序。数据在对象存储中作为对象进行管理,这意味着所有数据类型都以其本机格式存储。使用对象存储,没有文件关系的层次结构,数据对象可以通过许多机器传播。您可以从任何具有互联网连接的计算机使用 S3 服务。

AWS EBS 提供持久的块级数据存储。块存储系统比标准文件存储更通用并且提供更好的容量,因为文件存储在称为块的多个卷中,这些卷用作单独的硬盘驱动器。必须使用 EBS 挂载 Amazon EC2 实例。业务连续性、软件测试和数据库管理是用例的示例。

AWS EFS 是一种共享的弹性文件存储框架,可根据文件的添加和删除进行扩展和收缩。它遵循传统的文件存储模型,将数据组织到文件夹和子目录中。 EFS 对于内容管理系统和 SaaS 应用程序很有用。 EFS 可以同时挂载到多个 EC2 实例上。

哪种 AWS 云存储服务最好?

一如既往,视情况而定。

仅就数据存储而言,Amazon S3 是最便宜的选择。另一方面,S3 有一系列其他定价标准,包括每次上传成本、S3 分析和每 GB 的 S3 数据传输。 EFS的成本结构是最直接的。

Amazon S3 是一种可以从任何地方访问的云存储服务。 AWS EBS 只能在单个区域访问,而多个 EFS 实例可以跨多个区域共享文件。

EBS 和 EFS 在 IOPS 和延迟方面均优于 Amazon S3。

通过单个 API 调用,EBS 可以按比例放大或缩小。您可以将 EBS 用于数据库备份和其他需要可靠、可预测性能的低延迟交互式应用程序,因为它比 EFS 便宜。

EFS 可以更好地处理大量数据,例如大型分析工作负载。用户必须分解数据并将其分布在 EBS 实例之间,因为这种规模的数据不能存储在 EBS 允许的单个 EC2 实例上。 EFS 服务允许同时访问数千个 EC2 实例,允许实时处理和分析海量数据。