On Fri, Apr 03, 2020 at 06:16:33PM +0200, Jonathan Ballet wrote: > On AWS Nitro instances, EBS volumes are exposed as NVMe block devices by > the kernel on the /dev/nvme* paths. > > The AWS documentation "Identifying the EBS Device" says that the Linux > kernel doesn't guarantee the creation order of these devices, as they > are discovered in the order the devices respond. > > This creates a situation where you can start an instance with 2 (or > more) attached EBS and sometimes end up with the "root" EBS being named > /dev/nvme0n1 and the other one /dev/nvme1n1, sometimes the opposite.
This is why we use UUIDs exclusively in fstab. > In its own Linux image, AWS apparently ships a set of udev rules + a > script to get these device names out of the information exposed by the > NVMe devices, which create appropriate symlinks in /dev towards each > /dev/nvme* devices. This is the ec2-utils package. I haven't looked at how portable it is, but the code is MIT and Apache 2.0 licensed, so we should be able to incorporate it if needed. > This doesn't change the random detection order by the kernel, but this > provides a more stable interface to deal with instances containing > multiple disks. Is there any reason that you can use UUIDs and/or LVM to accomplish the same thing? > I wonder if it would be possible to provide such a mechanism by default > in the official Debian AMI? > Is this type of cloud provider-specific configuration could be accepted? > (I guess that would make sense only for AWS images.) The AMIs are provider-specific anyway, so this isn't an issue. noah
