Am un card HBA HPE SN1100Q 2port 16G pe serverul meu hpe proliant gen10 care este conectat la atașarea directă de stocare HPE 3par. Și se întâmplă niște lucruri ciudate. Folosesc versiunea de driver qla2xxx 10.01.00.19-k, care este încorporată în ubuntu 20.04. Când serverele mele repornesc, conexiunea dintre serverul meu și 3par devine inaccesibilă. Dar când îmi resetez fc_ports cu această comandă, conexiunea este accesibilă din nou.
echo 1 > /sys/class/fc_host/host7/issue_lip
echo 1 > /sys/class/fc_host/host9/issue_lip
Așa că vreau să resetez aceste porturi înainte ca serverul să încerce să monteze căile. Am scris un service systemd și un script de resetare-hba pentru asta. Dar mai multe căi încearcă să acceseze căile înainte ca scriptul meu să reseta porturile. Cum pot rezolva această problemă?
Iată serviciul meu de sistem:
[Unitate]
Descriere=Resetați porturile hba la pornire
Înainte=multipathd.service
[Serviciu]
Type=onehot
ExecStartPre=/sbin/modprobe -a qla2xxx
ExecStart=/bin/bash -c „/opt/hpe-hba/reset_hba_ports.sh”
[Instalare]
WantedBy=sysinit.target
Și scriptul meu de resetare:
#/bin/bash
FC_HOST_PATH="/sys/class/fc_host"
modprobe qla2xxx
pana cand [ ! -z „$(ls $FC_HOST_PATH)” ]
do
somn 1
echo „Se așteaptă gazdele FC...”
Terminat
echo „Resetarea portului HBA în curs...”
pentru gazdă în $(ls $FC_HOST_PATH);do
RPORT=$(ls $FC_HOST_PATH/$gazdă/dispozitiv/ | grep rport)
TPORT=$(ls $FC_HOST_PATH/$gazdă/dispozitiv/$RPORT | țintă grep)
dacă [ -z „${TPORT}” ]
atunci
echo „$host nu este conectat. Se resetează portul FC”
echo 1 > /sys/class/fc_host/$host/issue_lip;
fi
Terminat
echo "Se așteaptă stabilirea comunicării FC."
try_count=0
în timp ce [ $try_count -le 3 ]
do
eroare=0
pentru gazdă în $(ls $FC_HOST_PATH)
do
RPORT=$(ls $FC_HOST_PATH/$gazdă/dispozitiv/ | grep rport)
TPORT=$(ls $FC_HOST_PATH/$gazdă/dispozitiv/$RPORT | țintă grep)
echo „Portul țintă pentru $host este $TPORT”
dacă [ -z „${TPORT}” ]
atunci
echo „Portul HBA FC nu este încă gata. Ținta nu este disponibilă! Se așteaptă 10 secunde...”
eroare=1
somn 5
fi
Terminat
dacă [ $err -eq 0 ]
atunci
pauză
fi
((try_count++))
Terminat
echo "Port FC init complated!"
DATE=$(/usr/bin/date)
echo $DATE >> /opt/hpe-hba/last_run.txt