如何在Linux中保留块设备名称以避免竞争情况(python,AWS EC2)

我想以编程方式将EBS卷附加到EC2 VM。我将根据以下代码创建设备名称,然后在下一步中,附加创建的设备。

    from string import ascii_lowercase
    ec2 = boto3.resource('ec2')
    inst = ec2.Instance(INSTANCE_ID)
    all_device_names = ["/dev/xvd%s" % (x) for x in ascii_lowercase]
    bdm = inst.block_device_mappings
    used_device_names = set()
    for device in bdm:
        used_device_names.add(device['DeviceName'])
    new_dev = list(set(all_device_names) - used_device_names).pop()

    # Attach EBS volume
    response = ec2Client.attach_volume(VolumeId='VolumeId',InstanceId=INSTANCE_ID,Device=new_dev)

我想同时执行我的程序的多个实例,并确保设备名称例如保留/ dev / xvdh直到附加卷在同一过程中完成。我想避免出现竞争情况,在这种情况下,代码控制范围之外的其他一些操作将开始使用设备名称/ dev / xvdh。在附加卷AP​​I完成之前,如何实现此功能来保存/保留设备名称字符串? 我是Python的新手,将感谢您的帮助。

我探索了原子操作,但这似乎是特定于文件写入的,并且我在这里处理设备名称字符串。

chkxchkx 回答:如何在Linux中保留块设备名称以避免竞争情况(python,AWS EC2)

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3119084.html

大家都在问