ฉันมีการ์ด HPE SN1100Q 2 พอร์ต 16G HBA บนเซิร์ฟเวอร์ hpe proliant gen10 ของฉันซึ่งเชื่อมต่อกับอุปกรณ์จัดเก็บข้อมูลโดยตรง HPE 3par และมีเรื่องแปลกๆ เกิดขึ้น ฉันใช้ไดรเวอร์ qla2xxx เวอร์ชัน 10.01.00.19-k ซึ่งมาพร้อมในตัวใน Ubuntu 20.04 เมื่อเซิร์ฟเวอร์ของฉันรีสตาร์ท การเชื่อมต่อระหว่างเซิร์ฟเวอร์ของฉันกับ 3par จะไม่สามารถเข้าถึงได้ แต่เมื่อฉันรีเซ็ต fc_ports ด้วยคำสั่งนี้ การเชื่อมต่อสามารถเข้าถึงได้อีกครั้ง
เสียงสะท้อน 1 > /sys/class/fc_host/host7/issue_lip
เสียงสะท้อน 1 > /sys/class/fc_host/host9/issue_lip
ดังนั้นฉันต้องการรีเซ็ตพอร์ตนี้ก่อนที่เซิร์ฟเวอร์จะพยายามเมานต์พาธ ฉันเขียน systemd service และ reset-hba script สำหรับสิ่งนี้ แต่หลายเส้นทางพยายามเข้าถึงเส้นทางก่อนที่สคริปต์ของฉันจะรีเซ็ตพอร์ต ฉันจะแก้ไขปัญหานี้ได้อย่างไร
นี่คือบริการ systemd ของฉัน:
[หน่วย]
Description=รีเซ็ตพอร์ต hba เมื่อเริ่มต้น
ก่อน=multipathd.service
[บริการ]
Type=วันช็อต
ExecStartPre=/sbin/modprobe -a qla2xxx
ExecStart=/bin/bash -c "/opt/hpe-hba/reset_hba_ports.sh"
[ติดตั้ง]
ต้องการโดย=sysinit.target
และสคริปต์การรีเซ็ตของฉัน:
#/ถังขยะ/ทุบตี
FC_HOST_PATH="/sys/class/fc_host"
ม็อดโพรบ qla2xxx
จนกระทั่ง [ ! -z "$(ls $FC_HOST_PATH)" ]
ทำ
นอน1
echo "กำลังรอเจ้าภาพ FC..."
เสร็จแล้ว
echo "รีเซ็ตพอร์ต HBA อยู่ระหว่างดำเนินการ..."
สำหรับโฮสต์ใน $(ls $FC_HOST_PATH);do
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"
try_count=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 ]
แล้ว
หยุดพัก
ไฟ
((try_count++))
เสร็จแล้ว
echo "พอร์ต FC init คอมไพล์แล้ว!"
DATE=$(/usr/bin/วันที่)
echo $DATE >> /opt/hpe-hba/last_run.txt