2014-10-07 101 views
3

短版:启动从快照的AWS实例,找不到内核IDS

对于你如何找到内核ID从给定的AMI ID,或与AMI启动一个实例AWS。

长版:

我有一个AWS实例,其中所有的驱动器都支持EBS。我试图从驱动器的快照中启动它的确切副本。

在该过程的第一步骤是从根卷快照创建一个新的AMI。当我这样做之前我刚刚GOOGLE了阿美ID,发现某处有内核ID张贴AMI我从AWS控制台中选择的标准的Ubuntu,但似乎并没有被工作这段时间。

大量的搜索,阅读文档和aws论坛使得听起来像内核文件应该填充在实例描述中,但对我(和论坛中的很多其他人)来说它的空白。我试图启动一个新的(从控制台)实例[亚马逊的Linux AMI 2014.09(HVM) - AMI-08842d60]核心领域是空白的那一个也。

如果我创建了一个全新机,快照,然后离开了内核为默认AMI工作得很好,但默认情况下不会为任何的老AMI的我都试过工作。

任何一个有任何想法寻找kernek ID为AMI的过程,这些天?

+1

不是试图从快照制作新机器,而是尝试将所有EBS驱动器的单个映像一起创建并从该映像启动新实例? – jimdrang 2014-10-07 20:02:14

回答

2

短版:

看来你并不需要一个内核的ID在所有如果您的AMI是HVM,只要你设置的选择权。

长版:

如果您使用博托调用,比如创建您的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) 

在另一方面,如果你的例子是半虚拟化似乎只要你指定的内核,你不需要指定的博托呼叫virtualization_type。

1

从AWS两者Documentation你可以在一个运行实例发现使用以下命令内核编号:

$ 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的实例,让它启动,然后停止它。交换根卷并开始备份。

+0

是的,它返回:“内核\t [instance_id]”,然后没有别的。它似乎具有您在控制台中看到的相同的空白值。我甚至尝试启动一个全新的实例(如后文所述),但它也不适用。 ec2-describe-instance-attribute确实会返回实例类型,所以我不认为我在错误地调用它。 – TristanMatthews 2014-10-07 19:00:28

+0

刚注意到这是一个linux hvm而不是paravirtual – jimdrang 2014-10-07 19:48:42