一种io路径确定方法、装置、设备及可读存储介质

文档序号:7468 发布日期:2021-09-17 浏览:46次 英文

一种IO路径确定方法、装置、设备及可读存储介质

技术领域

本申请涉及存储

技术领域

,特别是涉及一种IO路径确定方法、装置、设备及可读存储介质。

背景技术

在存储真实的生产环境下,有盘框、后端盘归属的控制器,非后端盘归属的控制器,以及IO(Input/Output,输入/输出)请求发起的主机。主机要想对后端的磁盘进行访问,需要将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请求。由于哈希一致性算法能够在Hash输出空间发生变化时,引起最小的变动。如,增加或者移除一台存储设备时,对原有的存储设备和用户之间的映射关系产生的影响最小。且哈希一致性算法能实现随机选择的能力,因此,在选择目标控制器时,能够有效均衡各个控制器的负载。如果该路径等级为故障级,则直接确定IO路径故障。也就是说,通过给卷设置不同的路径等级,并结合哈希一致性算法来明确IO路径,可以有效均衡存储系统中各个控制器的负载。

相应地,本申请实施例还提供了与上述IO路径确定方法相对应的IO路径确定装置、设备和可读存储介质,具有上述技术效果,在此不再赘述。

附图说明

为了更清楚地说明本申请实施例或相关技术中的技术方案,下面将对实施例或相关技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本申请实施例中一种IO路径确定方法的实施流程图;

图2为本申请实施例中一种路径权重等级示意图;

图3为本申请实施例中一种IO路径示意图;

图4为本申请实施例中一种IO路径确定方法中目标控制器选取范围示意图;

图5为本申请实施例中一种IO路径确定装置的结构示意图;

图6为本申请实施例中一种电子设备的结构示意图;

图7为本申请实施例中一种电子设备的结构示意图。

具体实施方式

为了使本技术领域的人员更好地理解本申请方案,下面结合附图和具体实施方式对本申请作进一步的详细说明。显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

请参考图1,图1为本申请实施例中一种IO路径确定方法的流程图,该方法可以应用于需要对磁盘进行IO访问的主机(该主机可以具体为物理主机也可以为虚拟主机),该方法包括以下步骤:

S101、确定IO请求的目标卷,并获取目标卷的路径等级。

请参考图2,图2为本申请实施例中一种路径权重等级示意图。在本申请中,可预先为不同的卷设置不同的路径等级,如为不同的卷标记上对应的路径等级标记,或建立路径等级查找表。其中,路径等级可包括主机路径级、后端路径级和故障级。主机路径级可以与一个控制器对应,即主机路径级的卷与一个节点对应;后端路径级可以与一个或多个控制器对应,即后端路径级的卷与一个或多个节点对应;故障级即表明访问路径故障或无法访问的卷。

在主机确定IO请求的目标卷之后,可以先明确该目标卷的路径等级。具体的可以通过路径等级标记或遍历查询路径等级查找表的方式来确定目标卷的路径等级。

优选地,为了便于管理,可以针对不同路径等级设置不同的表,如此,步骤S101获取目标卷的路径等级,可包括:遍历主机路径级表、后端路径级表和故障级表,确定目标卷的路径等级。

进一步地,还可以在控制器离线或上线时,按照控制器的路径级别控制信息,对主机路径级表、后端路径级表或故障级表进行更新。如此,便可避免因控制器离线或上线而选择离线控制器或忽略某个或某些新上线的控制器。

在本实施例中,对于IO请求具体是对磁盘中数据的输入还是输出并不做限定。

S102、若路径等级为主机路径级,则向预设优选控制器发送IO请求。

在确定目标卷的路径等级为主机路径级,则可直接向预设优选控制器发送该IO请求。其中,优选控制器是各个主机设置的。例如,对于一个存储系统而言,控制器分布于ABC三个地域,对于属于A地域的主机,便可以将属于A地域的控制器设置为优选控制器,以便缩短网络访问距离。而不同的主机可以对应设置不同的优选控制器。

将IO请求发送给优选控制器,则本次的IO路径即:主机—优选控制器—目标卷。即本次IO即在该路径上进行。

S103、若路径等级为后端路径级,则利用哈希一致性算法,从控制器中选出目标控制器,并向目标控制器发送IO请求。

倘若目标卷的路径等级为后端路径级,而一般地的一个卷的后端路径往往对应若干个控制器,为了实现控制器的负载均衡,在从这若干个控制器中选出目标控制器时,可以利用哈希一致性算法,来从控制器中选出目标控制器。具体的,对于如何利用哈希一致性算法来选取出目标控制器,可以具体参照哈希一致性算法来随机选择对象的具体实现过程,在此不再一一赘述。

选出目标控制器后,将IO请求发送给目标控制器。即,本次IO的访问路径:主机—目标控制器—目标卷。即本次IO即在该路径上进行。

S104、若路径等级为故障级,则确定IO路径故障。

若确定路径等级为故障级,则可确定目标卷没有对应的访问路径,或者无法访问到该目标卷(如目标卷本身存在故障,或者目标卷所属的所有可落盘的控制器都存在离线情况等)。

在确定路径等级为故障级,此时无需再下发IO请求,而是直接明确IO路径故障,确定IO错误。

应用本申请实施例所提供的方法,确定IO请求的目标卷,并获取目标卷的路径等级;若路径等级为主机路径级,则向预设优选控制器发送IO请求;若路径等级为后端路径级,则利用哈希一致性算法,从控制器中选出目标控制器,并向目标控制器发送IO请求;若路径等级为故障级,则确定IO路径故障。

在需要发起IO请求时,首先确定IO请求的目标卷,并获取该目标卷的路径等级。如果该路径等级为主机路径级,则直接向预设的优选控制器发送IO请求即可。如果该路径等级为后端路径级,则可以利用哈希一致性算法,从控制器中选出目标控制器,然后再向目标控制器发送IO请求。由于哈希一致性算法能够在Hash输出空间发生变化时,引起最小的变动。如,增加或者移除一台存储设备时,对原有的存储设备和用户之间的映射关系产生的影响最小。且哈希一致性算法能实现随机选择的能力,因此,在选择目标控制器时,能够有效均衡各个控制器的负载。如果该路径等级为故障级,则直接确定IO路径故障。也就是说,通过给卷设置不同的路径等级,并结合哈希一致性算法来明确IO路径,可以有效均衡存储系统中各个控制器的负载。

需要说明的是,基于上述实施例,本申请实施例还提供了相应的改进方案。在优选/改进实施例中涉及与上述实施例中相同步骤或相应步骤之间可相互参考,相应的有益效果也可相互参照,在本文的优选/改进实施例中不再一一赘述。

优选地,考虑到在实际应用中,后端的磁盘有控制器归属,因而只能从部分控制器落盘。如图3所示,图3为本申请实施例中一种IO路径示意图。其中,A路径即对应主机—优选控制器—目标卷;B路径中,由于节点4不属于后端盘归属的控制器,因而即便IO请求发送到了节点4,该节点4还需将IO请求转发到节点2或节点3,再由节点2或节点3落入所属盘,即B路径可具体为:主机—节点4—节点2—目标卷。需要注意的是,在本申请中节点与控制器等同。

为了避免出现控制器转发这种情况,在本实施例中,可以在选择目标控制器中,仅从后端盘所属控制器中进行选择。具体的,请参考图4,图4为本申请实施例中一种IO路径确定方法中目标控制器选取范围示意图,上述步骤S103利用哈希一致性算法,从控制器中选出目标控制器,可具体包括:利用哈希一致性算法,从后端所属控制器中选出目标控制器。其中,图4所示的1至N控制器即为后端所属控制器。即对应确定出的IO路径即为:主机—目标控制器—目标卷。即无控制器转发至另一控制器的过程。如此,便可解决后端盘不完全共享的实际问题,省去控制器的转发操作,又有效发挥了哈希一致性算法负载均衡的能力。

优选地,考虑到在实际应用中,在一个控制器中可以设置若干个线程来处理相应的IO请求,为了实现有效的负载均衡,在步骤S103中向目标控制器发送IO请求,具体包括:

步骤一、若目标控制器包括若干个线程,则利用哈希一致性算法从若干个线程中选出目标线程;

步骤二、向目标线程发送IO请求。

也就是说,若目标控制器中有若干个线程,可以利用哈希一致性算法从这若干个线程中选出一个目标线程,并向该目标线程发送该IO请求。从而在目标控制器中,实现以线程为粒度的负载均衡,从而保障目标控制器的性能最大化。

优选地,考虑到可能会出现一些IO请求对应的数据量比较大,为了加快这类IO请求的处理效率,减少长时间占用某个控制器的性能,还可以对IO请求进行分割,从而实现并行处理若干个IO子请求,达到加速处理目的。具体的,上述步骤S103若路径等级为后端路径级,则利用哈希一致性算法,从控制器中选出目标控制器,并向目标控制器发送IO请求,包括:

步骤一、若路径等级为后端路径级且IO请求对应的数据量大于阈值,则将IO请求划分为若干IO子请求;

步骤二、利用哈希一致性算法,从各个控制器对应的若干线程中选出与IO子请求数量匹配的目标线程,并分别向各个目标线程发送对应分配的IO子请求。

为便于描述,下面将上述两个步骤结合起来进行说明。

当确定路径等级为后端路径级,并且发现IO请求对应的数据量大于阈值,则可将该IO请求划分为若干个IO子请求。其中,阈值的大小可以根据实际需求进行设置和调整,在此不再一一列举。在划分IO请求时,可以基于IO请求的数据进行分割,从而划分出若干个IO子请求。具体的,可以按照某个数据量大小,对IO请求进行均匀分割。

分割出IO请求之后,便可以利用哈希一致性算法,从各个控制器对应的若干线程中选出与IO子请求数量匹配的目标线程,然后再将这些IO子请求分配给这些目标线程,即向这些目标线程发送IO子请求。

例如,当划分出的IO子请求为5个,可选用的控制器有3个,且每一个控制器有6个线程,则利用哈希一致性算法从这18个线程中选出5个目标线程,然后将这5个IO子请求分别发送给这5个目标线程。需要注意的是,这5个目标线程可以对应属于两个控制器也可以对应属于三个控制器。

当然,对于目标卷为主机路径级时,也可以对IO请求进行划分,进而将划分的IO子请求分配给优选控制器中的若干线程进行处理。也可以采用哈希一致性算法从若干线程中选择出目标线程,继而将IO子请求分配给目标线程进行处理,以加快IO请求的处理效率。

优选地,考虑到在实际应用中,由于新增控制器、已有控制器故障离线等原因会导致控制器的数量发生变化,为了均衡数量变化后的控制器间的负载,在执行步骤S103若路径等级为后端路径级,则利用哈希一致性算法,从控制器中选出目标控制器,可以具体包括:若路径等级为后端路径级且控制器的数量变化的情况下,则利用参数调整后的哈希一致性算法,从数量变化后的控制器中选出目标控制器。具体的,可以通过调整哈希一致性算法的输出空间大小,即可实现数量变化后的控制器相互间的负载均衡。

相应于上面的方法实施例,本申请实施例还提供了一种IO路径确定装置,下文描述的IO路径确定装置与上文描述的IO路径确定方法可相互对应参照。

参见图5所示,该装置包括以下模块:

路径等级确定模块101,用于确定IO请求的目标卷,并获取目标卷的路径等级;

主机路径确定模块102,用于若路径等级为主机路径级,则向预设优选控制器发送IO请求;

后端路径确定模块103,用于若路径等级为后端路径级,则利用哈希一致性算法,从控制器中选出目标控制器,并向目标控制器发送IO请求;

故障路径确定模块104,用于若路径等级为故障级,则确定IO路径故障。

应用本申请实施例所提供的装置,确定IO请求的目标卷,并获取目标卷的路径等级;若路径等级为主机路径级,则向预设优选控制器发送IO请求;若路径等级为后端路径级,则利用哈希一致性算法,从控制器中选出目标控制器,并向目标控制器发送IO请求;若路径等级为故障级,则确定IO路径故障。

在需要发起IO请求时,首先确定IO请求的目标卷,并获取该目标卷的路径等级。如果该路径等级为主机路径级,则直接向预设的优选控制器发送IO请求即可。如果该路径等级为后端路径级,则可以利用哈希一致性算法,从控制器中选出目标控制器,然后再向目标控制器发送IO请求。由于哈希一致性算法能够在Hash输出空间发生变化时,引起最小的变动。如,增加或者移除一台存储设备时,对原有的存储设备和用户之间的映射关系产生的影响最小。且哈希一致性算法能实现随机选择的能力,因此,在选择目标控制器时,能够有效均衡各个控制器的负载。如果该路径等级为故障级,则直接确定IO路径故障。也就是说,通过给卷设置不同的路径等级,并结合哈希一致性算法来明确IO路径,可以有效均衡存储系统中各个控制器的负载。

在本申请的一种具体实施方式中,后端路径确定模块103,具体用于利用哈希一致性算法,从后端所属控制器中选出目标控制器。

在本申请的一种具体实施方式中,后端路径确定模块103,具体用于若目标控制器包括若干个线程,则利用哈希一致性算法从若干个线程中选出目标线程;向目标线程发送IO请求。

在本申请的一种具体实施方式中,后端路径确定模块103,具体用于若路径等级为后端路径级且IO请求对应的数据量大于阈值,则将IO请求划分为若干IO子请求;利用哈希一致性算法,从各个控制器对应的若干线程中选出与IO子请求数量匹配的目标线程,并分别向各个目标线程发送对应分配的IO子请求。

在本申请的一种具体实施方式中,路径等级确定模块101,具体用于遍历主机路径级表、后端路径级表和故障级表,确定目标卷的路径等级。

在本申请的一种具体实施方式中,还包括:

路径等级表更新模块,用于在控制器离线或上线时,按照控制器的路径级别控制信息,对主机路径级表、后端路径级表或故障级表进行更新。

在本申请的一种具体实施方式中,后端路径确定模块103,具体用于若路径等级为后端路径级且控制器的数量变化的情况下,则利用参数调整后的哈希一致性算法,从数量变化后的控制器中选出目标控制器。

相应于上面的方法实施例,本申请实施例还提供了一种电子设备,下文描述的一种电子设备与上文描述的一种IO路径确定方法可相互对应参照。

参见图6所示,该电子设备包括:

存储器332,用于存储计算机程序;

处理器322,用于执行计算机程序时实现上述方法实施例的IO路径确定方法的步骤。

具体的,请参考图7,图7为本实施例提供的一种电子设备的具体结构示意图,该电子设备可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(central processing units,CPU)322(例如,一个或一个以上处理器)和存储器332,存储器332存储有一个或一个以上的计算机应用程序342或数据344。其中,存储器332可以是短暂存储或持久存储。存储在存储器332的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对数据处理设备中的一系列指令操作。更进一步地,中央处理器322可以设置为与存储器332通信,在电子设备301上执行存储器332中的一系列指令操作。

电子设备301还可以包括一个或一个以上电源326,一个或一个以上有线或无线网络接口350,一个或一个以上输入输出接口358,和/或,一个或一个以上操作系统341。

上文所描述的IO路径确定方法中的步骤可以由电子设备的结构实现。

相应于上面的方法实施例,本申请实施例还提供了一种可读存储介质,下文描述的一种可读存储介质与上文描述的一种IO路径确定方法可相互对应参照。

一种可读存储介质,可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现上述方法实施例的IO路径确定方法的步骤。

该可读存储介质具体可以为U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可存储程序代码的可读存储介质。

本领域技术人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。本领域技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。

完整详细技术资料下载
上一篇:石墨接头机器人自动装卡簧、装栓机
下一篇:一种基于Mousetrap的同步异步转换接口及装置

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!