一种非对称双活双控系统的故障处理方法
技术领域
本发明涉及计算机技术领域,尤具体地说是一种实用性强、非对称双活双控系统的故障处理方法。
背景技术
双控存储系统提供了冗余,主机端如何利用起双控,要依靠多路径软件。通常主机会与A控和B控分别连接,从而从两个控制器上发现到同一个物理Lun的两份副本,系统中会生成两个盘符,而多路径软件的功能则是负责链路故障后的路径切换、链路正常时的IO负载均衡以及冗余盘符的消除。
非对称双活双控系统,因为有Lun的Ownership存在,发向对应Lun的IO要确保走最优路径,而不能走非属主控制器,否则将引发内部转发,增加时延,除非在链路带宽达到瓶颈而控制器处理能力未达到瓶颈的时候可以利用这条非最优路径。
探测某个Lun的最优路径以及其他一些阵列端的运行信息,需要多路径软件与阵列之间做一些信息交互,这些信息可以走带外通道比如以太网,也可以走带内通道也就是数据链路比如FC/SAS/iSCSI,通常使用后者,而SCSI指令体系内没有针对多路径软件与阵列之间的交互协议做什么规定,所以各个厂商都有自己不同的实现模式,比如通过一些特殊指令序列,或者封装到某些特殊指令内部。正是由于各厂家的交互协议不统一,所以SCSI体系最新的规范里定义了ALUA(Asymmetric Logical Unit Access)协议,期望各厂商按照ALUA协议规范来实现多路径软件和阵列之间的交互。
传统非对称双活双控系统中,多路径软件与存储阵列之间的交互由各厂家制定,用户配置存储产品时需安装相应厂家的多路径软件,这种方式不具备通用型,使用也不方便。
基于此, 本发明提供一种非对称双活双控系统的故障处理方法,解决上述问题。
发明内容
本发明的技术任务是针对以上不足之处,提供一种实用性强、非对称双活双控系统的故障处理方法。
一种非对称双活双控系统的故障处理方法,基于非对称双活双控系统,该系统包括双控制器,即A控制器、B控制器,其实现过程为:
当前端链路故障中,某控制器接收到不属于自己的IO数据时,触发故障接管过程,完成归属权的切换;故障接管后,在前端链路故障恢复时,设置定时器,等状态保持一定时间后,进行下一次切换;故障控制器恢复正常,进行故障恢复时,根据lun是否回到初始状态来判断,哪些lun归属于对端。
在故障恢复和前端链路故障时,若控制器不宕机,由本控制器完成归属权切换前IO的下发;若控制器宕机,由对端控制器完成归属权切换前IO的下发。
在前端链路故障前,发送IO数据的控制器为A控制器,当故障发生时,与该A控制器完成归属权切换的对端控制器为B控制器,触发故障接管时,首先判断A控制器是否正常:如果异常,B控制器完成归属权切换,如果正常,则A控制器完成归属权切换。
当A控制器异常时,归属权切换前的IO由B控制器完成,其归属权切换过程为:
1)B控制器直接进行归属权切换;
2)该B控制器处理切换前对端IO的下发;
3)处理完成后,B控制器再进行后续接收IO的下发。
当A控制器正常时,归属权切换前的IO由A控制器完成,归属权切换过程为:
1)A控制器、B控制器均进行归属权切换;
2)A控制器处理归属权切换前IO的下发,并通知对端,即B控制器;
3)B控制器等待对端,即A控制器完成切换前IO的下发,收到确认信息后再进行后续接收到IO的下发。
当A控制器lun归属权由主切换至从时间超过一定时间,进入故障恢复过程,该时间为30min。
所述故障恢复过程的具体操作如下:
1)A控制器发起归属权切换请求;
2)B控制器响应该请求并进行IO下发,下发完成后告知A控制器;
3)A控制器收到IO下发完成的确认信号后,再处理后续收到的IO请求。
当A控制器由宕机恢复正常后,进入控制器故障恢复过程,具体操作如下:
1)B控制器将lun映射信息同步至A控制器;
2)B控制器针对归属权没有回到初始状态的lun,发起归属权切换请求;
3)A控制器根据归属权切换请求,配置alua并阻塞等待;
4)B控制器对归属权切换前的lun进行IO下发,完成后告知A控制器;
5)A控制器收到IO下发完成的ack信号后,再处理针对该lun的后续IO下发。
本发明的一种非对称双活双控系统的故障处理方法,具有以下优点:
本发明的一种非对称双活双控系统的故障处理方法,通过故障接管和故障恢复的设计,解决lun归属切换和谁下发故障前IO的问题,通用型强,使用方便,实用性强,易于推广。
附图说明
附图1为本发明的故障接管处理流程图。
附图2为本发明的前端链路故障时故障恢复处理流程图。
附图3为本发明的控制器故障时故障恢复处理流程图。
具体实施方式
下面结合附图和具体实施例对本发明作进一步说明。
如附图1、图2、图3所示,本发明提供一种非对称双活双控系统的故障处理方法,该方法针对双控系统的前端链路和控制器故障,基于最新SCSI体系规范中的ALUA协议来进行多路径软件与存储阵列之间的交互。它将故障发生后的处理分两个阶段,即故障接管和故障恢复;对lun归属切换和谁下发故障前IO的问题进行了设计。
在本发明的方法中,通过设置定时器避免频繁插拔网线导致的归属权频繁切换问题;故障接管及故障恢复处理流程。
本发明基于非对称双活双控系统,该系统包括双控制器,即A控制器、B控制器,其实现过程为:
当前端链路故障中,某控制器接收到不属于自己的IO数据时,触发故障接管过程,完成归属权的切换;故障接管后,在前端链路故障恢复时,此处为避免频繁插拔网线导致的归属权切换问题,设置定时器,等状态保持一定时间后,进行下一次切换;故障控制器恢复正常,进行故障恢复时,根据lun是否回到初始状态来判断,哪些lun归属于对端。
在故障恢复和前端链路故障时,若控制器不宕机,由本控制器完成归属权切换前IO的下发;若控制器宕机,由对端控制器完成归属权切换前IO的下发。故障接管及故障恢复处理流程如图1至图3所示。
在前端链路故障前,发送IO数据的控制器为A控制器,当故障发生时,与该A控制器完成归属权切换的对端控制器为B控制器,触发故障接管时,首先判断A控制器是否正常:如果异常,B控制器完成归属权切换,如果正常,则A控制器完成归属权切换。
当A控制器异常时,归属权切换前的IO由B控制器完成,其归属权切换过程为:
1)B控制器直接进行归属权切换;
2)该B控制器处理切换前对端IO的下发;
3)处理完成后,B控制器再进行后续接收IO的下发。
当A控制器正常时,归属权切换前的IO由A控制器完成,归属权切换过程为:
1)A控制器、B控制器均进行归属权切换;
2)A控制器处理归属权切换前IO的下发,并通知对端,即B控制器;
3)B控制器等待对端,即A控制器完成切换前IO的下发,收到确认信息后再进行后续接收到IO的下发。
当A控制器lun归属权由主切换至从时间超过一定时间,进入故障恢复过程,该时间为30min。
所述故障恢复过程的具体操作如下:
1)A控制器发起归属权切换请求;
2)B控制器响应该请求并进行IO下发,下发完成后告知A控制器;
3)A控制器收到IO下发完成的确认信号后,再处理后续收到的IO请求。
当A控制器由宕机恢复正常后,进入控制器故障恢复过程,具体操作如下:
1)B控制器将lun映射信息同步至A控制器;
2)B控制器针对归属权没有回到初始状态的lun,发起归属权切换请求;
3)A控制器根据归属权切换请求,配置alua并阻塞等待;
4)B控制器对归属权切换前的lun进行IO下发,完成后告知A控制器;
5)A控制器收到IO下发完成的ack信号后,再处理针对该lun的后续IO下发。
在实际操作中,配置控制器A所在路径为主路径,控制器B所在路径为从路径,具体配置如下。
控制器A:
root@cy:/sys/kernel/scst_tgt/device_groups/dgroup1/target_groups/tgroup1# cat ~/alua.sh
cd /sys/kernel/scst_tgt/device_groups
echo create dgroup1 > mgmt
echo add disk01 > dgroup1/devices/mgmt
echo create tgroup1 > dgroup1/target_groups/mgmt
echo 1 > dgroup1/target_groups/tgroup1/group_id
echo add iqn.2006-10.net.vlnb:tgt > dgroup1/target_groups/tgroup1/mgmt
echo 1 > dgroup1/target_groups/tgroup1/iqn.2006-10.net.vlnb\:tgt/rel_tgt_id
echo 1 > dgroup1/target_groups/tgroup1/preferred
echo create tgroup2 > dgroup1/target_groups/mgmt
echo 2 > dgroup1/target_groups/tgroup2/group_id
echo add iqn.2007-10.net.vlnb:tgt > dgroup1/target_groups/tgroup2/mgmt
echo 2 > dgroup1/target_groups/tgroup2/iqn.2007-10.net.vlnb\:tgt/rel_tgt_id
root@cy:/sys/kernel/scst_tgt/device_groups/dgroup1/target_groups/tgroup1# ls
group_id iqn.2006-10.net.vlnb:tgt mgmt preferred state
控制器B:
root@cy:/sys/kernel/scst_tgt/device_groups/dgroup1/target_groups/tgroup1# cat ~/alua.sh
cd /sys/kernel/scst_tgt/device_groups
echo create dgroup1 > mgmt
echo add disk01 > dgroup1/devices/mgmt
echo create tgroup1 > dgroup1/target_groups/mgmt
echo 2 > dgroup1/target_groups/tgroup1/group_id
echo add iqn.2006-10.net.vlnb:tgt > dgroup1/target_groups/tgroup1/mgmt
echo 2 > dgroup1/target_groups/tgroup1/iqn.2006-10.net.vlnb\:tgt/rel_tgt_id
echo create tgroup2 > dgroup1/target_groups/mgmt
echo 1 > dgroup1/target_groups/tgroup2/group_id
echo add iqn.2007-10.net.vlnb:tgt > dgroup1/target_groups/tgroup2/mgmt
echo 1 > dgroup1/target_groups/tgroup2/iqn.2007-10.net.vlnb\:tgt/rel_tgt_id
root@cy:/sys/kernel/scst_tgt/device_groups/dgroup1/target_groups/tgroup1# ls
group_id iqn.2006-10.net.vlnb:tgt mgmt preferred state。
上述具体实施方式仅是本发明的具体个案,本发明的专利保护范围包括但不限于上述具体实施方式,任何符合本发明的一种非对称双活双控系统的故障处理方法的权利要求书的且任何所述技术领域的普通技术人员对其所做的适当变化或替换,皆应落入本发明的专利保护范围。