多控存储系统IO路径管理方法、装置及电子设备和介质与流程

文档序号:23395640发布日期:2020-12-22 14:03阅读:103来源:国知局
多控存储系统IO路径管理方法、装置及电子设备和介质与流程
本申请涉及存储服务器
技术领域
,更具体地说,涉及一种多控存储系统io路径管理方法、装置及一种电子设备和一种计算机可读存储介质。
背景技术
:多控制器存储系统中的io处理可以在任意节点进行处理,而存储系统中需要保证每个节点上io路径的可访问性,尤其是对于配置了轮询方式多路径处理策略的主机用户,路径上的各模块处理策略决定了路径通路是否可访问,尤其是在发生节点故障的场景下,io路径状态需要第一时间反馈到主机端。因此,如何解决上述问题是本领域技术人员需要重点关注的。技术实现要素:本申请的目的在于提供一种多控存储系统io路径管理方法、装置及一种电子设备和一种计算机可读存储介质,提高了多控制器存储系统的异常处理能力和可靠性。为实现上述目的,本申请提供了一种多控存储系统io路径管理方法,包括:接收下层io模块上传的io路径状态信息;其中,所述io路径状态信息中包括多控存储系统中各个节点的状态信息;根据所述io路径状态信息,判断所述下层io模块中是否存在故障/离线节点;若不存在故障/离线节点,则直接将当前io模块自身的io路径状态信息上传至上层io模块中;若存在故障/离线节点,则根据所述故障/离线节点的信息调整所述当前io模块的下层io路径,并在调整后将所述当前io模块自身的io路径状态信息上传至上层io模块中。可选的,所述io路径状态信息包括用于表示逻辑卷创建完成且在线的第一类状态信息,用于表示逻辑卷当前不可用的第二类状态信息,以及用于表示逻辑卷离线的第三类状态信息。可选的,所述io路径状态信息包括两个32位的数值,所述数值中每一位用于标识各节点的状态信息。可选的,所述若存在故障/离线节点,则根据所述故障/离线节点的信息调整所述当前io模块的下层io路径,包括:若存在故障/离线节点,则判断所述故障/离线节点是否为所述当前io模块的下层io路径中的主节点;如果是,则执行根据所述故障/离线节点的信息调整所述当前io模块的下层io路径的步骤。可选的,所述将当前io模块自身的io路径状态信息上传至上层io模块中,包括:若获取到当前io模块对应的后端节点返回的io故障信息,且判断所述后端节点为非离线状态时,将所述io故障信息添加至等待队列中;当检测到所述后端节点触发离线事件后,将所述io故障信息上传至上层io模块中。可选的,所述根据所述故障/离线节点的信息调整所述当前io模块的下层io路径,包括:根据所述故障/离线节点信息,确定对应的对端节点,将所述当前io模块的下层io路径中的所述故障/离线节点替换为所述对端节点。为实现上述目的,本申请提供了一种多控存储系统io路径管理装置,包括:状态接收模块,用于接收下层io模块上传的io路径状态信息;其中,所述io路径状态信息中包括多控存储系统中各个节点的状态信息;故障判断模块,用于根据所述io路径状态信息,判断所述下层io模块中是否存在故障/离线节点;状态上传模块,用于若不存在故障/离线节点,则直接将当前io模块自身的io路径状态信息上传至上层io模块中;路径调整模块,用于若存在故障/离线节点,则根据所述故障/离线节点的信息调整所述当前io模块的下层io路径,并在调整后将所述当前io模块自身的io路径状态信息上传至上层io模块中。可选的,所述io路径状态信息包括用于表示逻辑卷创建完成且在线的第一类状态信息,用于表示逻辑卷当前不可用的第二类状态信息,以及用于表示逻辑卷离线的第三类状态信息。为实现上述目的,本申请提供了一种电子设备,包括:存储器,用于存储计算机程序;处理器,用于执行所述计算机程序时实现前述公开的任一种多控存储系统io路径管理方法的步骤。为实现上述目的,本申请提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现前述公开的任一种多控存储系统io路径管理方法的步骤。通过以上方案可知,本申请提供的一种多控存储系统io路径管理方法,包括:接收下层io模块上传的io路径状态信息;其中,所述io路径状态信息中包括多控存储系统中各个节点的状态信息;根据所述io路径状态信息,判断所述下层io模块中是否存在故障/离线节点;若不存在故障/离线节点,则直接将当前io模块自身的io路径状态信息上传至上层io模块中;若存在故障/离线节点,则根据所述故障/离线节点的信息调整所述当前io模块的下层io路径,并在调整后将所述当前io模块自身的io路径状态信息上传至上层io模块中。由上可知,本申请可利用包括各节点状态信息的io路径状态信息标识io路径的状态变化,各层模块之间可通过上述状态信息来进行状态传递,若下层模块的任意节点出现故障,则io路径状态信息发生改变后,可上传至上层io模块,以便上层对应调整io路径,提高了多控制器存储系统的异常处理能力,提升了系统的可靠性。本申请还公开了一种多控存储系统io路径管理装置及一种电子设备和一种计算机可读存储介质,同样能实现上述技术效果。应当理解的是,以上的一般描述和后文的细节描述仅是示例性的,并不能限制本申请。附图说明为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1为本申请实施例公开的一种多控存储系统io路径管理方法的流程图;图2为本申请实施例公开的一种具体的多控存储系统io路径管理方案的示意图;图3为本申请实施例公开的一种多控存储系统io路径管理装置的结构图;图4为本申请实施例公开的一种电子设备的结构图;图5为本申请实施例公开的另一种电子设备的结构图。具体实施方式下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。本申请实施例公开了一种多控存储系统io路径管理方法,提高了多控制器存储系统的异常处理能力和可靠性。参见图1所示,本申请实施例公开的一种多控存储系统io路径管理方法包括:s101:接收下层io模块上传的io路径状态信息;其中,所述io路径状态信息中包括多控存储系统中各个节点的状态信息;本申请实施例中,当前io模块可接收下层io模块上传的io路径状态信息,也即,层级模块之间可通过io路径状态信息进行状态传递。具体地,上述io路径状态信息可以包括但不限于用于表示逻辑卷创建完成且在线的第一类状态信息,用于表示逻辑卷当前不可用的第二类状态信息,以及用于表示逻辑卷离线的第三类状态信息。上述io路径状态信息中可以包括两个32位的数值,其中,数值中的每一位数字用于标识各节点的状态信息。作为一种具体的实施方式,上述io路径状态信息可以具体包括但不限于offline/pending/online三种。对于用户新创建的逻辑卷lun而言,初始状态都是offline状态,在创建完成为则为online状态,pending状态是用户lun在处理集群节点事件时添加的状态,表示该节点正处于退出或加入节点状态,lun状态不可用。可以理解的是,各模块可以仅使用offline/pending/online来标识lun状态,只要有一条通路即可。但是部分模块区分主从节点,需要根据路径状态信息来区分哪个节点作为主节点,例如精简卷模块,其元数据操作是在主节点上进行的,因此主节点的路径状态发生变化时就需要切换,即需要确保通路经过主节点。由此,为了标识每个节点的状态,io路径状态信息可使用两个32位来标识,其中每一位数值代表各节点的状态,使其包含了节点的属性。具体地,路径状态转换的方式可参见下表1所示:表1online_or_pendingonlinestate100offline210pending311online401illegal例如,若io路径状态信息为0b00/0b00,则表示两个节点的链路不通;若io路径状态信息为0b11/0b11,则表示两个节点path状态online;若io路径状态信息为0b11/0b10,则表示节点1处于pending状态,链路不通。在一种优选的实施方式中,本申请实施例为了简化对节点状态的判断,可引入集群管理中的onlinenodes参量,从而可利用集群节点管理准确地提供节点的pending状态,进而路径状态信息通过状态机运算确定每个节点的io路径是否正常。s102:根据所述io路径状态信息,判断所述下层io模块中是否存在故障/离线节点;本步骤中,可根据上述io路径状态信息,判断下层io模块中是否存在故障/离线节点,例如,若io路径状态信息为0b11/0b10,则表示节点1处于pending状态,链路不通,判定节点1为故障/离线节点。s103:若不存在故障/离线节点,则直接将当前io模块自身的io路径状态信息上传至上层io模块中;可以理解的是,若判断得到下层io模块中并不存在故障/离线节点时,则表征io路径为通路,无需进行io路径的调整,此时当前io模块即可将自身的io路径状态信息上传至上层io模块中,以使上层io模块再进行下一步的判断,直至最上层io模块获取到其对应的下层io模块上传的路径状态信息,以便整个主机根据当前系统中的节点状态调整io路径。s104:若存在故障/离线节点,则根据所述故障/离线节点的信息调整所述当前io模块的下层io路径,并在调整后将所述当前io模块自身的io路径状态信息上传至上层io模块中。若判断得到下层io模块中存在故障/离线节点,则可根据故障/离线节点的信息,调整当前io模块的下层io路径,以确保io路径可访问。在调整io路径之后,当前io模块即可执行将自身的io路径状态信息上传至上层io模块中的步骤。可以理解的是,在根据故障/离线节点的信息调整当前io模块的下层io路径的过程中,可以首先判断故障/离线节点是否为所述当前io模块的下层io路径中的主节点;如果是,则执行根据故障/离线节点的信息调整当前io模块的下层io路径的步骤。也即,若故障/离线节点并非主节点,即确保存在一条通路即可时,可以无需进行io路径的调整。在具体实施中,上述根据故障/离线节点的信息调整当前io模块的下层io路径的过程可包括:根据故障/离线节点信息,确定对应的对端节点,将当前io模块的下层io路径中的故障/离线节点替换为对端节点,即可将io转发到对端节点落盘。进一步地,在底层离线时为确保io处理时序,可通过以下流程,保证返回正确的主机io处理结果。具体地:若获取到当前io模块对应的后端节点返回的io故障信息,且判断后端节点为非离线状态时,将io故障信息添加至等待队列中;当检测到后端节点触发离线事件后,将io故障信息上传至上层io模块中。由此,可避免io先于事件返回时造成的模块处理时序问题。通过以上方案可知,本申请提供的一种多控存储系统io路径管理方法,包括:接收下层io模块上传的io路径状态信息;其中,所述io路径状态信息中包括多控存储系统中各个节点的状态信息;根据所述io路径状态信息,判断所述下层io模块中是否存在故障/离线节点;若不存在故障/离线节点,则直接将当前io模块自身的io路径状态信息上传至上层io模块中;若存在故障/离线节点,则根据所述故障/离线节点的信息调整所述当前io模块的下层io路径,并在调整后将所述当前io模块自身的io路径状态信息上传至上层io模块中。由上可知,本申请可利用包括各节点状态信息的io路径状态信息标识io路径的状态变化,各层模块之间可通过上述状态信息来进行状态传递,若下层模块的任意节点出现故障,则io路径状态信息发生改变后,可上传至上层io模块,以便上层对应调整io路径,提高了多控制器存储系统的异常处理能力,提升了系统的可靠性。下面通过一种具体的实施场景对本申请实施例提供的多控存储系统io路径管理方法进行介绍。参见图2所示,具体的,模块与模块之间具体通过上述实施例定义的io路径状态信息来进行状态传递,下层的状态会影响上层的io处理路径。例如,componentb模块存在一节点故障,导致业务无法处理时,则将路径状态pathstate和onlinenodes参量传递至上层componentc模块,componentc即可根据传递的状态信息切换本模块io处理的路径,改变主节点,将io转移到node2上进行处理。需要说明的是,当后端磁盘离线后,会将offline状态通过io方式传到上层。由于事件处理采用串行处理方式,而io往往并行触发,因此速度较快,导致offlineio先于事件返回,会造成模块处理时序问题。因此,本实施例可增加waitingoffline队列,在返回的io离线,但后端磁盘未离线时,先将该io加入等待队列中。当触发离线事件之后,再从等待队列中取出该io返回至主机,以此保证模块处理时序。本申请实施例中,可根据模块需要设计了三种路径状态信息,并增加了节点状态值,确保该层模块在本节点可进行io处理,提高了系统的稳定性。当底层离线时,为保证io处理时序,可增设等待队列,从而保证返回正确的主机io处理结果。下面对本申请实施例提供的一种多控存储系统io路径管理装置进行介绍,下文描述的一种多控存储系统io路径管理装置与上文描述的一种多控存储系统io路径管理方法可以相互参照。参见图3所示,本申请实施例提供的一种多控存储系统io路径管理装置包括:状态接收模块201,用于接收下层io模块上传的io路径状态信息;其中,所述io路径状态信息中包括多控存储系统中各个节点的状态信息;故障判断模块202,用于根据所述io路径状态信息,判断所述下层io模块中是否存在故障/离线节点;状态上传模块203,用于若不存在故障/离线节点,则直接将当前io模块自身的io路径状态信息上传至上层io模块中;路径调整模块204,用于若存在故障/离线节点,则根据所述故障/离线节点的信息调整所述当前io模块的下层io路径,并在调整后将所述当前io模块自身的io路径状态信息上传至上层io模块中。关于上述模块201至204的具体实施过程可参考前述实施例公开的相应内容,在此不再进行赘述。在上述实施例的基础上,作为一种优选实施方式,所述io路径状态信息包括用于表示逻辑卷创建完成且在线的第一类状态信息,用于表示逻辑卷当前不可用的第二类状态信息,以及用于表示逻辑卷离线的第三类状态信息。本申请还提供了一种电子设备,参见图4所示,本申请实施例提供的一种电子设备包括:存储器100,用于存储计算机程序;处理器200,用于执行所述计算机程序时可以实现上述实施例所提供的步骤。具体的,存储器100包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机可读指令,该内存储器为非易失性存储介质中的操作系统和计算机可读指令的运行提供环境。处理器200在一些实施例中可以是一中央处理器(centralprocessingunit,cpu)、控制器、微控制器、微处理器或其他数据处理芯片,为电子设备提供计算和控制能力,执行所述存储器100中保存的计算机程序时,可以实现前述任一实施例公开的多控存储系统io路径管理方法。在上述实施例的基础上,作为优选实施方式,参见图5所示,所述电子设备还包括:输入接口300,与处理器200相连,用于获取外部导入的计算机程序、参数和指令,经处理器200控制保存至存储器100中。该输入接口300可以与输入装置相连,接收用户手动输入的参数或指令。该输入装置可以是显示屏上覆盖的触摸层,也可以是终端外壳上设置的按键、轨迹球或触控板,也可以是键盘、触控板或鼠标等。显示单元400,与处理器200相连,用于显示处理器200处理的数据以及用于显示可视化的用户界面。该显示单元400可以为led显示器、液晶显示器、触控式液晶显示器以及oled(organiclight-emittingdiode,有机发光二极管)触摸器等。网络端口500,与处理器200相连,用于与外部各终端设备进行通信连接。该通信连接所采用的通信技术可以为有线通信技术或无线通信技术,如移动高清链接技术(mhl)、通用串行总线(usb)、高清多媒体接口(hdmi)、无线保真技术(wifi)、蓝牙通信技术、低功耗蓝牙通信技术、基于ieee802.11s的通信技术等。图5仅示出了具有组件100-500的电子设备,本领域技术人员可以理解的是,图5示出的结构并不构成对电子设备的限定,可以包括比图示更少或者更多的部件,或者组合某些部件,或者不同的部件布置。本申请还提供了一种计算机可读存储介质,该存储介质可以包括:u盘、移动硬盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。该存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现前述任一实施例公开的多控存储系统io路径管理方法。本申请可利用包括各节点状态信息的io路径状态信息标识io路径的状态变化,各层模块之间可通过上述状态信息来进行状态传递,若下层模块的任意节点出现故障,则io路径状态信息发生改变后,可上传至上层io模块,以便上层对应调整io路径,提高了多控制器存储系统的异常处理能力,提升了系统的可靠性。说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的系统而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。应当指出,对于本
技术领域
的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围内。还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1