OES/SLES15 multipath boot issues after kernel update.

Hi.

I recently ran into an odd issue at a customer. We recently did a rolling cluster upgrade (4 nodes) from OES2018 to 24.2, without much issues. Now the first round of patches after the installation came, and we ran into the worst issue. After patching, the server (Dell) wouldn't boot.

This is what happened:

During the original installation, we answered "yes" to the question if we want to enable multipath. Without further configuration, this results in the local boot device also being accessed via device-mapper, which usually isn't a problem. Servers were rebooted countless times after initial installation, and always came up fine.

Until the first kernel upgrade, which we just now applied. The newly build kernel initrd after upgrade is not configured to load multipath at boot time. Result: Server doesn't boot after update, as it doesn't find root partition/boot device.

Insult added to injury: The kernel patch, while regularly patching OES factually rebuilds the initrd for *all* currently installed kernels. Yes you read that right. Result: After patching, not even the previous kernel will boot, as dracut has destroyed the previous, working kernel, too. You can clearly see that when you look at the dracut output at the end of a regular "zypper patch" run, that dracut will buld new initrds for *al* kernels. I consider this a *HUGE* bug. Under absolutely *no* circumstance should an update to a new kernel touch the previous one (and destroy it)


Fix: start rescue system, chroot to the boot disk, (www.suse.com/.../, and have dracut rebuild the initrd *with multipath support:

dracut -f --kver 5.3.18-150300.59.147-default --add multipath

(replace "5.3.18-150300.59.147-default" above with your most recently installed kernel version as visible in /boot)

exit chroot and reboot.

What is unknown as of now, is if that wil be persistent, or if it will break again when the next kernel patch gets released.

Attempts to "fix" this before patching the kernel, by adding multipath to the dracut configuration through seeveral documented methods have been unsuccesful so far. We tried:

www.suse.com/.../

And eventhough we *do* see "rd.driver.pre=dm_multipath" in the dracut output of the regular patch, it still won't boot, and needs to be fixed using above method.

We also tried "dracut --force --add multipath" before patching, again seeing mutipath being added, but still, after patching it won't boot, yet again needing the manual process above.

So apparently, the only way that works (or rather, that I currently know works) at this point in time is to manually run dracut with the "--add multipath" option, to get a working kernel with multipath support at boot time.





Parents
  • 0  

    It is difficult to say from experience, but it is the configuration of multipath itself that leads to errors. Also there are always issues with udev rules after patch or wrong (phantom) entries in /dev/disk after patch

    What does the dmsg say about the start phase of the boot for multipath and what is in the Multipath.conf? Is SAN boot or iscsi boot configured?

    A good help are the multipath tools themselves to perform diagnostics. Have you ever tried to consciously delete and recreate the maps with multipath tools

    outputs -ll or -t with the tools any errors or mapping errors.

    Georg

    “You can't teach a person anything, you can only help them to discover it within themselves.” Galileo Galilei

  • 0   in reply to   

    Georg.
    It can't be udev or mutlipath.conf issues, as neither would become fixed simply by the process of rebulding the initrd with the --add multipath parameter. The server doesn't get as far as dmsg or other debug options being availble.

    Also noteworthy: dracut emergency shell also doesn't work. Manually adding rd.shell to the kernel line in Grub has no effect. What also fails is to manually edit the kernel load line in grub to /dev/sdX notation. I don't know how or why, but it *seems* as if editing from the Grub menu (ctrl-e) is entirely without function.

  • 0   in reply to   

    Does the Dell system use NVME?

    “You can't teach a person anything, you can only help them to discover it within themselves.” Galileo Galilei

  • 0   in reply to   

    Frankly, Idon't know, as I usually avoid Dell servers. It's a Perc H355 according to the boot screen. I really don't know if that's NVME connected or not.

    What do you think about dracut during regular patching rebuilding *both* initrds, of the old and new kernel?

Reply Children
  • 0   in reply to   

    For the sake of it, I just patched a regular VM server I had here. It too creates new initrds for all installed kernels. In fact, even for the one that is going to be purged on reboot:

    lrwxrwxrwx 1 root root 36 Jun 21 13:25 initrd -> initrd-5.14.21-150400.24.119-default
    -rw------- 1 root root 28299120 Jun 21 13:28 initrd-5.14.21-150400.24.100-default
    -rw------- 1 root root 22216748 Mar 26 14:31 initrd-5.14.21-150400.24.100-default-kdump
    -rw------- 1 root root 28621459 Jun 21 13:29 initrd-5.14.21-150400.24.111-default
    -rw------- 1 root root 20237860 Mar 26 15:13 initrd-5.14.21-150400.24.111-default-kdump
    -rw------- 1 root root 28612837 Jun 21 13:29 initrd-5.14.21-150400.24.119-default

    (check the dates). It's also clearly visible in the dracut output.

    %posttrans(kpartx-0.9.0+161+suse.a26bd4c-150400.4.19.1.x86_64) script output:
    dracut: Executing: /usr/bin/dracut --kver=5.14.21-150400.24.100-default -f
    dracut: dracut module 'systemd-networkd' will not be installed, because command 'networkctl' could not be found!
    dracut: dracut module 'systemd-networkd' will not be installed, because command '/usr/lib/systemd/systemd-networkd' could not be found!
    dracut: dracut module 'systemd-networkd' will not be installed, because command '/usr/lib/systemd/systemd-networkd-wait-online' could not be found!
    dracut: dracut module 'systemd-repart' will not be installed, because command 'systemd-repart' could not be found!
    dracut: dracut module 'systemd-resolved' will not be installed, because command 'resolvectl' could not be found!
    dracut: dracut module 'systemd-resolved' will not be installed, because command '/usr/lib/systemd/systemd-resolved' could not be found!
    dracut: dracut module 'dbus-broker' will not be installed, because command 'dbus-broker' could not be found!
    dracut: dracut module 'rngd' will not be installed, because command 'rngd' could not be found!
    dracut: dracut module 'dmraid' will not be installed, because command 'dmraid' could not be found!
    dracut: dracut module 'dmsquash-live-ntfs' will not be installed, because command 'ntfs-3g' could not be found!
    dracut: dracut module 'tpm2-tss' will not be installed, because command 'tpm2' could not be found!
    dracut: dracut module 'nvmf' will not be installed, because command 'nvme' could not be found!
    dracut: dracut module 'biosdevname' will not be installed, because command 'biosdevname' could not be found!
    dracut: dracut module 'memstrack' will not be installed, because command 'memstrack' could not be found!
    dracut: memstrack is not available
    dracut: If you need to use rd.memdebug>=4, please install memstrack and procps-ng
    dracut: dracut module 'squash' will not be installed, because command 'mksquashfs' could not be found!
    dracut: dracut module 'squash' will not be installed, because command 'unsquashfs' could not be found!
    dracut: dracut module 'systemd-repart' will not be installed, because command 'systemd-repart' could not be found!
    dracut: dracut module 'systemd-resolved' will not be installed, because command 'resolvectl' could not be found!
    dracut: dracut module 'systemd-resolved' will not be installed, because command '/usr/lib/systemd/systemd-resolved' could not be found!
    dracut: dracut module 'dbus-broker' will not be installed, because command 'dbus-broker' could not be found!
    dracut: dracut module 'rngd' will not be installed, because command 'rngd' could not be found!
    dracut: dracut module 'dmraid' will not be installed, because command 'dmraid' could not be found!
    dracut: dracut module 'dmsquash-live-ntfs' will not be installed, because command 'ntfs-3g' could not be found!
    dracut: dracut module 'tpm2-tss' will not be installed, because command 'tpm2' could not be found!
    dracut: dracut module 'nvmf' will not be installed, because command 'nvme' could not be found!
    dracut: dracut module 'memstrack' will not be installed, because command 'memstrack' could not be found!
    dracut: memstrack is not available
    dracut: If you need to use rd.memdebug>=4, please install memstrack and procps-ng
    dracut: dracut module 'squash' will not be installed, because command 'mksquashfs' could not be found!
    dracut: dracut module 'squash' will not be installed, because command 'unsquashfs' could not be found!
    dracut: *** Including module: systemd ***
    dracut: *** Including module: systemd-initrd ***
    dracut: *** Including module: i18n ***
    dracut: *** Including module: drm ***
    dracut: *** Including module: plymouth ***
    dracut: *** Including module: kernel-modules ***
    dracut: *** Including module: kernel-modules-extra ***
    dracut: *** Including module: resume ***
    dracut: *** Including module: rootfs-block ***
    dracut: *** Including module: suse-btrfs ***
    dracut: *** Including module: suse-xfs ***
    dracut: *** Including module: terminfo ***
    dracut: *** Including module: udev-rules ***
    dracut: Skipping udev rule: 40-redhat.rules
    dracut: Skipping udev rule: 50-firmware.rules
    dracut: Skipping udev rule: 50-udev.rules
    dracut: Skipping udev rule: 91-permissions.rules
    dracut: Skipping udev rule: 80-drivers-modprobe.rules
    dracut: *** Including module: dracut-systemd ***
    dracut: *** Including module: haveged ***
    dracut: *** Including module: usrmount ***
    dracut: *** Including module: base ***
    dracut: *** Including module: fs-lib ***
    dracut: *** Including module: shutdown ***
    dracut: *** Including module: suse ***
    dracut: *** Including module: suse-initrd ***
    dracut: *** Including modules done ***
    dracut: *** Installing kernel module dependencies ***
    dracut: *** Installing kernel module dependencies done ***
    dracut: *** Resolving executable dependencies ***
    dracut: *** Resolving executable dependencies done ***
    dracut: *** Hardlinking files ***
    dracut: Mode:           real
    dracut: Files:          779
    dracut: Linked:         2 files
    dracut: Compared:       0 xattrs
    dracut: Compared:       63 files
    dracut: Saved:          339.22 KiB
    dracut: Duration:       0.012562 seconds
    dracut: *** Hardlinking files done ***
    dracut: *** Generating early-microcode cpio image ***
    dracut: *** Constructing GenuineIntel.bin ***
    dracut: *** Store current command line parameters ***
    dracut: Stored kernel commandline:
    dracut:  resume=UUID=e6702e22-4cd2-4e14-8217-a755dab5ece5
    dracut:  root=UUID=07dd87dc-2877-4015-ab39-bba850139020 rootfstype=ext4 rootflags=rw,relatime
    dracut: *** Stripping files ***
    dracut: *** Stripping files done ***
    dracut: *** Creating image file '/boot/initrd-5.14.21-150400.24.100-default' ***
    dracut: *** Creating initramfs image file '/boot/initrd-5.14.21-150400.24.100-default' done ***
    dracut: Executing: /usr/bin/dracut --kver=5.14.21-150400.24.111-default -f
    dracut: dracut module 'systemd-networkd' will not be installed, because command 'networkctl' could not be found!
    dracut: dracut module 'systemd-networkd' will not be installed, because command '/usr/lib/systemd/systemd-networkd' could not be found!
    dracut: dracut module 'systemd-networkd' will not be installed, because command '/usr/lib/systemd/systemd-networkd-wait-online' could not be found!
    dracut: dracut module 'systemd-repart' will not be installed, because command 'systemd-repart' could not be found!
    dracut: dracut module 'systemd-resolved' will not be installed, because command 'resolvectl' could not be found!
    dracut: dracut module 'systemd-resolved' will not be installed, because command '/usr/lib/systemd/systemd-resolved' could not be found!
    dracut: dracut module 'dbus-broker' will not be installed, because command 'dbus-broker' could not be found!
    dracut: dracut module 'rngd' will not be installed, because command 'rngd' could not be found!
    dracut: dracut module 'dmraid' will not be installed, because command 'dmraid' could not be found!
    dracut: dracut module 'dmsquash-live-ntfs' will not be installed, because command 'ntfs-3g' could not be found!
    dracut: dracut module 'tpm2-tss' will not be installed, because command 'tpm2' could not be found!
    dracut: dracut module 'nvmf' will not be installed, because command 'nvme' could not be found!
    dracut: dracut module 'biosdevname' will not be installed, because command 'biosdevname' could not be found!
    dracut: dracut module 'memstrack' will not be installed, because command 'memstrack' could not be found!
    dracut: memstrack is not available
    dracut: If you need to use rd.memdebug>=4, please install memstrack and procps-ng
    dracut: dracut module 'squash' will not be installed, because command 'mksquashfs' could not be found!
    dracut: dracut module 'squash' will not be installed, because command 'unsquashfs' could not be found!
    dracut: dracut module 'systemd-repart' will not be installed, because command 'systemd-repart' could not be found!
    dracut: dracut module 'systemd-resolved' will not be installed, because command 'resolvectl' could not be found!
    dracut: dracut module 'systemd-resolved' will not be installed, because command '/usr/lib/systemd/systemd-resolved' could not be found!
    dracut: dracut module 'dbus-broker' will not be installed, because command 'dbus-broker' could not be found!
    dracut: dracut module 'rngd' will not be installed, because command 'rngd' could not be found!
    dracut: dracut module 'dmraid' will not be installed, because command 'dmraid' could not be found!
    dracut: dracut module 'dmsquash-live-ntfs' will not be installed, because command 'ntfs-3g' could not be found!
    dracut: dracut module 'tpm2-tss' will not be installed, because command 'tpm2' could not be found!
    dracut: dracut module 'nvmf' will not be installed, because command 'nvme' could not be found!
    dracut: dracut module 'memstrack' will not be installed, because command 'memstrack' could not be found!
    dracut: memstrack is not available
    dracut: If you need to use rd.memdebug>=4, please install memstrack and procps-ng
    dracut: dracut module 'squash' will not be installed, because command 'mksquashfs' could not be found!
    dracut: dracut module 'squash' will not be installed, because command 'unsquashfs' could not be found!
    dracut: *** Including module: systemd ***
    dracut: *** Including module: systemd-initrd ***
    dracut: *** Including module: i18n ***
    dracut: *** Including module: drm ***
    dracut: *** Including module: plymouth ***
    dracut: *** Including module: kernel-modules ***
    dracut: *** Including module: kernel-modules-extra ***
    dracut: *** Including module: resume ***
    dracut: *** Including module: rootfs-block ***
    dracut: *** Including module: suse-btrfs ***
    dracut: *** Including module: suse-xfs ***
    dracut: *** Including module: terminfo ***
    dracut: *** Including module: udev-rules ***
    dracut: Skipping udev rule: 40-redhat.rules
    dracut: Skipping udev rule: 50-firmware.rules
    dracut: Skipping udev rule: 50-udev.rules
    dracut: Skipping udev rule: 91-permissions.rules
    dracut: Skipping udev rule: 80-drivers-modprobe.rules
    dracut: *** Including module: dracut-systemd ***
    dracut: *** Including module: haveged ***
    dracut: *** Including module: usrmount ***
    dracut: *** Including module: base ***
    dracut: *** Including module: fs-lib ***
    dracut: *** Including module: shutdown ***
    dracut: *** Including module: suse ***
    dracut: *** Including module: suse-initrd ***
    dracut: *** Including modules done ***
    dracut: *** Installing kernel module dependencies ***
    dracut: *** Installing kernel module dependencies done ***
    dracut: *** Resolving executable dependencies ***
    dracut: *** Resolving executable dependencies done ***
    dracut: *** Hardlinking files ***
    dracut: Mode:           real
    dracut: Files:          779
    dracut: Linked:         2 files
    dracut: Compared:       0 xattrs
    dracut: Compared:       64 files
    dracut: Saved:          339.22 KiB
    dracut: Duration:       0.013498 seconds
    dracut: *** Hardlinking files done ***
    dracut: *** Generating early-microcode cpio image ***
    dracut: *** Constructing GenuineIntel.bin ***
    dracut: *** Store current command line parameters ***
    dracut: Stored kernel commandline:
    dracut:  resume=UUID=e6702e22-4cd2-4e14-8217-a755dab5ece5
    dracut:  root=UUID=07dd87dc-2877-4015-ab39-bba850139020 rootfstype=ext4 rootflags=rw,relatime
    dracut: *** Stripping files ***
    dracut: *** Stripping files done ***
    dracut: *** Creating image file '/boot/initrd-5.14.21-150400.24.111-default' ***
    dracut: *** Creating initramfs image file '/boot/initrd-5.14.21-150400.24.111-default' done ***
    dracut: Executing: /usr/bin/dracut --kver=5.14.21-150400.24.119-default -f
    dracut: dracut module 'systemd-networkd' will not be installed, because command 'networkctl' could not be found!
    dracut: dracut module 'systemd-networkd' will not be installed, because command '/usr/lib/systemd/systemd-networkd' could not be found!
    dracut: dracut module 'systemd-networkd' will not be installed, because command '/usr/lib/systemd/systemd-networkd-wait-online' could not be found!
    dracut: dracut module 'systemd-repart' will not be installed, because command 'systemd-repart' could not be found!
    dracut: dracut module 'systemd-resolved' will not be installed, because command 'resolvectl' could not be found!
    dracut: dracut module 'systemd-resolved' will not be installed, because command '/usr/lib/systemd/systemd-resolved' could not be found!
    dracut: dracut module 'dbus-broker' will not be installed, because command 'dbus-broker' could not be found!
    dracut: dracut module 'rngd' will not be installed, because command 'rngd' could not be found!
    dracut: dracut module 'dmraid' will not be installed, because command 'dmraid' could not be found!
    dracut: dracut module 'dmsquash-live-ntfs' will not be installed, because command 'ntfs-3g' could not be found!
    dracut: dracut module 'tpm2-tss' will not be installed, because command 'tpm2' could not be found!
    dracut: dracut module 'nvmf' will not be installed, because command 'nvme' could not be found!
    dracut: dracut module 'biosdevname' will not be installed, because command 'biosdevname' could not be found!
    dracut: dracut module 'memstrack' will not be installed, because command 'memstrack' could not be found!
    dracut: memstrack is not available
    dracut: If you need to use rd.memdebug>=4, please install memstrack and procps-ng
    dracut: dracut module 'squash' will not be installed, because command 'mksquashfs' could not be found!
    dracut: dracut module 'squash' will not be installed, because command 'unsquashfs' could not be found!
    dracut: dracut module 'systemd-repart' will not be installed, because command 'systemd-repart' could not be found!
    dracut: dracut module 'systemd-resolved' will not be installed, because command 'resolvectl' could not be found!
    dracut: dracut module 'systemd-resolved' will not be installed, because command '/usr/lib/systemd/systemd-resolved' could not be found!
    dracut: dracut module 'dbus-broker' will not be installed, because command 'dbus-broker' could not be found!
    dracut: dracut module 'rngd' will not be installed, because command 'rngd' could not be found!
    dracut: dracut module 'dmraid' will not be installed, because command 'dmraid' could not be found!
    dracut: dracut module 'dmsquash-live-ntfs' will not be installed, because command 'ntfs-3g' could not be found!
    dracut: dracut module 'tpm2-tss' will not be installed, because command 'tpm2' could not be found!
    dracut: dracut module 'nvmf' will not be installed, because command 'nvme' could not be found!
    dracut: dracut module 'memstrack' will not be installed, because command 'memstrack' could not be found!
    dracut: memstrack is not available
    dracut: If you need to use rd.memdebug>=4, please install memstrack and procps-ng
    dracut: dracut module 'squash' will not be installed, because command 'mksquashfs' could not be found!
    dracut: dracut module 'squash' will not be installed, because command 'unsquashfs' could not be found!
    dracut: *** Including module: systemd ***
    dracut: *** Including module: systemd-initrd ***
    dracut: *** Including module: i18n ***
    dracut: *** Including module: drm ***
    dracut: *** Including module: plymouth ***
    dracut: *** Including module: kernel-modules ***
    dracut: *** Including module: kernel-modules-extra ***
    dracut: *** Including module: resume ***
    dracut: *** Including module: rootfs-block ***
    dracut: *** Including module: suse-btrfs ***
    dracut: *** Including module: suse-xfs ***
    dracut: *** Including module: terminfo ***
    dracut: *** Including module: udev-rules ***
    dracut: Skipping udev rule: 40-redhat.rules
    dracut: Skipping udev rule: 50-firmware.rules
    dracut: Skipping udev rule: 50-udev.rules
    dracut: Skipping udev rule: 91-permissions.rules
    dracut: Skipping udev rule: 80-drivers-modprobe.rules
    dracut: *** Including module: dracut-systemd ***
    dracut: *** Including module: haveged ***
    dracut: *** Including module: usrmount ***
    dracut: *** Including module: base ***
    dracut: *** Including module: fs-lib ***
    dracut: *** Including module: shutdown ***
    dracut: *** Including module: suse ***
    dracut: *** Including module: suse-initrd ***
    dracut: *** Including modules done ***
    dracut: *** Installing kernel module dependencies ***
    dracut: *** Installing kernel module dependencies done ***
    dracut: *** Resolving executable dependencies ***
    dracut: *** Resolving executable dependencies done ***
    dracut: *** Hardlinking files ***
    dracut: Mode:           real
    dracut: Files:          779
    dracut: Linked:         2 files
    dracut: Compared:       0 xattrs
    dracut: Compared:       62 files
    dracut: Saved:          339.22 KiB
    dracut: Duration:       0.014114 seconds
    dracut: *** Hardlinking files done ***
    dracut: *** Generating early-microcode cpio image ***
    dracut: *** Constructing GenuineIntel.bin ***
    dracut: *** Store current command line parameters ***
    dracut: Stored kernel commandline:
    dracut:  resume=UUID=e6702e22-4cd2-4e14-8217-a755dab5ece5
    dracut:  root=UUID=07dd87dc-2877-4015-ab39-bba850139020 rootfstype=ext4 rootflags=rw,relatime
    dracut: *** Stripping files ***
    dracut: *** Stripping files done ***
    dracut: *** Creating image file '/boot/initrd-5.14.21-150400.24.119-default' ***
    dracut: *** Creating initramfs image file '/boot/initrd-5.14.21-150400.24.119-default' done ***