Back to Amazon Elastic Compute Cloud

See Also Virtualization, VirtualBox, Amazon Elastic Block Store, Amazon Simple Storage Service

Amazon Machine Images

AMI(Amazon Machine Images)提供启动EC2实例所需的信息。在启动EC2实例(run-instances)时必须指定AMI,一个AMI支持启动任意数量的实例。

AMI包括以下内容:

使用说明:

1. 基础知识

1.1. AMI属性

可以基于以下参数选择要使用的AMI

1.1.1. Launch Permissions(启动许可)

AMI的拥有者通过指定启动许可来确定其可用性。启动许可分为以下类别。

启动许可

说明

Public

拥有者向所 AWS账户授予启动许可

Explicit(显式)

拥有者向特定AWS账户授予启动许可

Implicit(隐式)

拥有者拥有隐式启动AMI的许可

1.1.2. Storage for the Root Device

按照存储方式划分,AMI归类为由Amazon EBS支持或由实例存储支持。

下表简要总结了两种存储类型的重要区别:

特点

受 Amazon EBS 支持

受Amazon实例存储支持

启动时间

通常不到 1 分钟

通常不到 5 分钟

大小限制

1 TiB

10 GiB

根设备卷

Amazon EBS 卷

实例存储卷

数据持久性

Amazon EBS 卷上的数据可在实例终止后保留(默认是删除)

只有在实例存在期间,实例存储卷上的数据才会持久保留;您也可连接实例终止后持久保留的 Amazon EBS 卷.

升级

实例停止后,实例类型、内核、RAM 磁盘和用户数据仍可更改。

实例存在期间,实例属性是稳定不变的.

收费

您需要为实例使用、Amazon EBS 卷使用以及将 AMI 存储为 Amazon EBS 快照付费。

需要为实例使用以及在Amazon S3中存储AMI付费

AMI 创建/捆绑

使用单一命令/调用

需要安装和使用 AMI 工具

停止状态

可置于停止状态,在该状态下,实例不运行,但是根卷可在 Amazon EBS 中保留

不可置于停止状态;实例正在运行或已终止

使用命令行确定AMI的根设备类型:

(pythonenv)➜  aws_cli  aws ec2 describe-images --image-ids ami-87e9f4c2
IMAGES  x86_64  CentOS 6.6 in Virtualbox        xen     ami-87e9f4c2    995517354230/centos66_minimal   machine aki-880531cd    centos66_minimal        995517354230    False   /dev/sda        ebs     available       paravirtual
BLOCKDEVICEMAPPINGS     /dev/sda
EBS     False   False   snap-05032bc6   2       gp2
(pythonenv)➜  aws_cli  ec2-describe-images ami-5f938e1a
IMAGE   ami-5f938e1a    995517354230/centos66_minimal_ebs_hvm   995517354230    available       private         x86_64  machine                         ebs     /dev/sda1       hvm     xen
BLOCKDEVICEMAPPING      EBS     /dev/sda1               snap-05032bc6   2       false   gp2             Not Encrypted

1.2. Virtualization Types

亚马逊系统映像使用两种虚拟化类型之一:半虚拟化 (PV) 或硬件虚拟机 (HVM)。某些当前一代实例类型仅支持硬件虚拟机 AMI,而某些上一代实例类型仅支持半虚拟化 AMI。半虚拟化与硬件虚拟机 AMI 之间的主要区别在于它们的启动方式,以及它们是否可以利用特殊硬件扩展(CPU、网络和存储)来获得更佳性能。

Note

为获得最佳性能,建议在启动新实例时使用当前一代实例类型和硬件虚拟机AMI。

1.2.1. Paravirtual (PV)

半虚拟化AMI使用一个名为 PV-GRUB 的特殊启动加载器进行启动,该加载器开始启动顺序,然后对映像链式加载 menu.lst 文件中指定的内核。半虚拟化的Guest OS不需要主机硬件对虚拟化有额外支持,但也无法利用额外的硬件扩展(如增强联网或GPU处理)。

以往,半虚拟化系统在许多情况下的性能要优于硬件虚拟机系统,但是由于硬件虚拟机虚拟化的功能增强,以及硬件虚拟机AMI可使用半虚拟化驱动程序,情况发生了改变。

更多硬件虚拟化知识,请参阅Virtualization

1.2.2. Hardware Virtual Machine (HVM)

硬件虚拟机指AMI配有一组完全虚拟化的硬件,通过执行映像根块储存设备的主启动记录来启动。Linux和Windows AMI都可以使用硬件虚拟机虚拟化。通过此虚拟化类型可以直接在虚拟机上运行操作系统而不进行任何修改(如同它在裸机硬件上运行一样)。Amazon EC2主机系统可模拟向Guest OS提供的部分或所有底层硬件。

与半虚拟化不同,完全硬件虚拟化可以利用在主机系统上提供对底层硬件的快速访问的硬件扩展。硬件虚拟机AMI能够利用增强的联网和GPU处理能力。要将指令传递给专用网络和 GPU 设备,操作系统需要能够访问本机硬件平台;HVM 虚拟化提供这种访问。

1.2.3. 硬件虚拟机上的半虚拟化

以往,半虚拟化来宾的性能在存储和网络操作方面的性能要优于硬件虚拟机来宾,因为它们可以对 I/O 使用特殊驱动程序,从而避免模拟网络和磁盘硬件的开销,而硬件虚拟机系统必须将这些指令转换为模拟的硬件。现在,这些半虚拟化驱动程序可用于硬件虚拟机系统,因此无法移植以在半虚拟化环境中运行的操作系统(如Windows)仍可以使用它们在存储和网络I/O 方面获得性能优势。借助这些硬件虚拟机驱动程序上的半虚拟化,硬件虚拟机系统可以获得与半虚拟化相同甚至更佳的性能。

##基于t2.micro的全虚拟化系统
[liyan@ec2 ~]$ cat /proc/sys/kernel/ostype 
Linux
[liyan@ec2 ~]$ free -m
             total       used       free     shared    buffers     cached
Mem:           994        128        866          0          6         37
-/+ buffers/cache:         84        910
Swap:            0          0          0

##基于t1.micro的半虚拟化系统
[liyan@ec2 ~]$ free -m
             total       used       free     shared    buffers     cached
Mem:           590        125        464          0          6         38
-/+ buffers/cache:         79        510
Swap:            0          0          0

1.3. AMI Lifecycle

下图总结了 AMI 生命周期。创建并注册一个 AMI 之后,您可以将其用于启动新实例。(如果 AMI 拥有者向您授予启动许可,则您也可以从 AMI 启动实例。)您可以将 AMI 复制到同一区域或不同区域。当您完成从 AMI 启动实例时,可以取消注册 AMI。

AMI 生命周期(创建、注册、启动、复制、取消注册)

连接到某个实例之后,可以像使用任何其他服务器那样使用该实例。有关启动、连接和使用实例的信息,请参阅Amazon EC2

1.4. Create My Own AMI

可以自定义从公用AMI启动的实例,然后将配置保存为自定义AMI以供自己使用。从 AMI 启动的实例使用您的所有自定义项。

实例的根存储设备确定创建AMI所遵循的过程。实例的根卷是Amazon EBS卷或实例存储卷。

1.5. AWS Marketplace

1.5.1. CentOS

2. Deregistering Your AMI

对于不再使用的AMI可以选择取消注册。取消注册AMI之后,无法将其用于启动新实例。

2.1. Amazon Linux

Amazon Linux AMI是AWS提供、支持和维护的Linux映像。以下是一些Amazon Linux功能:

3. AMI HOWTO

AWS CLI Commands参考: AWS Command Line Interface

3.1. AWS_AMI_HOWTO_Describe_Images

describe-images: Describes one or more of the images (AMIs, AKIs, and ARIs) available to you. ref

3.1.1. filters by tag

找到被我标记为fee=free的AMI

(pythonenv)➜  aws_cli  aws ec2 describe-images --filters "Name=tag:fee, Values=free"
{
    "Images": [
        {
            "VirtualizationType": "hvm", 
            "Name": "amzn-ami-minimal-hvm-2014.09.1.x86_64-ebs", 
            "Tags": [
                {
                    "Value": "free", 
                    "Key": "fee"
                }
            ], 
            "Hypervisor": "xen", 
...
}

3.2. AMI的制作

3.2.1. 基于EBS的AMI的制作方式

ami_create_ebs.png}

EBS AMI的一般制作方法:(ref)

并根据现有AMI进行了示例:

把本地操作系统制作成AMI的一般操作步骤

实例:

3.2.2. 基于S3的实例存储AMI的制作方式

ami_create_instance_store.png}

参考:(ref)

3.3. AWS_AMI_HOWTO others

AMI的管理:如何制作 [[|ref|target="_blank"]]

aws ec2 deregister-image --image-id ami-976e39a7

4. Reference


CategoryAmazonWebServices

MainWiki: AWS_AMI (last edited 2014-01-13 03:12:31 by twotwo)