Не поднимается FCoE после обновления в RHEL 7.6
После обновления с RHEL 7.5 до RHEL 7.6 при загрузке перестали подниматься оба интерфейса FCoE.
Поднимается только один интерфейс и диски доступны только по половине путей.
Один раз особо «удачно» удалось загрузиться так, что не поднялись оба интерфейса - соответственно диски не были доступны вообще.
Если вручную сделать «ifdown eno3» / «ifup eno3», то поднимается, а вот при загрузке - фиг.
Явно какой-то рэйс.
Если при загрузке выбрать в меню GRUB2 предыдущее ядро (от RHEL 7.5), то всегда поднимаются оба интерфейса.
Железо - HP ProLiant BL460c Gen10 с конвергентным HBA 630FLB.
Ладно, чего голову ломать, если есть отличная поддержка RedHat? Завел кейс.
Техподдержка предложила добавить 2 строчки в файл /lib/systemd/system/fcoe.service:
[Unit]
Description=Open-FCoE Inititator.
After=syslog.target network.target lldpad.service
[Service]
Type=forking
EnvironmentFile=/etc/sysconfig/fcoe
ExecStartPre=/sbin/modprobe -qa $SUPPORTED_DRIVERS
ExecStart=/usr/sbin/fcoemon $FCOEMON_OPTS
Type=oneshot <---- Added
ExecStart=/usr/sbin/fipvlan -acds <---- Added
[Install]
WantedBy=multi-user.target
Я очень удивился. Осторожно спросил - а уверен ли он, что сервис может быть одновременно и Type=forking и Type=oneshot?
Мало ли, бывает, опечатался человек.
На что он ответил - да, первый ExecStart запустится как forking, а второй - как oneshot. А вообще, говорит,
«мопед не мой, мы это советовали другому клиенту, у которого была аналогичная проблема.
Правда, он после этого к нам не вернулся и мы не знаем, помогло ли это ему.»
Вопрос в общем-то не о качестве техподдержки редхата - понятно, что на первой линии сидят макаки, которые вчера окончили курсы, а сегодня их бросили в поддержку. RedHat в этом отношении не лучше и не хуже других вендоров. Не буду описывать всю историю этого кейса - сколько дебильных тестов пришлось выполнить по просьбе первой линии, чтобы спустя месяц они наконец воспроизвели проблему и передали ее разработчикам. Через полгода, надеюсь, пофиксят.
Вопрос про systemd - а что, так можно - указывать несколько Type= в сервисе?
Самое интересно, что оба ExecStart действительно отрабатывают, правда, демон /usr/sbin/fcoemon, указанный в первом ExecStart, на «нормальной» системе стартует при загрузке и постоянно запущен, а после этих модификаций он сразу же завершается. На вопрос RedHat'у «а нормально ли это», индусы ушли в астрал (видимо на следующий уровень поддержки), после чего в треде появился единственный вменяемый чувак, который сказал «включи дебаг fcoe и собери логи. И убери все эти изменения».
Так вот - это что, штатная фича systemd и это применяется? Я не нашел, чтобы это было документировано. Да выглядит как-то криво.
Короче - это и правда полная хрень или наоборот совет от мега-хакеров systemd?