命令处理方法及装置与流程

文档序号:21817297发布日期:2020-08-11 21:29阅读:129来源:国知局
命令处理方法及装置与流程

本申请涉及存储技术领域,尤其涉及一种命令处理方法及装置。



背景技术:

集群存储是指由若干通用存储设备组成的存储集群,可提供比单个存储设备更强的存储性能、可靠性以及利用率。集群存储包括前端网络、存储节点以及后端网络。服务器可通过前端网络访问集群中的存储设备,实现数据的存储或读取。各存储设备之间可通过后端网络进行信息交互,实现管理、数据同步以及远程访问。

存储设备之间的信息交互通过命令实现,所涉及命令主要包括管理命令、写命令以及读命令。在某些应用场景下,各命令之间存在关联关系,比如,某一管理命令需要依赖某一读命令的处理结果进行管理,则发送端首先发送读命令,然后等待接收端返回该读命令的处理结果,再发送管理命令。即,通过串行方式保证存在关联关系的各命令的处理顺序。该处理方式导致后端网络资源得不到充分利用,存储设备的处理性能得不到充分发挥,大大降低了集群的运作效率。



技术实现要素:

有鉴于此,本申请提出一种命令处理方法及装置,用以提升后端网络资源的利用率,充分发挥存储设备的处理性能,提升整个集群的运作效率。

为实现上述申请目的,本申请提供了如下技术方案:

第一方面,本申请提供一种命令处理方法,应用于集群存储包括的第一存储节点,所述集群存储还包括第二存储节点,所述方法包括:

接收所述第二存储节点并发发送的属于同一关联组的至少两个命令,所述属于同一关联组的至少两个命令具有关联关系,所述命令包括处理序号,所述处理序号用于表示命令在所属关联组中的处理顺序;

根据各命令包括的处理序号,按照处理顺序依次处理各命令;

向所述第二存储节点返回所述至少两个命令的处理结果。

可选的,所述命令包括所属关联组的关联标识,所述命令还包括待处理lun的lun标识,所述根据各命令包括的处理序号,按照处理顺序依次处理各命令,包括:

针对所述至少两个命令中的每一个命令执行如下处理:

根据当前待处理的第一命令包括的lun标识,从本地记录的各lun对应的命令链表中,查找与所述第一命令包括的lun标识对应的第一命令链表,所述命令链表记录已接收到的用于处理对应lun的命令;

根据所述第一命令包括的处理序号,从所述第一命令链表中,查找第二命令,所述第二命令为关联标识与所述第一命令包括的关联标识相同,且处理序号小于所述第一命令包括的处理序号的命令;

在确定查找到所属关联组中的所有第二命令,且各第二命令均已处理完成时,处理所述第一命令。

可选的,所述方法还包括:

在确定未查找到所属关联组中的所有第二命令时,将所述第一命令添加到所述第一命令链表中。

可选的,所述命令还包括所属关联组中命令的总数量,所述处理所述第一命令之后,所述方法还包括:

在根据所述第一命令包括的命令总数量以及所述第一命令包括的处理序号,确定所述第一命令不为所属关联组的最后一个命令时,将所述第一命令添加到所述第一命令链表中;

根据所述第一命令包括的处理序号,从所述第一命令链表中,查找并处理关联标识与所述第一命令包括的关联标识相同,且处理序号相对于所述第一命令包括的处理序号顺序递增的各第三命令;

所述向所述第二存储节点返回所述至少两个命令的处理结果,包括:

在确定最后一个处理的第三命令为所属关联组的最后一个命令时,向所述第二存储节点返回所述至少两个命令的处理结果。

可选的,所述将所述第一命令添加到所述第一命令链表中之后,所述方法还包括:

设置并启动所述第一命令的定时器;

在所述定时器超时时,向所述第二存储节点返回所述第一命令的处理结果。

第二方面,本申请提供一种命令处理装置,应用于集群存储包括的第一存储节点,所述集群存储还包括第二存储节点,所述装置包括:

接收单元,用于接收所述第二存储节点并发发送的属于同一关联组的至少两个命令,所述属于同一关联组的至少两个命令具有关联关系,所述命令包括处理序号,所述处理序号用于表示命令在所属关联组中的处理顺序;

处理单元,用于根据各命令包括的处理序号,按照处理顺序依次处理各命令;

返回单元,用于向所述第二存储节点返回所述至少两个命令的处理结果。

可选的,所述命令包括所属关联组的关联标识,所述命令还包括待处理lun的lun标识,所述处理单元根据各命令包括的处理序号,按照处理顺序依次处理各命令,包括:

针对所述至少两个命令中的每一个命令执行如下处理:

根据当前待处理的第一命令包括的lun标识,从本地记录的各lun对应的命令链表中,查找与所述第一命令包括的lun标识对应的第一命令链表,所述命令链表记录已接收到的用于处理对应lun的命令;

根据所述第一命令包括的处理序号,从所述第一命令链表中,查找第二命令,所述第二命令为关联标识与所述第一命令包括的关联标识相同,且处理序号小于所述第一命令包括的处理序号的命令;

在确定查找到所属关联组中的所有第二命令,且各第二命令均已处理完成时,处理所述第一命令。

可选的,所述处理单元,还用于在确定未查找到所属关联组中的所有第二命令时,将所述第一命令添加到所述第一命令链表中。

可选的,所述命令还包括所属关联组中命令的总数量;所述处理单元处理所述第一命令之后,还用于:

在根据所述第一命令包括的命令总数量以及所述第一命令包括的处理序号,确定所述第一命令不为所属关联组的最后一个命令时,将所述第一命令添加到所述第一命令链表中;

根据所述第一命令包括的处理序号,从所述第一命令链表中,查找并处理关联标识与所述第一命令包括的关联标识相同,且处理序号相对于所述第一命令包括的处理序号顺序递增的各第三命令;

所述返回单元向所述第二存储节点返回所述至少两个命令的处理结果,包括:

在确定最后一个处理的第三命令为所属关联组的最后一个命令时,向所述第二存储节点返回所述至少两个命令的处理结果。

可选的,所述处理单元将所述第一命令添加到所述第一命令链表中之后,还用于设置并启动所述第一命令的定时器;

所述返回单元,还用于在所述定时器超时时,向所述第二存储节点返回所述第一命令的处理结果。

由以上描述可以看出,本申请中,集群存储中各存储节点通过后端网络收发命令,其中,发送端并发发送具有关联关系的多个命令,接收端根据各命令包括的处理序号,顺序处理具有关联关系的多个命令。由于采用并发发送方式,因此,可有效提升后端网络资源的利用率;由于接收端可根据各命令包括的处理序号,顺序处理接收到的多个命令,而无需在处理完一个命令后,等待发送端发送下一命令,因此,可有效提升存储节点的处理性能。综上,本申请可有效提升整个集群存储的运作效率。

附图说明

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

图1a是现有管理命令的结构示意图;

图1b是现有读命令的结构示意图;

图1c是现有写命令的结构示意图;

图2是本申请实施例示出的一种命令处理方法流程图;

图3a本申请实施例示出的管理命令的结构示意图;

图3b本申请实施例示出的读命令的结构示意图;

图3c本申请实施例示出的写命令的结构示意图;

图4是本申请实施例示出的一种步骤202的实现流程;

图5是本申请实施例示出的各lun的命令链表的示意图;

图6是本申请实施例示出的一种命令处理流程;

图7是本申请实施例示出的一种定时处理流程;

图8a-图8d是本申请实施例示出的命令链表变化示意图;

图9是本申请实施例示出的一种命令处理装置的结构示意图。

具体实施方式

这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。

在本申请实施例使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请实施例。在本申请实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。

应当理解,尽管在本申请实施例可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请实施例范围的情况下,协商信息也可以被称为第二信息,类似地,第二信息也可以被称为协商信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。

集群存储指由若干通用存储设备(亦称为存储节点)组成的存储集群,提供比单个存储设备更强的存储性能、可靠性以及利用率。

集群存储包括前端网络、存储节点以及后端网络。服务器通过前端网络访问集群中的存储节点,实现数据的存储或读取。存储节点之间通过后端网络进行信息交互,实现管理、数据同步以及远程访问。

其中,该后端网络可以为以太网或光纤网络。存储节点之间进行信息交互的命令通过以太网或光纤网络承载。

所涉及命令主要包括管理命令、读命令以及写命令。其中,管理命令用于实现对设备的管理,比如,查询或设置设备的运行状态等;读命令用于从指定逻辑单元(英文:logicalunitnumber,缩写:lun)读取数据;写命令用于向指定lun写入数据。

参见图1a,为现有管理命令的结构示意图。该管理命令包括命令字、lun标识、数据长度以及数据。其中,命令字用于标识不同的管理命令;lun标识用于标识管理命令所针对的lun;数据长度为管理命令所带数据的长度;数据为管理命令所带具体数据。

参见图1b,为现有读命令的结构示意图。该读命令包括命令字、lun标识、逻辑块地址(英文:logicalblockaddress,缩写:lba)以及数据长度。其中,命令字用于标识读命令;lun标识用于标识所要读取的lun;lba为从lun中读取的起始地址;数据长度为读取数据的长度。

参见图1c,为现有写命令的结构示意图。该写命令包括命令字、lun标识、lba、数据长度以及数据。其中,命令字用于标识写命令;lun标识用于标识所要写入的lun;lba为在lun中写入的起始地址;数据长度为写入数据的长度;数据为具体写入的数据。

在一些应用场景中,存在多个命令相互关联的情况,比如,管理命令需要依赖读命令读取的数据进行管理,则发送端为了保证命令的处理顺序,首先发送读命令,然后等待接收端返回读命令的处理结果,再发送管理命令,接收端接收到管理命令后,根据读命令读取的数据进行管理。

可以看出,上述处理过程采用的是串行处理方式,该串行处理方式导致后端网络资源得不到充分利用,存储节点的处理性能得不到充分发挥,影响整个集群存储的运行效率。

针对上述问题,本申请实施例提供一种命令处理方法。该方法中,发送端并发发送具有关联关系的多个命令,接收端根据各命令包括的处理序号,顺序处理具有关联关系的各个命令,从而提升后端网络资源的利用率,提升存储节点的处理性能,提升整个集群存储的运行效率。

为了使本申请实施例的目的、技术方案和优点更加清楚,下面结合附图和具体实施例对本申请实施例执行详细描述:

参见图2,为本申请实施例提供的命令处理方法的流程图。该流程应用于集群存储包括的第一存储节点。

这里,第一存储节点可为集群存储中的任一存储节点。之所以称为第一存储节点,只是为便于区分而进行的命名,并非用于限定。

如图2所示,该流程可包括以下步骤:

步骤201,接收第二存储节点并发发送的属于同一关联组的至少两个命令。

本申请实施例中,具有关联关系的至少两个命令属于同一关联组。换言之,属于同一关联组的至少两个命令具有关联关系。

第二存储节点将具有关联关系(属于同一关联组)的至少两个命令并发发送给第一存储节点。可以理解的是,之所以称为第二存储节点,只是为便于区分而进行的命名,并非用于限定。

需要补充说明的是,第二存储节点在发送具有关联关系的至少两个命令之前,根据各命令之间的关联关系,为每一个命令分配对应的处理序号。该处理序号用于表示对应命令在所属关联组中的处理顺序。

比如,管理命令1与读命令1具有关联关系,管理命令1需要依赖读命令1读取的数据进行管理,则第二存储节点可为读命令1分配处理序号1,表明该读命令1需要被第1个处理;为管理命令1分配处理序号2,表明该管理命令1需要被第2个处理。

第二存储节点将为各命令分配的处理序号添加到对应命令中。参见图3a-图3c,分别为本申请实施例示出的管理命令、读命令以及写命令的结构示意图。

可以看出,相比于图1a-图1c,各命令增加了关联标识、处理序号以及命令总数量。其中,关联标识用于表示命令所属关联组;处理序号用于表示命令在所属关联组中的处理顺序;命令总数量用于表示命令所属关联组中命令的总数量。

步骤202,根据各命令包括的处理序号,按照处理顺序依次处理各命令。

第一存储节点通过步骤201接收到具有关联关系的至少两个命令后,获取各命令包括的处理序号,根据各处理序号所表示的处理顺序处理对应命令。

比如,管理命令1与读命令1相关联,读命令1包括的处理序号为1,管理命令1包括的处理序号为2,则第一存储节点先处理读命令1,然后,再处理管理命令1。

步骤203,向第二存储节点返回所述至少两个命令的处理结果。

在通过步骤202完成对同一关联组中所有命令的处理后,第一存储节点向第二存储节点返回该关联组中各命令的处理结果。

至此,完成图2所示流程。

通过图2所示流程可以看出,本申请实施例中,发送端(第二存储节点)通过并发方式发送具有关联关系的多个命令,可有效提升后端网络资源的利用率;同时,接收端根据各命令包括的处理序号,顺序处理具有关联关系的多个命令,无需处理完一个命令后,等待发送端发送下一命令,因此,可有效提升存储节点的处理性能。基于以上两点,本申请可有效提升整个集群存储的运作效率。

下面对步骤202中第一存储节点根据各命令包括的处理序号依次处理各命令的过程进行描述。参见图4,为本申请实施例示出的一种步骤202的实现流程。

本申请实施例中,第一存储节点针对接收到的每一个命令执行图4所示流程,该流程可包括以下步骤:

步骤401,根据当前待处理的第一命令包括的lun标识,从本地记录的各lun对应的命令链表中,查找与第一命令包括的lun标识对应的第一命令链表。

这里,将当前待处理的命令称为第一命令。可以理解的是,之所以称为第一命令只是为便于区分而进行的命名,并非用于限定。

第一存储节点维护有各lun对应的命令链表。命令链表用于记录已接收到的用于处理对应lun的命令。参见图5,为本申请实施例示出的各lun对应命令链表的示意图。比如,lun2的命令链表包括读命令1、管理命令1等,其中,括号内的字符表示该命令所属关联组的关联标识。

第一存储节点获取第一命令包括的lun标识,根据该lun标识从本地维护的各命令链表中查找与该lun标识对应的命令链表,记为第一命令链表。可以理解的是,之所以称为第一命令链表只是为便于区分而进行的命名,并非用于限定。

步骤402,根据第一命令包括的处理序号,从第一命令链表中,查找第二命令。

第一存储节点获取第一命令包括的处理序号,根据该处理序号从第一命令链表中查找第二命令。这里,第二命令指关联标识与第一命令包括的关联标识相同,且处理序号小于第一命令包括的处理序号的命令。即,该第二命令为与第一命令属于同一关联组,且在第一命令之前应该被处理的命令。可以理解的是,之所以称为第二命令,只是为便于区分而进行的命名,并非用于限定。

步骤403,在确定查找到所属关联组中的所有第二命令,且各第二命令均已处理完成时,处理第一命令。

即,在确定第一命令之前应该被处理的第二命令均已处理完成时,处理第一命令。

比如,读命令1、管理命令1、写命令1相关联(具有相同的关联标识),读命令1的处理序号为1,管理命令1的处理序号为2,写命令1的处理序号为3。读命令1和管理命令1已位于对应命令链表中,当前待处理的命令为写命令1,则第一存储节点从对应命令链表中查找关联标识与写命令1的关联标识相同,且处理序号小于写命令1的处理序号的命令,即,查找到读命令1和管理命令1。

根据读命令1和管理命令1的处理序号,第一存储节点可确定该读命令1和管理命令1为在写命令1之前应该被处理的所有命令,则第一存储节点进一步确定读命令1和管理命令1是否已处理完成。在确定这两个命令均已处理完成后,处理写命令1。

此外,需要说明的是,在确定第一命令包括的处理序号为最小处理序号时,即,第一命令为所属关联组中的首个命令时,由于不存在处理序号小于第一命令包括的处理序号的命令(第二命令),因此,无需执行步骤402查找第二命令,可直接处理该第一命令。比如,通常首个命令的处理序号为1,则第一存储节点接收处理序号为1的命令时,直接处理该命令。

至此,完成图4所示流程。

通过图4所示流程可以看出,本申请实施例通过链表来维护具有关联关系的各命令的处理顺序,即,保证各命令按照处理顺序执行。

作为一个实施例,当通过步骤402未查找到所属关联组中的所有第二命令时,将第一命令添加到第一命令链表中。

即,当存在在第一命令之前应该被处理而未处理(未接收到)的第二命令时,将第一命令添加到第一命令链表中,结束此次处理。

仍以读命令1、管理命令1、写命令1相关联为例,读命令1的处理序号为1,管理命令1的处理序号为2,写命令1的处理序号为3。当前只有读命令1位于对应命令链表中,待处理命令为写命令1,则第一存储节点从对应命令链表中查找关联标识与写命令1的关联标识相同,且处理序号小于写命令1的处理序号的命令,即,查找到读命令1。

根据读命令1的处理序号和写命令1的处理序号,第一存储节点确定尚未接收到在写命令1之前应该被处理的处理序号为2的命令,因此,无法处理写命令1,则第一存储节点将写命令1添加到命令链表中,结束此次处理。在后续接收到并处理完成处理序号为2的命令后,再处理写命令1。

作为一个实施例,在通过步骤403处理完第一命令后,第一存储节点还可执行图6所示命令处理流程。

如图6所示,该流程可包括如下步骤:

步骤601,在根据第一命令包括的命令总数量以及第一命令包括的处理序号,确定第一命令不为所属关联组的最后一个命令时,将第一命令添加到第一命令链表中。

这里,需要说明的是,当根据第一命令包括的命令总数量以及第一命令包括的处理序号,确定第一命令为所属关联组中的最后一个命令时,说明该关联组中的所有命令均已处理完成,则执行步骤203向第二存储节点返回该关联组中所有命令的处理结果。

举例说明,第一命令包括的命令总数量为4,即,第一命令所属关联组中命令的总数量为4;第一命令包括的处理序号为4,则说明第一命令为所属关联组中的最后一个命令,且该命令已通过前述步骤403处理完成。由于属于同一关联组的各命令按照关联顺序处理,因此,当最后一个命令处理完成时,说明所属关联组中的所有命令均已处理完成,则第一存储节点向第二存储节点返回该关联组中所有命令的处理结果。

当根据第一命令包括的命令总数量以及第一命令包括的处理序号,确定第一命令不为所属关联组中的最后一个命令时,说明该关联组中还存在需要依赖第一命令处理的后续命令,则第一存储节点将第一命令添加到第一命令链表中。

步骤602,根据第一命令包括的处理序号,从第一命令链表中,依次查找并处理处理序号顺序递增的各第三命令。

第一存储节点通过步骤601将第一命令添加到第一命令链表中后,从第一命令链表中,查找并处理关联标识与第一命令包括的关联标识相同,且处理序号相对于第一命令包括的处理序号顺序递增的各第三命令。即,根据依赖关系处理后续命令。

这里,第三命令只是为便于区分而进行的命名,并未用于限定。

举例说明,第一命令包括的处理序号为2,第一命令包括的命令总数量为5,则第一存储节点在将第一命令添加到第一命令链表后,从第一命令链表中,依次查找并处理关联标识与第一命令包括的关联标识相同、且处理序号依次为3、4、5的第三命令。

步骤603,在确定最后一个处理的第三命令为所属关联组的最后一个命令时,向第二存储节点返回所属关联组中各命令的处理结果。

这里,需要说明的是,在确定最后一个处理的第三命令为所属关联组中的最后一个命令时,说明该关联组中的所有命令均已处理完成,则第一存储节点向第二存储节点返回该关联组中各命令的处理结果。

仍以第一命令包括的处理序号为2,第一命令包括的命令总数量为5为例,若通过步骤602分别查找到属于同一关联组的处理序号为3、4、5的第三命令,且依次处理完成,则由于最后一个处理的第三命令(处理序号为5)为所属关联组的最后一个命令(处理序号为5),因此,第一存储节点向第二存储节点返回该第一命令所属关联组中各命令的处理结果。

在确定最后一个处理的第三命令不为所属关联组中的最后一个命令时,说明该关联组中还存在未接收到的命令,则结束此次处理。

仍以第一命令包括的处理序号为2、第一命令包括的命令总数量为5为例,若通过步骤602仅查找到属于同一关联组的处理序号为3、4的第三命令,则依次处理处理序号为3、4的第三命令。由于处理的最后一个第三命令(处理序号为4)不是所属关联组中的最后一个命令(处理序号为5),也就是说,该关联组中的命令还未处理完,则第一存储节点结束此次处理。后续接收并处理完属于同一关联组的处理序号为5的命令时,再向第二存储节点返回所属关联组中各命令的处理结果。

需要补充说明的是,在处理完关联组中的所有命令后,可删除命令链表中该关联组的命令,以解决节点资源。

至此,完成图6所示流程。

通过图6所示流程可依次处理应在第一命令之后执行的各命令。

作为一个实施例,在将第一命令添加到第一命令链表后,第一存储节点还可执行图7所示定时处理流程。

如图7所示,该流程可包括以下步骤:

步骤701,设置并启动第一命令的定时器。

本申请实施例中,属于同一关联组的各命令可能由于异常因素导致部分命令无法正常接收或处理,若一直等待,则会导致发送端(第二存储节点)因接收不到接收端(第一存储节点)的反馈而出现异常。

为此,本申请实施例针对每一个添加到命令链表中的命令设置定时器。

步骤702,在定时器超时时,向第二存储节点返回该第一命令的处理结果,比如,处理异常、未处理或者处理的结果数据。

即,在定时器超时时,返回当前的处理结果,从而避免第二存储节点因长时间等待而出现异常。

至此,完成图7所示流程。

通过图7所示流程可保证发送端及时接收到反馈,避免出现异常。

此外,第一存储节点还可作为发送端向其它存储节点(第二存储节点)发送具有关联关系的多个命令。在发送之前,第一存储节点为具有关联关系的多个命令分配同一关联标识,并按照各命令的关联关系,为各命令分配对应的处理序号,然后将分配的关联标识、处理序号以及相互关联的命令的数量添加到对应命令中,发送给第二存储节点。第二存储节点根据各命令包括的处理序号顺序处理,具体参见前述第一存储节点作为接收端的处理过程,在此不再赘述。

现以一具体实施例介绍本申请的命令处理过程。

以存储节点1向存储节点2发送具有关联关系的多个命令为例,该多个命令包括读命令11、管理命令12、写命令13、读命令14、管理命令15,各命令包括的lun标识为lun1。存储节点1为各命令分配相同的关联标识,记为a10;并分别为读命令11、管理命令12、写命令13、读命令14、管理命令15分配处理序号依次为1、2、3、4、5。存储节点1将为各命令分配的关联标识、处理序号以及相关联的多个命令的数量(5)添加到对应命令中,并通过后端网络并发发送给存储节点2。

存储节点2首先接收到读命令11,该读命令11的处理序号为1,为所属关联组的首个命令,存储节点2直接处理该读命令11。存储节点2根据读命令11包括的lun1,从图5所示命令链表中,查找lun1对应的命令链表,记为链表1。存储节点2将读命令11添加到链表1中,如图8a所示。存储节点2根据读命令11包括的关联标识a10,从链表1中查找关联标识相同且处理序号顺序递增的后续命令。由于链表1中不存在关联标识为a10的后续命令,因此,结束此次处理。

存储节点2接收到写命令13,根据写命令13包括的lun1,从图8a中,查找与lun1对应的链表1。再根据写命令13包括的关联标识a10和处理序号3,从链表1中,查找到关联标识为a10、处理序号小于3的读命令11。由于未查找到处理序号为2的管理命令12,因此,无法处理需要依赖管理命令12的写命令13。存储节点2将写命令13添加到链表1中,如图8b所示。

存储节点2接收到读命令14,根据读命令14包括的lun1,从图8b中,查找与lun1对应的链表1。再根据读命令14包括的关联标识a10和处理序号4,从链表1中,查找到关联标识为a10、处理序号小于4的读命令11、写命令13。由于未查找到处理序号为2的管理命令12,则无法处理读命令14,存储节点2将读命令14添加到链表1中,如图8c所示。

存储节点2接收到管理命令12,根据管理命令12包括的lun1,从图8c中,查找与lun1对应的链表1。再根据管理命令12包括的关联标识a10和处理序号2,从链表1中,查找到关联标识为a10、处理序号小于2的读命令11。存储节点2根据读命令11的处理结果处理管理命令12。存储节点2根据管理命令12包括的命令数量5以及处理序号2,确定管理命令12不是所属关联组中的最后一个命令,则存储节点2将管理命令12添加到链表1中,如图8d所示。存储节点2根据管理命令12包括的关联标识a10和处理序号2,从链表1中,查找关联标识为a10、处理序号在2的基础上顺序递增的写命令13和读命令14,则存储节点2依次处理写命令13和读命令14。存储节点2根据读命令14包括的命令数量5以及处理序号4,确定该读命令14不是所属关联组中的最后一个命令,因此,结束此次处理。

存储节点2接收到管理命令15,根据管理命令15包括的lun1,从图8d中,查找与lun1对应的链表1。再根据管理命令15包括的关联标识a10和处理序号5,从链表1中,查找到关联标识为a10、处理序号小于5的读命令11、管理命令12、写命令13、读命令14。存储节点2确定查找到所属关联组中的所有命令,且各命令均已处理完成后,根据读命令14的处理结果处理管理命令15。存储节点2根据管理命令15包括的命令数量5以及处理序号5,确定管理命令15为所属关联组中的最后一个命令,因此,确定该关联组中的所有命令均已处理完成,存储节点2向存储节点1返回该关联组各命令的处理结果。

以上对本申请实施例提供的方法进行了描述,下面对本申请实施例提供的装置进行描述:

参见图9,为本申请实施例提供的装置的结构示意图。该装置应用于集群存储中的第一存储节点,该装置包括:接收单元901、处理单元902以及返回单元903,其中:

接收单元901,用于接收所述第二存储节点并发发送的属于同一关联组的至少两个命令,所述属于同一关联组的至少两个命令具有关联关系,所述命令包括处理序号,所述处理序号用于表示命令在所属关联组中的处理顺序;

处理单元902,用于根据各命令包括的处理序号,按照处理顺序依次处理各命令;

返回单元903,用于向所述第二存储节点返回所述至少两个命令的处理结果。

作为一个实施例,所述命令包括所属关联组的关联标识,所述命令还包括待处理lun的lun标识,所述处理单元902根据各命令包括的处理序号,按照处理顺序依次处理各命令,包括:

针对所述至少两个命令中的每一个命令执行如下处理:

根据当前待处理的第一命令包括的lun标识,从本地记录的各lun对应的命令链表中,查找与所述第一命令包括的lun标识对应的第一命令链表,所述命令链表记录已接收到的用于处理对应lun的命令;

根据所述第一命令包括的处理序号,从所述第一命令链表中,查找第二命令,所述第二命令为关联标识与所述第一命令包括的关联标识相同,且处理序号小于所述第一命令包括的处理序号的命令;

在确定查找到所属关联组中的所有第二命令,且各第二命令均已处理完成时,处理所述第一命令。

作为一个实施例,所述处理单元902,还用于在确定未查找到所属关联组中的所有第二命令时,将所述第一命令添加到所述第一命令链表中。

作为一个实施例,所述命令还包括所属关联组中命令的总数量;所述处理单元处理902所述第一命令之后,还用于:

在根据所述第一命令包括的命令总数量以及所述第一命令包括的处理序号,确定所述第一命令不为所属关联组的最后一个命令时,将所述第一命令添加到所述第一命令链表中;

根据所述第一命令包括的处理序号,从所述第一命令链表中,查找并处理关联标识与所述第一命令包括的关联标识相同,且处理序号相对于所述第一命令包括的处理序号顺序递增的各第三命令;

在确定最后一个处理的第三命令为所属关联组的最后一个命令时,向所述第二存储节点返回所属关联组中各命令的处理结果。

作为一个实施例,所述处理单元902将所述第一命令添加到所述第一命令链表中之后,还用于设置并启动所述第一命令的定时器;

所述返回单元903,还用于在所述定时器超时时,向所述第二存储节点返回所述第一命令的处理结果。

由以上描述可以看出,本申请中,集群存储中各存储节点通过后端网络收发命令,其中,发送端并发发送具有关联关系的多个命令,接收端根据各命令包括的处理序号,顺序处理具有关联关系的多个命令。由于采用并发发送方式,因此,可有效提升后端网络资源的利用率;由于接收端可根据各命令包括的处理序号,顺序处理接收到的多个命令,而无需在处理完一个命令后,等待发送端发送下一命令,因此,可有效提升存储节点的处理性能。综上,本申请可有效提升整个集群存储的运作效率。

以上所述仅为本申请实施例的较佳实施例而已,并不用以限制本申请,凡在本申请实施例的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1