0

是否可以有没有任何卷(根设备或附加卷)的实例?
假设 instance_ids 是 [i-120cd3fe,i-23e46634]
AWS 中是否有任何实例存在而没有任何附加卷?

    conn=get_ec2_connection(region=region)  
    instances = conn.get_only_instances(instance_ids=instance_ids)   
    volumes_list=[]
    for instance in instances:  
       dev_mappings = instance.block_device_mapping  
       for block_device in dev_mappings.keys():  
           volume_id = dev_mappings[block_device].volume_id
           volumes_list.append(volume_id)

    print volumes_list  

输出应该是:[无]

4

2 回答 2

3

您不能拥有没有根卷的实例。因此,块设备映射中总会列出至少一个卷。

我错了。自从我推出支持实例存储的 AMI 以来已经很久了,我什至忘记了它们的存在。实例存储支持的 AMI 不会在块储存设备映射中描述其根卷,因此如果您有这样的实例并且没有附加 EBS 卷,则块储存设备映射将为空。

对于基于 EBS 的实例,块储存设备映射将始终包含(至少)根卷,即使对于已停止的实例,除非您已明确将该卷与实例分离。

于 2015-06-03T15:14:24.710 回答
0

这是绝对可能的,至少在实例当前没有运行的情况下。

考虑一下用于将自己从无法启动的实例中拯救出来的常用策略:

停止实例。

分离根卷,以便您可以将其附加到工作实例并修复问题。

就在这里,您应该有一个没有卷的实例,如果根 EBS 卷是该实例拥有的唯一卷。

其他推测:

我无法确认,但可以想象,使用临时磁盘的实例存储实例也可能与此匹配。

您似乎可以从正在运行的实例中强行分离根 EBS 卷,使其处于无卷状态,认为它会很快崩溃。

实例也可能在终止后短暂地处于这种状态,因为它们的 EBS 卷已分离并可能被删除。(在您终止它们后,终止的实例似乎仍会在短时间内显示为实例)。

于 2015-06-03T22:15:25.663 回答