缺少块设备映射的虚拟名称。 启动EC2实例失败

我的aws自动缩放有点问题。 我准备好了AMI,并且还创建了启动配置。 我将我的配置绑定到自动缩放组。 一切似乎工作正常,但后来我得到以下错误报告:

启动一个新的EC2实例。 状态原因:块设备映射缺少虚拟名称。 启动EC2实例失败。

我可以创建这个AMI的一个实例并且没问题,但是自动缩放不起作用。 这个实例是基于实例存储的,所以我们不使用任何EBS。 也许我想念什么?


这很可能是由于您正在构建实例存储图像的实例类型不同于最终的自动缩放目标。 在m1.small上创建实例图像并尝试启动m3.large时,我遇到了完全相同的场景。

这是因为绑定和注册过程以及实例AMI从主机虚拟机(在我的情况下为m1.small)中获取块设备映射,并将其编码为图像清单中的xml。 这很可能引用多个短暂的虚拟卷(epehemeral0,ephemeral1等)。 当使用不具有相同对应卷的实例类型在自动缩放操作期间启动此AMI时,您会收到此错误消息。

正如你所提到的,它将作为独立的虚拟机(不是自动调节的一部分)正常运行。 AWS的某些功能似乎弥补了用户触发的实例AMI启动时的这种不匹配。

解决方案是在创建AMI时明确设置块设备映射以匹配您的预期实例类型。

阅读更多关于块设备映射的信息:(http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/block-device-mapping-concepts.html)

然后使用带有--block-device-mapping标志的ec2-bundle-vol命令告诉工具忽略主机VM当前的块设备。

下面的命令适用于我(在m1.small上创建图像并在m3.large上自动调整大小):

ec2-bundle-vol <lots of other flags snipped> --block-device-mapping ami=sda1,root=/dev/sda1,ephemeral0=sdb,swap=sda3
链接地址: http://www.djcxy.com/p/63387.html

上一篇: Missing virtual name for block device mapping. Launching EC2 instance failed

下一篇: Confusion about AWS AutoScaling and AMI role in it