Amazon Machine Images 如何工作?

Amazon Machine Images 如何工作?

我看过很多关于创造AMI,但我从未真正理解过 AMI 的完整概念。是指向实例的链接,还是存储起来并且从未更改过。此外,映像是否包含本地存储和安装在该实例上的所有软件包等,或者它只是特定实例配置的副本。谢谢

答案1

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

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

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

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

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

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

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

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

因此,简要回答您的问题:是指向实例的链接,还是存储起来并且永远不会改变。它存储起来并且永远不会改变。

此外,映像是否包含本地存储和该实例上安装的所有程序包等,或者它只是特定实例配置的副本。映像包含本地存储和该实例上安装的所有程序包等。(通常,这只是根卷,但可以设置 AMI 来启动具有多个已填充卷的实例)。

答案2

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

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

我的回答可能也会有帮助:https://stackoverflow.com/a/7895489/111286

相关内容