Portably determine the next available block device in a Linux VM?
I'm trying to use the code from https://stackoverflow.com/questions/32844854/boto3-show-next-available-device-name-on-instance:
def get_free_device_name(instance):
all_device_names = ["/dev/xvd%s" % (x) for x in ascii_lowercase]
device_list = instance.block_device_mappings
used_device_names = set()
for device in device_list:
used_device_names.add([device['DeviceName']])
return list(set(all_device_names) - used_device_names).pop()
К сожалению, этот код не является переносимым и не работает для меня, или, вероятно, большого количества людей, которые могут попробовать его в будущем.
Например, он не будет работать в экземпляре, оптимизированном для AWS EC2 EBS, где устройства пронумерованы /dev/nvmeXn1
,