【问题标题】:EC2 Instance without any attached Volume?没有任何附加卷的 EC2 实例?
【发布时间】:2015-08-17 16:03:12
【问题描述】:

是否可以有没有任何卷(根设备或附加卷)的实例?
假设 instance_id 是 [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  

输出-应该是:[无]

【问题讨论】:

    标签: python amazon-web-services amazon-ec2 boto aws-ec2


    【解决方案1】:

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

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

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

    【讨论】:

    • 是的,没错,但是 EC2 Instance Store 实例以及如何使用 Boto 访问这些实例呢?
    • 如果您谈论的是 EC2 实例上的临时存储,那么是的,那些仍然存在。它不是您在 AWS 账户中创建的卷,它本身也不是 EBS,它只是该实例的存储分配。当您终止该实例时-它就消失了。 Boto 与其他人的工作方式相同 - 期望它不是卷池中的卷,而是实例中的挂载文件系统。
    【解决方案2】:

    这是绝对有可能的,至少如果实例当前没有运行

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

    停止实例。

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

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

    其他猜测:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-11-05
      • 1970-01-01
      • 2018-08-29
      • 1970-01-01
      • 2018-12-29
      • 1970-01-01
      • 2015-04-10
      • 1970-01-01
      相关资源
      最近更新 更多