EBS与实例存储的优势(反之亦然)
我不清楚EBS和Amazon EC2上实例的实例存储有什么好处。 如果有的话,似乎EBS更有用(停止,开始,坚持+更好的速度),成本差异相对较小…? 此外,考虑到现在还有些新的东西,是否有更多的人使用EBS?
底线是你应该几乎总是使用EBS支持的实例。
这是为什么
- EBS支持的实例可以设置为不能(意外)通过API终止。
- 当您不使用EBS支持的实例时,可以停止EBS支持的实例,并且当您再次需要时(例如暂停虚拟PC),可以停止EBS支持的实例,至less使用我的使用模式比我花费在几十GB的EBS存储上省钱更多。
- EBS支持的实例在发生崩溃时不会丢失实例存储(不是所有用户的要求,但会使恢复速度更快)
- 您可以dynamic调整EBS实例存储的大小。
- 您可以将EBS实例存储转移到一个全新的实例(如果您在Amazon上运行的硬件出现故障或死亡,这种情况有时会发生)
- 启动支持EBS的实例会更快,因为不必从S3中获取映像。
- 如果您的EBS支持的实例计划维护的硬件,则停止并启动该实例会自动迁移到新硬件。 我还能够通过强制停止实例并重新启动实例来在发生故障的硬件上移动EBS支持的实例(在故障硬件上,您的里程可能会有所不同)。
我是亚马逊的大用户,一旦技术出来,我就把所有的实例都切换到EBS支持的存储。 我对结果非常满意。
EBS仍然可能失败 – 不是一个银弹
请记住,任何基于云的基础架构都可能随时失败。 相应地规划基础设施 虽然EBS支持的实例与短暂存储实例相比提供了一定的耐用性,但它们可能会失败。 有一个AMI,您可以根据需要在任何可用区域启动新实例,备份重要数据(如数据库),如果您的预算允许,则运行多个服务器实例以实现负载平衡和冗余(理想情况下在多个可用区域)。
何时不到
在某些时候,在实例存储实例上实现更快的IO可能会更便宜。 有一段时间当然是真的。 现在EBS存储有很多select,迎合许多需求。 随着技术的变化,期权和他们的定价不断变化。 如果您拥有大量真正可支配的实例(如果它们刚刚消失,它们不会影响您的业务),请根据成本与性能进行计算。 EBS支持的实例也可以在任何时候死亡,但是我的实践经验是EBS更耐用。
99%的AWS设置是可回收的。 所以对于我来说,如果我终止一个实例并不重要 – 没有任何事情会丢失。 例如,我的应用程序被自动部署在来自SVN的实例上,我们的日志被写入中央系统日志服务器。
我看到的实例存储的唯一好处是可以节省成本。 否则EBS支持的实例赢了。 埃里克提到了所有的优点。
[2012-07-16]今天我会说这个答案很不一样。
在过去的一年里,我对EBS支持的实例没有什么好的经验。 AWS上的最后一次停机时间也几乎破坏了EBS。
我猜测像RDS这样的服务也使用某种types的EBS,而且似乎大部分工作。 在我们自己pipe理的情况下,我们在可能的情况下摆脱了EBS。
摆脱我们将数据库集群移回铁(=真正的硬件)。 我们基础架构中唯一剩下的部分就是数据库服务器,我们将多个EBS卷分成一个软件RAID并每天备份两次。 无论在备份之间会丢失什么,我们都可以忍受。
EBS实际上是一个有点风格的技术,因为它本质上是一个networking卷:从远程连接到您的服务器的卷。 我并不否定用它完成的工作 – 这是一个了不起的产品,因为基本上无限的持久性存储只是一个API调用。 但是这对于I / O性能非常关键的场景来说并不合适。
除了networking存储的行为之外,所有networking都在EC2实例上共享。 一个实例越小(例如t1.micro,m1.small)越糟糕,因为实际主机系统上的networking接口在多个虚拟机(=您的EC2实例)之间共享,而这些虚拟机在其上运行。
你得到的例子越多,当然就越好 。 这里更好意味着合理 。
当需要持久化时,我总是build议人们使用类似S3的东西来集中实例。 S3是一个非常稳定的服务。 然后将您的实例设置自动化,以便您可以引导新服务器,并自行准备就绪。 那么就没有必要拥有比实例寿命更长的networking存储。
所以总的来说,我认为EBS支持的实例没有任何好处。 我宁愿加一分钟来引导,然后运行一个潜在的SPOF。
我们喜欢实例商店。 它迫使我们将实例完全重新利用,并且我们可以轻松地自动化在给定的AMI上从零开始构build服务器的过程。 这也意味着我们可以轻松更换AMI。 另外,EBS还会不时出现性能问题。
埃里克几乎钉了它。 我们( Bitnami )是stream行的应用程序和开发框架(PHP,Joomla,Drupal,你有这个想法)的免费AMIstream行的提供商。 我可以告诉你,EBS支持的AMI比S3支持的更受欢迎。 一般来说,我认为s3支持的实例用于分布式的,有时间限制的作业(例如,大规模的数据处理),如果一台机器出现故障,另一台机器就被拆分了。 EBS支持的AMIS倾向于用于“传统”服务器任务,例如在本地保持状态的Web或数据库服务器,因此需要数据在崩溃的情况下可用。
我没有提到的一个方面是,您可以在运行时拍摄EBS支持的实例的快照,从而可以有效地为您的基础架构提供经济高效的备份(快照是基于块的和增量式的)
我在最后一个位置和Eric有完全相同的经历。 现在,在我的新工作中,我正在经历与上一次工作相同的过程…为EBS支持的实例重build所有的AMI – 也可能是32位机器(更便宜 – 但不能在32和32上使用相同的AMI 64台机器)。
EBS支持的实例启动速度足够快,您可以开始使用Amazon AutoScaling API ,通过该API您可以使用CloudWatch指标来触发其他实例的启动并将它们注册到ELB(弹性负载平衡器),并在closures时closures它们不再需要。
这种dynamic自动缩放就是AWS所关心的 – IT基础架构的真正节约可以发挥作用。 用旧的s3“InstanceStore”-backed实例进行自动缩放几乎是不可能的。
我刚刚开始使用EC2,所以不是专家,但是亚马逊自己的文档说:
我们build议您使用本地实例存储库来获取临时数据,而对于需要更高级别持久性的数据 ,我们build议使用Amazon EBS卷或将数据备份到Amazon S3。
强调我的。
我做了比networking托pipe更多的数据分析 ,所以持久性对我来说并不重要,因为它可能是一个网站。 鉴于亚马逊本身的区分,我不会认为EBS适合每个人。
我会尽量记住在使用两者后再次称重。
EC2“硬件”
当启动一个EC2实例时,为实例运行保留一个虚拟机。 该虚拟机具有特定的规格,具体取决于实例types:32位或64位CPU,虚拟内核数量,硬盘大小等。有关实例规格的详细信息,请访问http://aws.amazon.com / ec2 /#实例 。
当您的EC2实例处于“正在运行”状态时,这意味着它正在虚拟机上运行,这就是您要收取的费用。
虚拟机的硬盘被认为是“短暂的”。 术语“短暂”来自希腊词“ephemeros”,意思是“只持续一天”。 这样的硬盘上的任何东西都应该被认为是暂时的。 除非数据从硬盘上被复制,否则虚拟机停止运行,数据将丢失。 这包括数据,软件,甚至是驻留在这些硬盘上的操作系统。
Amazon Web Services为EC2实例提供两种types的根设备:“EBS支持”和“实例存储”。
“实例商店”实例
“实例存储”实例是其根设备驻留在虚拟机硬盘驱动器上的EC2实例。 创build实例时,将基本AMI复制到虚拟机的硬盘驱动器并启动。 实例可以运行,只要你想,但不能停止。 由于实例的根设备是实际的硬盘驱动器,因此它在硬件上“卡住”,唯一可以做的就是终止实例。 如果你这样做,实例被删除,永远不会被恢复。 如果虚拟机的硬件出现故障,您也会冒风险,那么您在硬盘上也会丢失任何东西。
如果您启动“实例存储”实例,请准备好将其保持运行状态,直到完成完成。 请注意,您将从实例启动的那一刻起,直到它终止的时候收取费用。
“EBS支持”实例
“EBS支持的”实例是使用EBS卷作为其根设备的EC2实例。 EBS卷是冗余的“虚拟”驱动器,不受限于任何特定硬件,但是它们仅限于特定的EC2可用区。 这意味着EBS卷可以在同一个可用区域内从一个硬件移动到另一个硬件。 您可以将EBS卷看作一种networking附加存储。
如果虚拟机硬件发生故障,EBS卷可以简单地移动到另一个虚拟机并重新启动。 从理论上讲,你不会丢失任何数据。
另一个好处是,EBS卷可以很容易地备份和复制。 因此,您可以轻松备份卷的备份快照,创build新卷并基于这些重复的卷启动新的EC2实例。
“EBS支持”的实例最大的优势可能是“实例存储”实例,它们可以被阻止。 当您这样做时,虚拟机将closures,并存储EBS卷供以后检索。 硬件然后可供其他人使用。 另外,在这段时间内,您不收取EC2实例运行费用。 但是您收取EBS存储费。 当你想要实例再次运行时,你只需要重新启动它。 一个新的虚拟机被保留,你的EBS卷被连接,并且你的实例被启动。
但是虚拟机的硬盘呢?
是的,即使您的EC2实例是“EBS支持”,也可以使用这些硬盘驱动器。 默认情况下,它们不可用。 如果使用命令行程序启动实例,则可以使用ec2-run-instances命令中的“-b”选项将“实例存储”驱动器连接到EC2实例。
如果要存储临时数据,使用这些驱动器可能会有所帮助。 读取和写入访问应该比读取和写入EBS卷要快,因为您不通过networking发送数据。 另外,您不需要支付数据传输或数据存储费用。 但是这只有在数据可能随时丢失的情况下才有效。
来源: https : //skeddly.desk.com/customer/portal/articles/1346918-ebs-backed-versus-instance-store
EBS就像虚拟机的虚拟磁盘一样:
- EBS支持的实例可以自由启动和停止(节省资金)
- 可以在任何时间点快照,以获得时间点备份
- 可以从EBS快照创buildAMI,因此EBS卷成为新系统的模板
实例存储是:
- 本地,所以一般更快
- 非联网,在正常情况下,EBS I / O是以networking带宽为代价的(除了
- 每秒IOPS有限的I / O)。 即使提供了几千IOPS的I / O最大值也是如此
- 脆弱。 只要实例停止,您将丢失实例存储中的所有内容。
这里是每个使用的地方:
- 使用EBS作为后台操作系统分区和永久存储(DB数据,关键日志,应用程序configuration)
- 使用实例存储来处理进程内数据,非关键日志和瞬态应用程序状态。 例如:外部分类存储,临时文件等
- 实例存储也可以用于性能关键型数据,在实例之间进行复制时(NoSQL DB,分布式队列/消息系统和具有复制的DB)
- 使用S3来处理系统之间共享的数据:input数据集和处理结果,或每个系统使用的静态数据。
- 将AMI用于预焙,可启动的服务器
大多数人select使用EBS支持的实例,因为它是有状态的。 这是安全的,因为你在里面运行和安装的所有东西都能在停止/停止或任何实例失败的情况下生存下来。
实例存储是无状态的,如果出现任何实例故障情况,则将其与所有数据放在一起。 但是,由于实例卷与虚拟机所在的物理服务器绑定,因此它是免费且更快的。
对于所有这些,如果意外降落在这里的人
截至目前,快速入门部分的所有AMI均支持EBS
EBS和Instance商店之间的区别在官方文档中也有很好的解释
这个图像几乎总结起来
如果您运行多个实例并将AWS实例的预定服务作为避免意外收费的优先事项之一,我build议不要使用实例存储 。
正如EBS卷的文档以及j2d3和Siddharth Sharma的答案所解释的那样,实例存储库可以只运行一段时间,但不能停止 。 意味着服务不能通过自动启动/停止或实例恢复进行调度。
此外,对于这种scheme,使用EBS Backed on Elastic Beanstalk也没有好处,因为它旨在确保您所需的所有资源都可以继续运行 。 它将始终会自动重新启动您停止的任何服务。 回顾其余部分 ,在使用添加到EC2-Classic的VPC , EBS和ELB的总费用中,与EL2 -Classic不同 , EC2-VPC与ELB -Classic几乎是最好的select,停止的实例保留其相关的弹性IP地址和EBS卷是自动存储的 。
作为结论 ,考虑到你的问题的主要部分:
似乎EBS在成本差异相对较小的情况下更有用(停止,开始,坚持+更好的速度)。
答案是肯定的,但如果您的实例是基于EBS的,则可以停止。 它将保留在您的帐户中, 您不会被收取费用 。 您将只收取数量,但EBS按小时计费 。 您也可以考虑在所有可用的types中,您可以灵活地调整EBS卷的大小 。
除了埃里克已经列出的好处之外,还应该知道,在成本方面, S3可能比EBS便宜也可能不便宜 。 我同意,如果您始终在应用程序的同一平台和体系结构中同时运行两种types的实例 ,则成本相差不大。
但是,如果有一个场景在较低成本的服务上运行应用程序,那么将所有未处理的任务拉到 VPC / EBS中,通过pipe道或lambda在短时间内每天<1小时, 这是不可能的使用实例存储 ,那么这将是一个不同的故事。