所以我遇到了麻烦,无法确定这两者之间的具体区别。
据我所知,快照只是磁盘驱动器的备份,而AMI是整个系统(或者应该说是实例)的备份,但是整个系统难道不是完全位于磁盘驱动器上吗?如果是这样的话,那么就没有明显的区别,我可能漏掉了什么?
所以我遇到了麻烦,无法确定这两者之间的具体区别。
据我所知,快照只是磁盘驱动器的备份,而AMI是整个系统(或者应该说是实例)的备份,但是整个系统难道不是完全位于磁盘驱动器上吗?如果是这样的话,那么就没有明显的区别,我可能漏掉了什么?
有两种类型的 AMI(及相应的实例):
instance-store(有时称为基于 S3)。这些较少见,我不建议初学者使用。instance-store AMI 是根 instance-store 卷的副本加上一些元数据,全部保存在特殊格式的 S3 存储桶中。
EBS boot。这可能是你正在使用的。EBS boot AMI 是 EBS 根卷的 EBS 快照加上像架构、内核、AMI 名称、描述、块设备映射等一些元数据。
你可以拍摄一个 EBS boot 卷的快照并通过注册相应的元数据将它转换成 EBS boot AMI。这其中最棘手的部分是指定正确的 AKI ID(内核),以便正确启动。
主要区别在于所涉及的服务类型。快照是针对 EBS 卷的,您可以在某个时刻保存状态并重新启动相同数据。
AMI 类似,但适用于 EC2 实例本身。您无法对非 ebs 支持的实例进行快照,但可以创建一个 AMI(系统镜像)。
通常,我使用 EBS 快照作为数据库卷的备份解决方案,并使用 AMI 来保存实例配置。
我也曾对此感到困惑。以下是最简单的理解方式:
EBS快照
通常表示特定EBS卷的备份,它可以是任何卷(根卷、数据卷等)。
AMI
(Amazon Machine Image)是整个EC2实例的备份。例如,通过适当的配置,可以创建包括多个EBS卷的AMI。
现在,这可能听起来让人困惑,但它们都被存储为“EBS快照”。
只需这样想:
EBS快照
只是数据备份。AMI
是特定时间系统状态的表示。您也可以从中引导启动。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账户之间公开共享。
AMI可以使用快照创建。例如,使用单个“快照”可以创建多个AMI,比如一个使用相同快照的PV AMI和HVM AMI。
因此,快照具有系统/操作系统数据。AMI是(快照+机器/硬件元数据)。