Amazon Machine Images如何工作?


9

我已经看过许多有关创建 AMI的教程,但我从未真正理解过AMI的完整概念。是实例的链接,还是已存储且从未更改过。另外,映像是否包括本地存储以及安装在该实例上的所有软件包等,还是仅是特定实例配置的副本。谢谢

Answers:


10

AMI最简单的形式是对虚拟机的描述-虚拟化的类型,体系结构(32/64位),内核和根设备。用亚马逊的话来说:

AMI是一个模板,其中包含可以在Amazon成熟的计算环境上运行的软件配置(操作系统,应用程序服务器和应用程序)。

EC2实例是在亚马逊硬件上运行的虚拟机。为了启动实例,需要一些最低限度的信息。此外,不同的实例类型支持不同的配置(例如,某些实例不支持32位AMI)。

每个AMI都有一个标识符(例如ami-a1b2c3d4),并且在创建后无法更改该AMI的配置。(但是,您可以在启动时或在某些情况下,甚至在启动实例后,覆盖许多设置)。

在根卷方面,AMI包含对现有卷的引用(例如,它们引用EBS支持的实例的快照,或者在S3支持的实例的情况下引用映像部分)。

AMI还包含一定程度的错误检查-通常是用于指示所有权的用户ID,用于加密图像的加密密钥和用于验证图像完整性的签名。通过查看在制作S3支持的实例时创建的清单文件,您可以很好地了解AMI是什么-它只是一个包含数据和对其他项(存储,内核等)的引用的文件。

映像将其引用为块设备映射-它指定设备(例如/ dev / sda1)和数据源(临时(和S3部分,如果相关)或ebs快照)。由于S3部件已签名,并且ebs快照不能更改(只能删除),因此从AMI启动实例(不覆盖其设置)应始终导致实例具有相同的软件设置。(请注意,由于用户数据或不同的块设备映射,从同一AMI启动的实例仍可能在运行状态上有所不同(例如,微实例没有临时存储,而其他实例类型却存在)。在此,附加的卷与AMI分开存储,但是AMI以无法更改卷的方式进行引用。

从AMI启动实例之前,您可以覆盖块设备映射(例如,添加额外的EBS卷,或者如果实例类型支持它,则添加另一个临时卷)。对于EBS卷,在启动实例后,您可以分离根卷并完全附加另一个EBS卷。

因此,为了简要回答您的问题:是到实例的链接,还是已存储且从未更改过。它已存储且从未更改。

此外,映像是否包括本地存储以及安装在该实例上的所有软件包等,还是仅是特定实例配置的副本。该映像包括本地存储以及该实例上安装的所有软件包等。(通常,这只是根卷,但是可以将AMI设置为启动具有多个填充卷的实例)。


因此,它们是实例的EBS的引用,因此,如果在创建AMI后EBS状态发生变化,AMI状态是否也会发生变化?
Wiz 2012年

不,它们引用EBS快照,而不是EBS卷本身。即使EBS卷更改,EBS快照也无法更改。如果启动给定的AMI,它将加载其引用的EBS快照。如果需要,可以指定启动实例时要使用的其他EBS快照,也可以替换实例启动后使用的EBS卷。
cyberx86

3

AMI实际上是用于启动新EC2实例的根文件系统的主副本,以及一些元数据(如体系结构)。它包含完整的操作系统和软件包,您通常会在引导该发行版的新副本时找到,以及AMI创建者认为适合添加的任何内容。

如果从实例创建AMI,则基本上是在创建该实例的根文件系统的副本,该副本以后可用于创建新实例。

我在这里的答案可能也有帮助:https : //stackoverflow.com/a/7895489/111286

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.