Проблемы с LVM при перезагрузке после обновления до 4.2

1. Окружение

Вложенная виртуализация.

2. Проблема

При обновлении zVirt с версии 4.0/4.1 до 4.2 в некоторых случаях после обновления и перезагрузки хоста zVirt, он не запускается из-за проблем с LVM.

При этом:

  • Обновление zvirt-update прошло без ошибок.

  • Версия контроллера OVN была обновлена.

  • В веб-интерфейсе у хоста отображается корректная версия zVirt - 4.2.

LVM после перезагрузки находится в следующем состоянии (возможны незначительные отличия):

lvscan
  inactive          '/dev/znn/pool00' [75.00 GiB] inherit
  inactive          '/dev/znn/var_log_audit' [2.00 GiB] inherit
  inactive          '/dev/znn/var_log' [8.00 GiB] inherit
  inactive          '/dev/znn/var_crash' [10.00 GiB] inherit
  inactive          '/dev/znn/var' [15.00 GiB] inherit
  inactive          '/dev/znn/tmp' [1.00 GiB] inherit
  inactive          '/dev/znn/home' [1.00 GiB] inherit
  inactive          '/dev/znn/root' [38.00 GiB] inherit
  ACTIVE            '/dev/znn/swap' [3.97 GiB] inherit
  inactive          '/dev/znn/zvirt-node-ng-4.1-0.20240228.0' [38.00 GiB] inherit
  ACTIVE            '/dev/znn/zvirt-node-ng-4.1-0.20240228.0+1' [38.00 GiB] inherit
  inactive          '/dev/znn/var_tmp' [10.00 GiB] inherit

3. Решение

3.1. Способ 1

Для предотвращения данной ситуации перед обновлением:

  1. Уточните корректный wwid основного устройства:

    /usr/lib/udev/scsi_id -g -u -d /dev/sda
    0QEMU_QEMU_HARDDISK_edf76592-6402-4d56-b917-d89d770db028
  2. Проверьте, какой wwid указан в параметре blacklist в файле /etc/multipath/conf.d/vdsm_blacklist.conf и при необходимости исправьте на корректный. Например:

    cat /etc/multipath/conf.d/vdsm_blacklist.conf
    
    blacklist {
        wwid "0QEMU_QEMU_HARDDISK_edf76592-6402-4d56-b917-d89d770db028" (1)
    }
    1 Должен содержать правильный wwid.

В маловероятном случае если это не помогло, следует выполнить следующее:

  1. При загрузке в меню grub добавьте опцию rd.multipath=0 чтобы загрузиться с отключенной службой multipathd.

  2. Исправьте запись в /etc/multipath/conf.d/vdsm_blacklist.conf.

  3. Сгенерируйте новую корневую загрузочную файловую систему для ядра.

    dracut -fa
  4. Проверьте (по времени доступа/создания) чтобы образ был и в /boot и в /boot/zvirt-node-ng-4.1-0.20240228.0+1/:

    ll /boot/init* /boot/zvirt-node-ng-4.1-0.20240228.0+1/init*
    
    -rw-------. 1 root root 118151777 Aug  1 16:37 /boot/initramfs-4.18.0-448.el8.x86_64.img
    -rw-------. 1 root root  40915456 Aug  1 09:34 /boot/initramfs-4.18.0-448.el8.x86_64kdump.img
    -rw-------. 1 root root 122023029 Aug  1 18:52 /boot/initramfs-4.18.0-552.el8.x86_64.img (1)
    -rw-------. 1 root root 118151777 Aug  1 16:37 /boot/zvirt-node-ng-4.1-0.20240228.0+1/initramfs-4.18.0-448.el8.x86_64.img
    -rw-------. 1 root root  40915456 Aug  1 09:34 /boot/zvirt-node-ng-4.1-0.20240228.0+1/initramfs-4.18.0-448.el8.x86_64kdump.img
    -rw-------. 1 root root 122023029 Aug  1 18:52 /boot/zvirt-node-ng-4.1-0.20240228.0+1/initramfs-4.18.0-552.el8.x86_64.img (1)
    -rw-------. 1 root root  40552448 Aug  1 18:41 /boot/zvirt-node-ng-4.1-0.20240228.0+1/initramfs-4.18.0-552.el8.x86_64kdump.img
    1 Используется один и тот же образ (одинаковое время создания и версия)
  5. Если в zvirt-node-ng-4.1-0.20240228.0+1 окажется старая по времени версия, стоит заменить её из /boot.

3.2. Способ 2

Это самостоятельное решение. Не применяйте его совместно со способом 1.

Если обновление уже выполнено и при перезагрузке проявилась описанная проблема:

  1. Отключите использование фильтрации с помощью файла устройств, установив параметр use_devicesfile в 0 в /etc/lvm/lvm.conf:

    sed -i 's/^use_devicesfile = 1/use_devicesfile = 0/' /etc/lvm/lvm.conf
  2. Настройте фильтр, указав в нем соответствующее устройство в /etc/lvm/lvm.conf после use_devicesfile = 0 в секции devices. Например:

    filter = ["a|^/dev/disk/by-id/lvm-pv-uuid-2q94jd-7wgL-owU8-AO3L-AyHd-egnK-73XA3I$|", "r|.*|"