AWS 快照和 AMI 之间的区别
Posted
技术标签:
【中文标题】AWS 快照和 AMI 之间的区别【英文标题】:AWS Difference between a snapshot and AMI 【发布时间】:2013-07-11 06:31:06 【问题描述】:所以我很难弄清楚这两者之间的区别。
据我了解,快照只是磁盘驱动器的备份,而 AMI 是整个系统(或我应该说的实例)的备份,但从技术上讲,整个系统并非完全位于磁盘上驾驶?如果是这样,那么没有明显的区别,我错过了什么?
【问题讨论】:
【参考方案1】:有两种类型的 AMI(和相应的实例):
实例存储(有时称为基于 S3)。这些不太常见,我不建议初学者使用它们。实例存储 AMI 是根实例存储卷和一些元数据的副本,全部以特殊格式保存在 S3 存储桶中
EBS 引导。这可能是您正在使用的。 EBS 启动 AMI 是 EBS 根卷的 EBS 快照以及一些元数据,例如架构、内核、AMI 名称、描述、块设备映射等。
您可以拍摄 EBS 启动卷的快照,并通过使用适当的元数据注册它来将其转换为 EBS 启动 AMI。其中最棘手的部分是指定正确的 AKI id(内核),以便正确启动。
【讨论】:
我不知道您所说的“备份 AMI 映像”是什么意思。 当您单击“创建 AMI”时,EC2 会创建该实例的 EBS 卷的 EBS 快照并将其注册为 AMI。您可以启动指定该 AMI 作为起点的新实例。如果您只想查看其中的文件而不运行新实例,也可以创建 EBS 快照的新卷。 或者,您可以自己创建 EBS 卷的 EBS 快照,然后将该快照注册为 AMI。这是创建 AMI 的一种稍微困难的方法,因为它需要您知道要设置的适当 AMI 注册属性。 “创建 AMI”为您完成所有这些工作。 当我创建 EBS AMI 时,会自动创建快照,对吗?那么,如果我删除了那个快照,我还能使用那个 AMI 启动一个实例吗? @cosbor11 您无法删除 AMI 的快照。【参考方案2】:主要区别在于所指的服务类型。快照是 EBS 卷的快照,您可以在其中保存状态并在某个时间点使用相同的数据重新启动。
AMI 类似,但它适用于 EC2 实例本身。您无法拍摄非 ebs 支持的实例的快照,但您可以创建一个 AMI(系统映像)。
通常我使用 EBS 快照作为数据库卷的备份解决方案,并使用 AMI 来保存实例配置
【讨论】:
如果我的卷包含我的数据库以及我的实例配置怎么办? AMI 保存了 EBS 快照没有保存的什么(反之亦然)?谢谢 一个 AMI 可以立即启动到一个新实例。可以将 EBS 快照复制到新卷(虚拟磁盘)。该虚拟磁盘可以用作新实例的基础,但它本身并不是一个实例。【参考方案3】:我也对此感到困惑。这是最简单的理解方式:
EBS Snapshot
经常代表特定EBS卷的备份,它可能是任何卷(根卷、数据卷等)
AMI
(亚马逊系统映像)是整个 EC2 实例的备份。例如,通过适当的配置,可以创建包含多个 EBS 卷的 AMI。
现在,这听起来可能令人困惑,但它们都存储为“EBS 快照”。
这样想:
EBS Snapshot
只是一个数据备份。
AMI
是特定时间系统状态的表示。您也可以从它启动。
【讨论】:
那么如果我创建了根卷的快照,该快照可以用于启动实例吗? 简短回答:不。不能直接使用卷来完成,因为 EC2 的唯一可用“启动选项”是 AMI。但是,您可以从卷创建 AMI 并从最近创建的 AMI 启动实例(如间接选项)。【参考方案4】:可以使用快照创建 AMI。例如,使用单个“快照”,您可以创建多个 AMI,例如使用同一个快照的一个 PV 和一个 HVM AMI。
因此,快照具有系统/操作系统数据。 AMI 是(快照 + 机器/硬件元数据)。
【讨论】:
如果我有一个 AMI,那么一个实例就是从它创建的。 AMI 是否包含该实例的数据?我的意思是,如果实例包含 tomcat WAR 文件,那么创建该实例的 AMI 是否也包括在内? 如果您从包含 tomcat(或任何文件)的实例中创建 AMI,那么新创建的 AMI 将包含这些文件/数据。从此 AMI 进一步创建的任何实例都将具有这些文件。但是,您从中创建实例的源 AMI 将没有它们(假设您在创建实例后将文件添加到实例)。【参考方案5】: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)
快照可用于备份驱动器/卷。它是增量备份操作,这意味着每次拍摄卷的快照时,它只会添加自上次备份(不是整个备份)以来添加/引入卷的新更改,从而节省备份时间、空间并最终节省成本.
快照可用于:
定期备份驱动器
改变volume的类型,比如你有流量或者读写,需要增加IO操作所以你从gp2
改成io1
更高的IOPs
自定义 AMI 可用于:
用于灾难恢复,以防当前运行的 EC2 实例损坏且无故无法运行。
标准公司的 AMI,所有安装了简化部署过程的必备软件(例如,配置为连接到 `Splunk,安装了一些监控和可观察性软件,安装了 docker,或者配置为连接 Puppet 或 Chef在启动中)
AMI 可用于在不同区域轻松部署您的应用程序。
使用所有已安装的软件及其配置将您的服务器升级到更高或不同的规格
AMI 可以在 AWS 账户之间公开共享。
【讨论】:
你的第一段是迄今为止我读过的最清晰的定义。谢谢!【参考方案6】:以下是 AMI 和 EBS 快照之间的更多区别:
1) AMI 是可启动的,包含指向根设备的链接,并且可能包含指向其他数据卷快照的链接。
2) AMI 中包含的数据映像不代表明确定义的时间点,除非重新启动实例,这对于生产环境通常是不可接受的。快照可以以一致的方式拍摄,因为它们的确切时间点可以控制,因此在快照开始之前可以确保一切都“准备好备份”。
3) AMI 可以从根设备的现有快照创建,适用于 Linux,但不适用于 Windows。
【讨论】:
【参考方案7】:您可以将 AMI 视为保留操作系统和已安装组件的机器的通用模板。
快照可以包括 AMI 所做的一切,但也可以保存 EBS 卷的磁盘数据。
您决定使用哪一个通常取决于您的实例是否支持 EBS,以及您是想准确地重新创建所有数据完整的机器还是只需要通用机器模板。
【讨论】:
所以 AMI 没有保存 EBS 卷? 一个 AMI 可以设置为包含一个或多个 EBS 卷,但这些卷在启动时将是空白的,它们不会包含原始源计算机包含的数据。 所以 AMI 真的只是元数据(不确定这是否正确)?比如你使用的是什么操作系统,实例的大小等等?从技术上讲,我认为它应该只有几 kb 的大小? AMI 还存储您在机器上安装的任何程序、操作系统级别的配置选项等......所以它不仅仅是元数据,但是它们通常比快照小得多. 这个答案是错误的。一个 AMI 包括一个或多个快照。也就是说,它引用一个或多个快照(没有数据复制),并且还保存一些额外的元数据。这就是如果快照当前正被 AMI 使用,您无法删除它的原因。 docs.aws.amazon.com/AWSEC2/latest/UserGuide/AMIs.html 另请参阅 Eric Hammond 在此线程中的贡献。【参考方案8】:根据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。
【讨论】:
【参考方案9】:将快照用作备份策略的成本较低,因为当您有多个快照时,您只需为一个完整备份付费,其余的基本上只是差异,而且通常要小得多。
【讨论】:
这不适用于 EBS 启动 AMI,因为它们是正是 EBS 快照加上一些元数据。费用将是相同的。【参考方案10】:根据 AWS 提供的定义,它阐明了区别 - Amazon 系统映像 (AMI) 是一个包含软件配置(例如,操作系统、应用程序服务器和应用程序)的模板。您可以从 AMI 启动一个实例,该实例是作为云中虚拟服务器运行的 AMI 的副本。 而对于快照您可以通过拍摄时间点快照将 EBS 卷上的数据备份到 Amazon S3。快照是增量备份,这意味着仅保存设备上在您最近的快照后发生更改的块。删除快照时,只会删除该快照独有的数据。
【讨论】:
【参考方案11】:我将用通俗的话来解释这个概念: 假设 EC2 实例为 PC/笔记本电脑 EBS 存储作为硬盘和 AMI 作为操作系统映像 因此,AMI 是 Amazon 系统映像,而 EBS 快照是弹性块存储快照,可随时移动。
AMI 用于新启动 EC2 实例,作为 EBS 快照,您可以在终止 EC2 实例之前备份,并且可以附加到任何 EC2 实例以进行存储和检索。
【讨论】:
以上是关于AWS 快照和 AMI 之间的区别的主要内容,如果未能解决你的问题,请参考以下文章