Skip to content

Conversation

@chucklever
Copy link
Contributor

AWS EBS volumes do not have consistent names across reboots. Sometimes the root is /dev/nvme0n1; sometimes it can be /dev/nvme2n1. The data device is likewise flaky.

So, unlike with libvirt, a device pathname cannot be soldered into a .config and be expected to work reliably.

To make sure that EBS volumes are always accessible via a consistent block device name, add a tag to each extra volume created by terraform, and use a udev script to link that device under /dev/disk/kdevops. That way, the pathname "/dev/disk/kdevops/extra-volume-00" can always refer to /data on all instances and in our .config files.

AWS EBS volumes do not have consistent names across reboots.
Sometimes the root is /dev/nvme0n1; sometimes it can be
/dev/nvme2n1. The data device is likewise flaky.

So, unlike with libvirt, a device pathname cannot be soldered
into a .config and be expected to work reliably.

To make sure that EBS volumes are always accessible via a
consistent device name, add a tag to each extra volume created
by terraform, and use a udev script to link that device under
/dev/disk/kdevops. That way, the pathname
"/dev/disk/kdevops/extra-volume-00" can always refer to /data on
all instances and in our .config files.

Assisted-by: Claude AI
Signed-off-by: Chuck Lever <[email protected]>
Now that all cloud providers have consistent device pathnames for
the extra volumes created by terraform, we can make setting the
"data" and "sparse" device names consistent as well.

These symbolic constants can then be used by the volume_group and
devconfig playbooks and the fstests workflow to reliably locate
their block device resources on test runners in the cloud.

Follow the design of the OCI provider and expose the device
pathnames for the data and sparse device so these pathnames can
be used reliably by other kdevops subsystems.

Note that the AWS data volume default, which was hidden in the
Kconfig menu, changes from "/dev/nvme1n1" to
"/dev/disk/kdevops/extra-volume-00." Existing AWS configurations
might break if they depend on the old pathname. Also, "make
menuconfig" by itself does not change the existing value of
TERRAFORM_AWS_DATA_VOLUME_DEVICE_FILE_NAME to the new string.
Users must make that adjustment manually in existing defconfig
files.

Signed-off-by: Chuck Lever <[email protected]>
The cloud provider settings now consistently provide the correct
device pathnames for the /data and sparse devices. Set up the
default pathname for the fstests sparse device properly for those
cases.

Signed-off-by: Chuck Lever <[email protected]>
Thanks to recent commits, the volume_groups role can now use
{{ data_device }} for AWS just like it does for other cloud
providers.

Signed-off-by: Chuck Lever <[email protected]>
@chucklever chucklever merged commit e93004f into main Oct 20, 2025
44 checks passed
@chucklever chucklever deleted the ci-testing/cel/aws-extra-volumes branch October 20, 2025 00:27
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants