SLES15 SP3 installation on HP DL380 Gen10 with D3710 External Storage connected via P408e-p raid controller. Two logical drives, different sizes. Tried using mount-by-uuid, mount-by-device, mount-by-path. In all cases, logical drive 1 is /dev/sda after install, but becomes /dev/sdb after a reboot; ‘reboot’, init6, init0 followed by power on after shutdown complete. If I shutdown and power off/on external storage, or reseat hard drives in external storage, then after a boot, logical drive 1 becomes /dev/sda again. Anyone have any examples of udev rules on how to make storage device naming be persistent? I need logical drive 1 to always be /dev/sda and logical drive 2 to always be /dev/sdb.
Issue solved by changing BIOS/Platform Config → System Options → Boot Time Optimization → UEFI POST Discovery Mode → changed default setting AUTO to Force Full Discovery.
With that setting change, logical drive 1 is assigned name /dev/sda on every boot.
Oops. Issue not resolved. Tried 3 logical drive configuration. After install all is as expected, log drive 1 is /dev/sda, log drive 2 is /dev/sdb, log drive 3 is /dev/sdc. After a few reboots, sdb and sdc are swapped. This can be seen by the id’s reported by blkid. Also, lsscsi shows the proper discovery but the wrong mount:
Why would device 6:1:0:1 be /dev/sdc and 6:1:0:2 be /dev/sdb? Any ideas?
Turns out this is known issue since kernel 5.3 as device naming of kernel block devices is now non-deterministic:
Kernel block device names changing, order became non-deterministic | Support | SUSE
Disaster Recovery software that uses device naming will no longer function on systems with multiple logical drives as the device names cannot be relied upon. Anyone know of any disaster recovery software that takes this into account and supports linux kernel >= 5.3?