У меня есть двухпортовая карта HBA HPE SN1100Q 16G на моем сервере hpe proliant gen10, который подключен к системе хранения данных HPE 3par с прямым подключением. И происходят какие-то странные вещи. Я использую драйвер qla2xxx версии 10.01.00.19-k, встроенный в Ubuntu 20.04. Когда мои серверы перезагружаются, соединение между моим сервером и 3par становится недоступным. Но когда я сбрасываю свои fc_ports с помощью этой команды, соединение снова становится доступным.
эхо 1 > /sys/класс/fc_host/host7/issue_lip
эхо 1 > /sys/класс/fc_host/host9/issue_lip
Поэтому я хочу сбросить эти порты до того, как сервер попытается смонтировать пути. Для этого я написал сервис systemd и скрипт reset-hba. Но multipath пытается получить доступ к путям до того, как мой скрипт сбросил порты. Как я могу решить эту проблему?
Вот мой системный сервис:
[Ед. изм]
Description=Сброс портов hba при запуске
До = multipathd.service
[Оказание услуг]
Тип = ваншот
ExecStartPre=/sbin/modprobe -a qla2xxx
ExecStart=/bin/bash -c "/opt/hpe-hba/reset_hba_ports.sh"
[Установить]
WantedBy=sysinit.target
И мой скрипт сброса:
#/бин/баш
FC_HOST_PATH="/sys/класс/fc_host"
модзонд qla2xxx
до тех пор [ ! -z "$(ls $FC_HOST_PATH)" ]
делать
спать 1
echo "Ожидание хостов FC..."
сделано
echo "Выполняется сброс порта HBA..."
для хоста в $(ls $FC_HOST_PATH); сделать
RPORT=$(ls $FC_HOST_PATH/$host/device/ | grep rport)
TPORT=$(ls $FC_HOST_PATH/$host/device/$RPORT | цель grep)
если [-z "${TPORT}" ]
тогда
echo "$host не подключен. Сброс порта FC"
эхо 1 > /sys/class/fc_host/$host/issue_lip;
фи
сделано
echo "Ожидание установления связи FC."
количество попыток = 0
в то время как [ $try_count -le 3 ]
делать
ошибка=0
для хоста в $(ls $FC_HOST_PATH)
делать
RPORT=$(ls $FC_HOST_PATH/$host/device/ | grep rport)
TPORT=$(ls $FC_HOST_PATH/$host/device/$RPORT | цель grep)
echo "Целевой порт для $host: $TPORT"
если [-z "${TPORT}" ]
тогда
echo "Порт HBA FC еще не готов. Цель недоступна! Ожидание 10 сек..."
ошибка=1
спать 5
фи
сделано
если [ $err -eq 0 ]
тогда
сломать
фи
((количество попыток++))
сделано
echo "Инициализация порта FC завершена!"
ДАТА=$(/usr/bin/дата)
эхо $DATE >> /opt/hpe-hba/last_run.txt