【问题标题】:Launch an aws instance from snapshot, can't find kernel ids从快照启动 aws 实例,找不到内核 ID
【发布时间】:2014-10-07 18:46:40
【问题描述】:

简短版:

对于 AWS,您如何从给定的 ami id 或使用该 ami 启动的实例中找到内核 id。

长版:

我有一个 aws 实例,其中所有驱动器都支持 ebs。我正在尝试从驱动器的快照中启动它的精确副本。

此过程的第一步是从根卷快照创建一个新的 ami。当我之前完成此操作时,我刚刚搜索了 ami id,发现某处发布了我从 aws 控制台选择的标准 ubuntu ami 的内核 ID,但这次似乎不起作用。

大量搜索、阅读文档和 aws 论坛听起来好像内核文件应该填充在实例描述中,但对我(以及论坛中的许多其他人)来说它是空白的。我尝试启动一个新的(从控制台)实例 [Amazon Linux AMI 2014.09 (HVM) - ami-08842d60],该实例的内核字段也是空白的。

如果我创建了一台全新的机器,对其进行快照,然后将内核保留为默认值,那么 ami 可以正常工作,但默认值不适用于我尝试过的任何旧 ami。

有人知道现在为 ami 查找内核 ID 的过程是什么吗?

【问题讨论】:

  • 您是否尝试过创建所有 EBS 驱动器的单个映像并从该映像启动新实例,而不是尝试从快照创建新机器?

标签: amazon-web-services amazon-ec2


【解决方案1】:

简短版:

如果您的 ami 是 hvm,您似乎根本不需要内核 id,只要您正确设置选项即可。

长版:

如果您使用 boto 调用创建您的 ami,例如:

    ami_id = conn.register_image(
        name='some_name',
        description='some_description',
        architecture='x86_64',
        root_device_name='/dev/sda1',
        snapshot_id=snapshot_id,
        delete_root_volume_on_termination=True)

如果实例的原始 ami 是 aws 控制台中列出的最新 hvm ami,它似乎可以工作。但是一旦 aws 更新了它的默认 ami,它就停止了工作。我假设它是因为后端的某些东西选择了正确的内核 id 或其他东西。无论哪种方式,这项工作都非常令人困惑!

但是,如果您将 virtualization_type 设置为 hvm,它似乎在没有内核 id 的情况下始终可以工作。

    ami_id = conn.register_image(
        name='some_name',
        description='some_description',
        architecture='x86_64',
        virtualization_type='hvm',
        root_device_name='/dev/sda1',
        snapshot_id=snapshot_id,
        delete_root_volume_on_termination=True)

另一方面,如果您的实例是半虚拟化的,似​​乎只要您指定内核,您就不需要在 boto 调用中指定 virtualization_type。

【讨论】:

    【解决方案2】:

    取自 AWS Documentation,您可以在正在运行的实例上使用以下命令找到内核 ID:

    $ ec2-describe-instance-attribute instance_id --kernel --region region

    然后您可以从以下位置获取版本信息:

    $ ec2-describe-images [kernelID you got from previous command] --region region

    编辑:刚刚注意到这是一个 HVM;不知道为什么要从快照制作图像。如果您直接从 ec2 创建映像,它还会为您创建快照,然后您可以转到 AMI 并从您创建的映像创建一个新的 ec2,它不会询问内核 ID。

    如果实例消失了,而您只有快照,我可以理解您正在尝试做什么,而不是尝试从您的快照中创建 AMI,而是从中创建一个卷。然后启动一个类似的基于 HVM 的实例,让它启动,然后停止它。交换根卷并重新启动它。

    【讨论】:

    • 是的,试过了,它返回:“kernel [instance_id]”,然后没有别的。它似乎具有与您在控制台中看到的相同的空白值。我什至尝试启动一个全新的实例(如帖子中所述),但它也不起作用。 ec2-describe-instance-attribute 确实返回了实例类型,所以我不认为我说错了。
    • 刚刚注意到这是一个 linux hvm 而不是半虚拟化
    猜你喜欢
    • 2019-09-08
    • 2018-06-21
    • 1970-01-01
    • 1970-01-01
    • 2019-09-01
    • 2011-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多