S2600存储iscsi集群环境下单节点启动失败导致集群无法正常启动

发布时间:  2014-09-29 浏览次数:  194 下载次数:  4
问题描述

某局点(组网图件附件),S2600存储设备采用单控,控制器软件版本为1.04.01.205.T01,SES版本为S021,服务器端操作系统为AIX6100-01,采用HACMP集群软件,版本为5.4.1.0。在控制器A上为两个节点分别映射两个私有LUN,同时2台主机共享2个LUN作为集群存储,现场出现在私有LUN激活的情况下,启动集群时,单节点失败。

告警信息:主节点可以正常启动另外一个节点启动失败。

通过分析存储日志发现以下现象:

在日志中发现了预留命令的下发:
Oct 14 23:25:56 AK-I kernel: [372919227]Reserve (6)[16] command for Host LUN 0, Device Lun 8  @ [jif=372919227] SCSI_PrintDebugInfo : 1382

同时也发现了清除预留的命令:
Oct 14 23:25:56 AK-I kernel: [372919957]SCSI_ClearReserveExec
Oct 14 23:25:56 AK-I kernel: [372919957]  @ [jif=372919957] SCSI_ClearReserveExec : 2200
Oct 14 23:25:56 AK-I kernel: [372919957]This is the master controller
Oct 14 23:25:56 AK-I kernel: [372919957]  @ [jif=372919957] SCSI_ClearReserveExec : 2207
Oct 14 23:25:56 AK-I kernel: [372919957]Enter SCSI_ClearReserve
Oct 14 23:25:56 AK-I kernel: [372919957]  @ [jif=372919957] SCSI_ClearReserve : 2286

告警信息
处理过程

由以上定位最终确定局点在启动和关闭节点及私有LUN的顺序上不对。可以采用如下规避方案:
1. 启动顺序:先启动HA,再使用命令varyonvg将LUN所在的卷组手动激活。
2. 关闭顺序:先使用命令varyoffvg手动关闭私有LUN所在的卷组,再关闭HA。

根因

在没有私有LUN的情况下,集群启动过程中,先启动的节点在会先下发预留,然后下发LOGOUT来清除预留。然后另外一个节点同样执行下发和清除预留动作。

如果先启动的节点在下发预留以后,没有清除预留,会导致了另一个节点不能正常启动。


在启动过程中,集群节点清除预留是通过发LOGOUT命令来完成,LOGOUT会将整个session down掉。而私有LUN和共享磁盘对于主节点来说是共享一个session的,它们是同一个session下的两个connection,所以当私有LUN是active时,集群节点不能下发LOGOUT命令来down掉整个session,从而导致了预留不能清除,这是第二个节点不能启动的原因。

建议与总结

END