AWS快照和AMI的区别

140

所以我遇到了麻烦,无法确定这两者之间的具体区别。

据我所知,快照只是磁盘驱动器的备份,而AMI是整个系统(或者应该说是实例)的备份,但是整个系统难道不是完全位于磁盘驱动器上吗?如果是这样的话,那么就没有明显的区别,我可能漏掉了什么?

11个回答

82

有两种类型的 AMI(及相应的实例):

  1. instance-store(有时称为基于 S3)。这些较少见,我不建议初学者使用。instance-store AMI 是根 instance-store 卷的副本加上一些元数据,全部保存在特殊格式的 S3 存储桶中。

  2. EBS boot。这可能是你正在使用的。EBS boot AMI EBS 根卷的 EBS 快照加上像架构、内核、AMI 名称、描述、块设备映射等一些元数据。

你可以拍摄一个 EBS boot 卷的快照并通过注册相应的元数据将它转换成 EBS boot AMI。这其中最棘手的部分是指定正确的 AKI ID(内核),以便正确启动。


11
当你点击“创建 AMI”时,EC2 会创建该实例 EBS 卷的快照,并将其注册为 AMI。您可以启动新实例并指定该 AMI 作为起点。如果您只想查看其中的文件而不运行新实例,则还可以创建 EBS 快照的新卷。 - Eric Hammond
7
或者,您可以自己创建EBS卷的EBS快照,然后稍后将该快照注册为AMI。这是一种稍微困难些的创建AMI的方法,因为它需要您知道要设置哪些适当的AMI注册属性。"创建AMI"会为您完成所有这些工作。 - Eric Hammond
1
当我创建一个EBS AMI时,会自动创建快照,对吗?那么如果我删除该快照,是否仍然可以使用该AMI启动实例? - cosbor11
2
@cosbor11 你不能删除 AMI 的快照。 - Eric Hammond
1
@cosbor11 当我创建一个EBS AMI时,自动创建了一个快照,然后我尝试删除该快照,控制台弹出警告“当前快照正在被ami-xxxx使用”。https://i.stack.imgur.com/t6Cty.pngEric总是正确的。 - Ryan Lyu
显示剩余11条评论

32

主要区别在于所涉及的服务类型。快照是针对 EBS 卷的,您可以在某个时刻保存状态并重新启动相同数据。

AMI 类似,但适用于 EC2 实例本身。您无法对非 ebs 支持的实例进行快照,但可以创建一个 AMI(系统镜像)。

通常,我使用 EBS 快照作为数据库卷的备份解决方案,并使用 AMI 来保存实例配置。


4
如果我的卷包含数据库以及实例配置,那怎么办?AMI 保存了哪些内容而 EBS 快照没有保存(反之亦然)?谢谢。 - Melbourne2991
1
一个AMI可以立即启动到新实例。EBS快照可以复制到新卷(虚拟磁盘)。该虚拟磁盘可以用作新实例的基础,但它本身不是一个实例。 - Dan Pritts

32

我也曾对此感到困惑。以下是最简单的理解方式:

  • EBS快照通常表示特定EBS卷的备份,它可以是任何卷(根卷、数据卷等)。

  • AMI(Amazon Machine Image)是整个EC2实例的备份。例如,通过适当的配置,可以创建包括多个EBS卷的AMI。

现在,这可能听起来让人困惑,但它们都被存储为“EBS快照”。

只需这样想:

  • EBS快照只是数据备份。
  • AMI是特定时间系统状态的表示。您也可以从中引导启动。

如果我创建了根卷的快照,那么这个快照可以用来启动一个实例吗? - Gaurav Parashar
2
简短回答:不行。 因为EC2实例的唯一可用“启动选项”是AMI,所以无法仅使用卷直接进行启动。 但是,您可以从卷创建AMI,然后从最近创建的AMI启动实例(就像是一种间接选项)。 - skryvets

19

EBS Volume是EC2背后的基础磁盘。Snapshot是特定volume在某个时间点的备份,而AMI是对整个EC2实例进行备份,可能有多个挂载的卷,就像虚拟机一样。

使用Packer,您可以构建自动化机器映像,包括EC2的AMI、VMware的VMDK/VMX文件,VirtualBox的OVF导出等。

EC2  <-- EBS Volume (Boot) + EBS Volume 
                        ^
                        |
                     Snapshot (only of specific volume)       
                        ^
                        |
                       AMI (Combined snapshots of all volumes, snapshot must have boot volume) 
                        ^
                        | 
                  Launch a new Instance (same installed softwares and configs, different specs) 

快照可用于备份驱动器/卷。这是增量备份操作,这意味着每次您拍摄卷的快照时,它将仅添加自上次备份以来添加/引入到卷中的新更改(而不是整个备份),从而节省了备份时间,空间和最终成本。

快照可以用于以下方面:

  • 定期备份驱动器

  • 更改卷类型,例如您有流量或读写并且需要增加IO操作,因此您将从 gp2 更改为具有更高 IOPs io1

自定义AMI可用于以下方面:

  • 在当前运行的EC2实例损坏且无法运行的情况下进行灾难恢复。

  • 标准公司AMI已安装所有先决软件,简化了部署过程(例如配置连接到“ Splunk”,已安装某些监视和可观察性软件,已安装Docker,或者在启动时配置为连接Puppet或Chef)

  • AMI可用于在不同地区轻松部署应用程序。

  • 升级您的服务器以获得更高或不同规格的所有已安装软件及其配置

  • AMI可以在AWS账户之间公开共享。


你的第一段是我迄今为止读过的最清晰的定义。谢谢! - specialk1st

17

AMI可以使用快照创建。例如,使用单个“快照”可以创建多个AMI,比如一个使用相同快照的PV AMI和HVM AMI。

因此,快照具有系统/操作系统数据。AMI是(快照+机器/硬件元数据)。


1
如果我有一个AMI,从中创建了一个实例。那么这个AMI是否包含该实例上的数据?我的意思是,如果该实例包含Tomcat WAR文件,那么创建该实例的AMI也包括这些文件吗? - Dejell
1
如果您从包含Tomcat(或任何文件)的实例创建AMI,则新创建的AMI将包含这些文件/数据。从此AMI进一步创建的任何实例都将拥有这些文件。但是,从中创建实例的源AMI将不会拥有它们(假设您在实例创建后添加了文件)。 - Anshu Prateek

5
以下是AMI和EBS快照之间的几个不同点:
1)AMI可启动,包含根设备链接,可能包含其他数据卷的快照链接。
2)AMI中包含的数据镜像不表示一个明确定义的时间点,除非实例被重新启动,但在生产环境中通常不可接受。可以以一致的方式获取快照,因为它们的确切时间点可以被控制,所以在快照开始之前,可以确保一切“准备好备份”。
3)可以从现有的Linux根设备快照创建AMI,但无法用于Windows。

3
根据AWS提供的定义,AMI是一个模板,您可以从中启动EC2实例。EBS快照是EBS卷的块级副本。EBS卷可能是引导卷(即包含操作系统)或仅包含数据的卷(例如包含数据库文件)。您使用RegisterImage从快照创建AMI。
这是两个不同的概念,应用于不同的级别(EBS卷与EC2模板)。然而,这两个概念之间存在一些依赖关系。
对于基于EBS的EC2实例(即从EBS卷引导的EC2实例),AMI被实现为引导卷的EBS快照+一些元数据(机器架构-32位还是64位-虚拟化类型-HVM vs PV等...)
因此,对于基于EBS的EC2实例,AMI是一个EBS快照+ XML文件。您甚至可以根据自己拥有的引导卷快照创建自己的AMI。

2
快照作为备份策略使用成本较低,因为当您拥有多个快照时,您只需支付一个完整备份的费用,其余部分本质上只是差异,并且通常要小得多。

8
对于EBS引导的AMI来说,这种说法并不正确,因为它们实际上就是EBS快照再加上一些元数据。费用将完全相同。 - Eric Hammond

2
你可以将AMI视为带有操作系统和已安装组件的机器的通用模板,这些内容都将被保留。
快照可以包含与AMI相同的所有内容,但也保存了EBS卷的磁盘数据。
你决定使用哪个通常取决于你的实例是否支持EBS,并且你是想要完全重建一个拥有所有数据的机器,还是只需要一个通用的机器模板。

那么 AMI 不保存 EBS 卷吗? - Melbourne2991
1
一个AMI可以设置包含一个或多个EBS卷,但是这些卷在启动时将为空白,它们不会包含原始源机器所包含的数据。 - CIGuy
那么AMI实际上只是元数据(不确定这是否是正确的术语)?比如你使用的操作系统,实例的大小等等?它在技术上应该只有几KB的大小,对吗? - Melbourne2991
1
AMI还存储您在机器上安装的任何程序、操作系统级别的配置选项等等...因此它不仅仅是元数据,但是通常比快照要小得多。 - CIGuy
2
这个答案是错误的。AMI 包括一个或多个快照。也就是说,它引用了一个或多个快照(没有数据复制),并且还包含一些附加元数据。这就是为什么如果当前正在被 AMI 使用,您无法删除快照的原因。https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AMIs.html 还请参阅 Eric Hammond 在此线程中的贡献。 - Max Barraclough

2
我会用通俗易懂的语言解释这个概念: 把EC2实例看作是PC /笔记本电脑, EBS存储看作是硬盘, AMI则是操作系统映像。 因此,AMI是Amazon机器映像,而EBS快照是在任何时刻的弹性块存储快照。
AMI用于新启动EC2实例,而EBS快照可以在终止EC2实例之前备份,并可附加到任何EC2实例以进行存储和检索。

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