SAN双活场景,已挂载的卷对应聚合盘的子路径丢失
现象描述
已挂载的资源对应聚合盘的子路径丢失。
根因分析
如 图1 所示,当HBA卡/网卡异常,交换机/网络抖动,存储阵列业务端口故障等因素导致主机与存储一端链路断开后,主机发生重启并触发重新扫盘,此时主机上缺失已故障一端存储的链路。待故障恢复后,由于主机重新扫盘后,链路信息已丢失,缺失的链路不会自动恢复。
想要恢复缺失的链路,通常可以通过漂移Pod到其他主机方式,交由CSI自动重新挂载,并补齐缺失的链路。若需手动在当前主机上恢复缺失链路,请参考以下方法。
解决措施或规避方法(iSCSI协议)
执行以下命令,查询主机上对应业务IP的iSCSI节点是否存在,其中"192.168.1.100"为业务IP。若节点存在则跳转到 3 ,不存在则到 2 。
iscsiadm -m node | grep 192.168.1.100iscsiadm -m discovery -t st -p 192.168.1.100iscsiadm -m node -p 192.168.1.100 -l执行以下命令,并根据对应的业务IP,查找其下iSCSI host编号。
iscsiadm -m session -P3执行以下扫盘命令,补齐缺失的链路,其中"host_lun_id"为 5 中找到的主机LUN ID,“host_no"为 4 中获取的host编号
echo "- - <host_lun_id>" > /sys/class/scsi_host/host<host_no>/scan执行以下命令,查看链路是否已经补齐
multipath -ll
解决措施或规避方法(FC协议)
cat /sys/class/fc_host/host*/port_name | awk 'BEGIN{FS="0x";ORS=" "}{print $2}'执行以下命令,查找路径缺失启动器下对应的host编号,其中"port_name"为 1 中获取的启动器名称
for h in /sys/class/fc_host/host*; do echo $h: $(cat $h/port_name); done | grep <port_name>执行以下扫盘命令,补齐缺失的链路,其中"host_lun_id"为 3 中找到的主机LUN ID,“host_no"为 2 中获取的host编号
echo "- - <host_lun_id>" > /sys/class/scsi_host/host<host_no>/scan执行以下命令,查看链路是否已经补齐
multipath -ll
