一种链路切换方法和系统的制作方法

文档序号:9326760阅读:222来源:国知局
一种链路切换方法和系统的制作方法
【技术领域】
[0001]本发明涉及Iinux领域,具体涉及一种链路切换方法和系统。
【背景技术】
[0002]在Iinux技术飞速发展的今天,几乎所有的服务器均是采用Iinux操作系统。而存储是服务器不可或缺的硬件产品,在目前的1应用中,服务器和存储之间的1路径失效是经常发生的问题,为正常的1操作带来很多不便,如何在1路径失效时快速有效地在多条链路之间进行切换是本领域技术人员亟需解决的问题。

【发明内容】

[0003]为了解决上述问题,本发明提出了一种链路切换方法和系统,能够有效地提高1效率。
[0004]为了达到上述目的,本发明提出了一种链路切换方法,该方法包括:
[0005]在Qlogic层实时检测链路状态。
[0006]当检测到链路出现故障时,触发netlink机制,并向Qlogic层中预创建的套接字socket里面发送故障信息。
[0007]通过Multipath工具层中预创建的守护线程实时检测socket,并接收socket中的该故障信息。
[0008]根据该故障信息中包含的链路切换指令在Multipath工具层选择新的链路。
[0009]当新的链路选择完成后,向multipath内核层发送将出现故障的链路切换到新的链路的第一通知信息。
[0010]根据第一通知信息在multipath内核层将被中断的1块指向新的链路,并向SCSI层发送进行链路切换的第二通知信息。
[0011]根据第二通知信息在SCSI层执行链路切换。
[0012]优选地,该方法还包括:
[0013]当检测到链路出现故障时,在Qlogic层触发与出现故障的链路相对应的中断机制,中止出现故障的链路上的当前1块的传输。
[0014]优选地,新的链路是指未出现故障的空闲链路中优先级最高的链路。
[0015]优选地,该方法还包括:
[0016]根据第二通知信息在SCSI层执行链路切换后,重新将1块发送给Qlogic层,并通过切换后的新的链路在Qlogic层下发给相应的底层存储设备。
[0017]为了达到上述目的,本发明还提出了一种链路切换系统,该系统包括:检测模块、触发模块、接收模块、选择模块、第一发送模块、第二发送模块和切换模块。
[0018]检测模块,用于在Qlogic层实时检测链路状态。
[0019]触发模块,用于当检测到链路出现故障时,触发netlink机制,并向Qlogic层中预创建的套接字socket里面发送故障信息。;
[0020]接收模块,用于通过Multipath工具层中预创建的守护线程实时检测socket,并接收socket中的故障信息。
[0021]选择模块,用于根据故障信息中包含的链路切换指令在Multipath工具层选择新的链路。
[0022]第一发送模块,用于当新的链路选择完成后,向multipath内核层发送将出现故障的链路切换到新的链路的第一通知信息。
[0023]第二发送模块,用于根据第一通知信息在multipath内核层将被中断的1块指向新的链路,并向SCSI层发送进行链路切换的第二通知信息。
[0024]切换模块,用于根据第二通知信息在SCSI层执行链路切换。
[0025]优选地,该系统还包括:中断模块。
[0026]中断模块,用于当检测到链路出现故障时,在Qlogic层触发与出现故障的链路相对应的中断机制,中止出现故障的链路上的当前1块的传输。
[0027]优选地,新的链路是指未出现故障的空闲链路中优先级最高的链路。
[0028]优选地,该系统还包括:下发模块。
[0029]该下发模块,用于根据第二通知信息在SCSI层执行链路切换后,重新将1块发送给Qlogic层,并通过切换后的新的链路在Qlogic层下发给相应的底层存储设备。
[0030]与现有技术相比,本发明包括:在Qlogic层实时检测链路状态。当检测到链路出现故障时,触发netlink机制,并向Qlogic层中预创建的套接字socket里面发送故障信息。通过Multipath工具层中预创建的守护线程实时检测socket,并接收socket中的该故障信息。根据该故障信息中包含的链路切换指令在Multipath工具层选择新的链路。当新的链路选择完成后,向multipath内核层发送将出现故障的链路切换到新的链路的第一通知信息。根据第一通知信息在multipath内核层将被中断的10块指向新的链路,并向SCSI层发送进行链路切换的第二通知信息。根据第二通知信息在SCSI层执行链路切换。通过本发明的方案,能够有效地提高10效率。
【附图说明】
[0031 ] 下面对本发明实施例中的附图进行说明,实施例中的附图是用于对本发明的进一步理解,与说明书一起用于解释本发明,并不构成对本发明保护范围的限制。
[0032]图1为常规的multipath多路径软件结构示意图;
[0033]图2为本发明的链路切换方法流程图;
[0034]图3为本发明的链路切换方法结构示意图;
[0035]图4为本发明的链路切换系统组成框图。
【具体实施方式】
[0036]为了便于本领域技术人员的理解,下面结合附图对本发明作进一步的描述,并不能用来限制本发明的保护范围。
[0037]在I inux技术飞速发展的今天,几乎所有的服务器均是采用I inux操作系统。而存储是服务器不可或缺的硬件产品,而multipath多路径软件是维护服务器和存储之间的路径的关键部分,它负责对数据的分流和负载均衡。实现对设备的映射,路径的删除等操作。如图1所示,multipath多路径软件分为上层用户态的multipath工具层、multipath内核层、SCSI协议层以及Qlogic驱动层。每一层都有各自的分工,将各自所收集到的信息经过相关的处理后,再通知其他层如何操作,来实现对链路的快速切换维护。
[0038]本发明的架构设计构思是,基于该multipath多路径软件,考虑netlink交互的特点,以及Iinux内核进程调度的特点,来实现错误路径的快速切换,通过此方法可以有效地提高1效率。
[0039]本发明的方法设计构思是,通知SCSI层将数据准备发往的链路切换到将要切换到的链路,并取消上次1操作。这是根据netlink socket具有程序之间相互通讯的特性来实现的,当Qlogic驱动检测到路径出错时,将会向创建好的socket里面传输一个信号。
[0040]具体地,为了达到上述目的,本发明提出了一种链路切换方法,如图2、图3所示,该方法包括:
[0041]S101、在Qlogic层实时检测链路状态。
[0042]S102、检测到链路出现故障时,触发netlink机制,并向Qlogic层中预创建的套接字socket里面发送故障信息。
[0043]在本发明实施例中,multipath上层和Qlogic驱动层通过netlink通信机制连接在一起,可以互相通信。具体地,在multipath多路径软件的Qlogic驱动里注册一个netlink服务,用以实现通知上层multipath做好链路切换的准备。
[0044]优选地,该方法还包括:
[0045]当检测到链路出现故障时,在Qlogic层触发与出现故障的链路相对应的中断机制,中止出现故障的链路上的当前1块的传输。
[0046]在本发明实施例中,当Qlogic驱动检测到链路down掉后,会触发一个中断,并且在multipath内核层启用一个定时器,等待链路状态恢复,在传统的机制里,这段时间内是不能有1操作的,在本发明实施例中,我们在这个中断里加上一个netlink机制,越过1等待时间,提前进行链路切换,如果在一段时间后链路恢复了,将会重新切换到此链路。
[0047]另外,网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket。根据netlink socket具有程序之间相互通讯的这种特性,当Qlogic驱动检测到路径出错时,将会向创建好的socket里面传输一个信号,即本发明的故障信息。
[0048]S103、通过Multipath工具层中预创建的守护线程实时检测socket,并接收socket中的该故障信息。
[0049]在本发明实施例中,在Multipath工具层会预先设置一个守护线程,该守护线程不停地去检测上述的socket,并接收该socket里的信号;对接收到的信号进行分析,以实现链路的准确切换。
[0050]S104、根据该故障信息中包含的链路切换指令在Multipath工具层选择新的链路。
[005
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1