CN111522510B - 命令处理方法及装置 - Google Patents
命令处理方法及装置 Download PDFInfo
- Publication number
- CN111522510B CN111522510B CN202010321658.8A CN202010321658A CN111522510B CN 111522510 B CN111522510 B CN 111522510B CN 202010321658 A CN202010321658 A CN 202010321658A CN 111522510 B CN111522510 B CN 111522510B
- Authority
- CN
- China
- Prior art keywords
- command
- sub
- combined
- commands
- processing
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
- G06F3/0607—Improving or facilitating administration, e.g. storage management by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer And Data Communications (AREA)
Abstract
本申请提供一种命令处理方法及装置,应用于集群存储包括的存储节点。集群存储中各存储节点通过后端网络收发命令,其中,发送端将原本并发发送的多个命令集成在一个命令中发送给接收端,可降低对网络带宽的消耗,使在有限带宽内可以传输更多的命令;而接收端通过一个命令拆分出多个命令进行处理,可充分发挥存储节点的处理性能。因此,本申请可有效降低网络带宽对存储节点处理性能的影响。
Description
技术领域
本申请涉及存储技术领域,尤其涉及一种命令处理方法及装置。
背景技术
集群存储指由若干通用存储设备组成的存储集群,提供比单个存储设备更强的存储性能、可靠性以及利用率。
集群存储包括前端网络、存储节点以及后端网络。服务器通过前端网络访问集群中的存储设备,实现数据的存储或读取。存储设备之间通过后端网络进行信息交互,实现管理、数据同步以及远程访问。
存储设备之间的信息交互通过命令实现,且通常采用并发方式发送。但由于后端网络带宽的限制,往往无法充分发挥存储设备的处理性能。
发明内容
有鉴于此,本申请提出一种命令处理方法及装置,用以降低后端网络带宽对存储设备处理性能的影响。
为实现上述申请目的,本申请提供了如下技术方案:
第一方面,本申请提供一种命令处理方法,应用于集群存储包括的第一存储节点,所述集群存储还包括第二存储节点,所述方法包括:
接收所述第二存储节点发送的组合命令,所述组合命令包括至少两个子命令的命令信息;
根据预设拆分规则以及所述组合命令包括的至少两个子命令的命令信息,将所述组合命令拆分成所述至少两个子命令;
分别处理各子命令;
在确定所述各子命令处理完成后,向所述第二存储节点返回所述组合命令的处理结果。
可选的,所述组合命令包括组合命令字,所述根据预设拆分规则以及所述组合命令包括的至少两个子命令的命令信息,将所述组合命令拆分成所述至少两个子命令,包括:
根据所述组合命令字,确定各子命令的命令类型以及各子命令的命令信息在所述组合命令中的排列顺序;
根据所述各子命令的命令类型以及排列顺序,从所述组合命令中,获取各子命令的命令信息;
根据所述各子命令的命令信息,生成所述各子命令。
可选的,所述组合命令还包括待处理LUN的LUN标识以及所述组合命令的组合标识,所述子命令包括所属组合命令的LUN标识以及组合标识,所述确定所述各子命令处理完成,包括:
在确定所述至少两个子命令中的第一子命令处理完成后,根据所述第一子命令包括的LUN标识,从本地记录的各LUN的命令链表中,查找与所述第一子命令包括的LUN标识对应的第一命令链表,所述命令链表用于记录已处理完成的子命令;
根据所述第一子命令包括的组合标识,从所述第一命令链表中,查找组合标识与所述第一子命令包括的组合标识相同的第二子命令;
统计所述第一子命令与查找到的第二子命令的总数量;
当统计的子命令的总数量达到所述至少两个子命令的子命令数量时,确定所述各子命令处理完成。
可选的,所述方法还包括:
当统计的子命令的总数量未达到所述至少两个子命令的子命令数量时,将所述第一子命令添加到所述第一命令链表中。
可选的,所述方法还包括:
在接收到所述组合命令时,设置并启动所述组合命令对应的定时器;
在所述定时器超时时,向所述第二存储节点返回所述组合命令的处理结果。
第二方面,本申请提供一种命令处理装置,应用于集群存储包括的第一存储节点,所述集群存储还包括第二存储节点,所述装置包括:
接收单元,用于接收所述第二存储节点发送的组合命令,所述组合命令包括至少两个子命令的命令信息;
拆分单元,用于根据预设拆分规则以及所述组合命令包括的至少两个子命令的命令信息,将所述组合命令拆分成所述至少两个子命令;
处理单元,用于分别处理各子命令;
返回单元,用于在确定所述各子命令处理完成后,向所述第二存储节点返回所述组合命令的处理结果。
可选的,所述组合命令包括组合命令字,所述拆分单元根据预设拆分规则以及所述组合命令包括的至少两个子命令的命令信息,将所述组合命令拆分成所述至少两个子命令,包括:
根据所述组合命令字,确定各子命令的命令类型以及各子命令的命令信息在所述组合命令中的排列顺序;
根据所述各子命令的命令类型以及排列顺序,从所述组合命令中,获取各子命令的命令信息;
根据所述各子命令的命令信息,生成所述各子命令。
可选的,所述组合命令还包括待处理LUN的LUN标识以及所述组合命令的组合标识,所述子命令包括所属组合命令的LUN标识以及组合标识,所述返回单元确定所述各子命令处理完成,包括:
在确定所述至少两个子命令中的第一子命令处理完成后,根据所述第一子命令包括的LUN标识,从本地记录的各LUN的命令链表中,查找与所述第一子命令包括的LUN标识对应的第一命令链表,所述命令链表用于记录已处理完成的子命令;
根据所述第一子命令包括的组合标识,从所述第一命令链表中,查找组合标识与所述第一子命令包括的组合标识相同的第二子命令;
统计所述第一子命令与查找到的第二子命令的总数量;
当统计的子命令的总数量达到所述至少两个子命令的子命令数量时,确定所述各子命令处理完成。
可选的,所述装置还包括:
添加单元,用于当统计的子命令的总数量未达到所述至少两个子命令的子命令数量时,将所述第一子命令添加到所述第一命令链表中。
可选的,所述装置还包括:
定时单元,用于在接收到所述组合命令时,设置并启动所述组合命令对应的定时器;
所述返回单元,还用于在所述定时器超时时,向所述第二存储节点返回所述组合命令的处理结果。
由以上描述可以看出,本申请中,发送端将原本并发发送的多个命令集成在一个命令中发送给接收端,可降低对网络带宽的消耗,使在有限带宽内可以传输更多的命令;而接收端通过一个命令拆分出多个命令进行处理,可充分发挥存储节点的处理性能。因此,本申请可有效降低网络带宽对存储节点处理性能的影响。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1A是现有管理命令的结构示意图;
图1B是现有读命令的结构示意图;
图1C是现有写命令的结构示意图;
图2是本申请实施例示出的一种命令处理方法流程图;
图3是本申请实施例示出的一种步骤202的实现流程;
图4是本申请实施例示出的一种组合命令的结构示意图;
图5A是本申请实施例示出的从组合命令中拆分出的管理命令的结构示意图;
图5B是本申请实施例示出的从组合命令中拆分出的读命令的结构示意图;
图5C是本申请实施例示出的从组合命令中拆分出的写命令的结构示意图;
图6是本申请实施例示出的确定各子命令处理完成的实现流程;
图7是本申请实施例示出的各LUN的命令链表的示意图;
图8是本申请实施例示出的一种定时处理流程;
图9A是本申请实施例示出的一组合命令的结构示意图;
图9B是本申请实施例示出的从图9A所示组合命令拆分出的读命令的结构示意图;
图9C是本申请实施例示出的从图9A所示组合命令拆分出的写命令的结构示意图;
图10是本申请实施例示出的一LUN命令链表的示意图;
图11是本申请实施例示出的一种命令处理装置的结构示意图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
在本申请实施例使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请实施例。在本申请实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本申请实施例可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请实施例范围的情况下,协商信息也可以被称为第二信息,类似地,第二信息也可以被称为协商信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
集群存储指由若干通用存储设备(亦称为存储节点)组成的存储集群,提供比单个存储设备更强的存储性能、可靠性以及利用率。
集群存储包括前端网络、存储节点以及后端网络。服务器通过前端网络访问集群中的存储节点,实现数据的存储或读取。各存储节点之间通过后端网络进行信息交互,实现管理、数据同步以及远程访问。
其中,后端网络可以为以太网或光纤网络。各存储节点之间进行信息交互的命令可通过以太网或光纤网络承载。
所涉及命令主要包括管理命令、读命令以及写命令。其中,管理命令用于实现对设备的管理,比如,查询或设置设备的运行状态等;读命令用于从指定逻辑单元(英文:Logical Unit Number,缩写:LUN)读取数据;写命令用于向指定LUN写入数据。
参见图1A,为现有管理命令的结构示意图。该管理命令包括命令字、LUN标识、数据长度以及数据。其中,命令字用于标识不同的管理命令;LUN标识用于标识管理命令所针对的LUN;数据长度为管理命令所带数据的长度;数据为管理命令所带具体数据。
参见图1B,为现有读命令的结构示意图。该读命令包括命令字、LUN标识、逻辑块地址(英文:Logical Block Address,缩写:LBA)以及数据长度。其中,命令字用于标识读命令;LUN标识用于标识所要读取的LUN;LBA为从LUN中读取的起始地址;数据长度为读取数据的长度。
参见图1C,为现有写命令的结构示意图。该写命令包括命令字、LUN标识、LBA、数据长度以及数据。其中,命令字用于标识写命令;LUN标识用于标识所要写入的LUN;LBA为在LUN中写入的起始地址;数据长度为写入数据的长度;数据为具体写入的数据。
在后端网络中,通常采用并发方式发送以及处理各命令。但由于受到后端网络带宽的限制,往往无法充分发挥存储设备的处理性能。
针对上述问题,本申请实施例提供一种命令处理方法。该方法中,发送端将原本并发发送的多个命令集成在一个命令中发送给接收端,可降低对网络带宽的消耗,使在有限带宽内可以传输更多的命令;而接收端通过一个命令拆分出多个命令进行处理,可充分发挥存储节点的处理性能。因此,本申请可有效降低网络带宽对存储节点处理性能的影响。
为了使本申请实施例的目的、技术方案和优点更加清楚,下面结合附图和具体实施例对本申请实施例执行详细描述:
参见图2,为本申请实施例提供的命令处理方法的流程图。该流程应用于集群存储包括的第一存储节点。
这里,第一存储节点可为集群存储中的任一存储节点。之所以称为第一存储节点,只是为便于区分而进行的命名,并非用于限定。
如图2所示,该流程可包括以下步骤:
步骤201,接收第二存储节点发送的组合命令。
这里,第二存储节点指向第一存储节点发送组合命令的存储节点。可以理解的是,之所以称为第二存储节点,只是为便于区分而进行的命名,并非用于限定。
本申请实施例中,第二存储节点将原本需要并发发送的多个命令集成到一个命令中。这里,将集成之后的命令称为组合命令,集成之前的命令称为该组合命令的子命令。该组合命令可包括至少两个子命令的命令信息。
本申请通过集成化处理,将多个子命令集成在一个命令(组合命令)中发送,从而降低对后端网络带宽的消耗,使在有限带宽下可以传输更多的命令(子命令)。
步骤202,根据预设拆分规则以及该组合命令包括的至少两个子命令的命令信息,将该组合命令拆分成至少两个子命令。
具体拆分过程在下文中介绍,这里暂不赘述。
通过本步骤,第一存储节点可还原第二存储节点集成之前的各子命令。
步骤203,分别处理各子命令。
由于第一存储节点可一次得到多个待处理的子命令,因此,可充分发挥其处理性能,提高命令的处理效率。
步骤204,在确定各子命令处理完成后,向第二存储节点返回组合命令的处理结果。
至此,完成图2所示流程。
通过图2所示流程可以看出,本申请实施例中,发送端将原本并发发送的多个命令集成在一个命令中发送给接收端,可降低对网络带宽的消耗,使在有限带宽内可以传输更多的命令;而接收端通过一个命令拆分出多个命令进行处理,可充分发挥存储节点的处理性能。因此,本申请可有效降低网络带宽对存储节点处理性能的影响。
下面对步骤202中将组合命令拆分成至少两个子命令的过程进行描述。参见图3,为本申请实施例示出的一种步骤202的实现流程。
如图3所示,该流程可包括以下步骤:
步骤301,根据组合命令字,确定各子命令的命令类型以及各子命令的命令信息在组合命令中的排列顺序。
参见图4,为本申请实施例示出的一种组合命令的结构示意图。该组合命令包括组合命令字、LUN标识、组合标识以及各子命令的命令信息(比如,写子命令1的命令信息包括LBA1、数据长度1、数据1;写子命令2的命令信息包括LBA2、数据长度2、数据2)。其中,组合命令字用于标识该组合命令依次包含的各子命令;LUN标识用于标识该组合命令所要操作的LUN;组合标识用于唯一标识该组合命令。
作为一种实施方式,组合命令字可采用现有命令的命令字组合得到。比如,一个组合命令包括读命令和写命令,则该组合命令的组合命令字可以为读命令的命令字与写命令的命令字的组合。相应的,该组合命令包括的子命令的命令信息依次为读命令的命令信息(LBA、数据长度)以及写命令的命令信息(LBA、数据长度、数据)。即,各子命令的命令信息的排列顺序与各子命令的命令字的组合顺序相同。
第一存储节点可根据组合命令字中包含的各子命令的命令字,确定各子命令的命令类型以及各子命令的命令信息在组合命令中的排列顺序。比如,组合命令字中各子命令的命令字依次为读命令的命令字、写命令的命令字、读命令的命令字,则各子命令的命令类型依次为读命令、写命令、读命令;各子命令的命令信息在组合命令中的排列顺序为读命令的命令信息、写命令的命令信息、读命令的命令信息。
步骤302,根据各子命令的命令类型以及排列顺序,从组合命令中,获取各子命令的命令信息。
不同类型命令所包含信息结构不同,比如,管理命令包括管理数据长度以及管理数据;读命令包括读取数据的LBA、读取数据的长度;写命令包括写入数据的LBA、写入数据的长度以及写入的数据。
本步骤中,第一存储节点根据各子命令的信息结构以及通过步骤301确定的各子命令的排列顺序,从组合命令中获取各子命令的命令信息。
步骤303,根据各子命令的命令信息,生成各子命令。
即,还原组合命令所包含的各子命令。
参见图5A-图5C,分别为本申请实施例示出的从组合命令中拆分出的管理命令、读命令、写命令的结构示意图。其中,命令字为子命令的命令字;LUN标识为组合命令中的LUN标识;组合标识为子命令所属组合命令的组合标识。可以看出,相比于图1A-图1C,各子命令增加了组合标识,以标识各子命令所属组合命令。
至此,完成图3所示流程。
通过图3所示流程,第一存储节点实现从组合命令中拆分出各子命令。
下面对步骤204中确定各子命令处理完成的过程进行描述。参见图6,为本申请实施例示出的确定各子命令处理完成的实现流程。
如图6所示,该流程可包括以下步骤:
步骤601,在确定至少两个子命令中的第一子命令处理完成后,根据第一子命令包括的LUN标识,从本地记录的各LUN的命令链表中,查找与第一子命令包括的LUN标识对应的第一命令链表。
这里,第一子命令为当前处理完成的子命令。之所以称为第一子命令,只是为便于区分而进行的命名,并非用于限定。
本申请实施例中,第一存储节点维护有各LUN对应的命令链表,命令链表用于记录已处理完成的子命令。参见图7,为本申请实施例示出的各LUN对应的命令链表的示意图。以LUN2对应命令链表为例,该命令链表记录了针对LUN2已经处理完成的读命令1、管理命令1等,其中,括号内的字符表示子命令所属组合命令的组合标识。
第一存储节点获取第一子命令包括的LUN标识,根据该LUN标识从本地维护的各命令链表中查找与该LUN标识对应的命令链表,记为第一命令链表。可以理解的是,之所以称为第一命令链表只是为便于区分而进行的命名,并非用于限定。
步骤602,根据第一子命令包括的组合标识,从第一命令链表中,查找组合标识与第一子命令包括的组合标识相同的第二子命令。
即,从第一命令链表中,查找与第一子命令属于同一组合命令的已经处理完成的子命令,记为第二子命令。可以理解的是,之所以称为第二子命令,只是为便于区分而进行的命名,并非用于限定。
比如,当前处理完成的子命令为写命令1,该写命令1包括的LUN标识为LUN2、组合标识为C3。首先,通过步骤601从图7所示命令链表中找到LUN2对应的命令链表;然后,从LUN2对应的命令链表中,查找到组合标识为C3的子命令,比如,读命令1和管理命令1。
步骤603,统计第一子命令与查找到的第二子命令的总数量。
即,统计同一组合命令中目前已经处理完成的子命令的数量。
步骤604,当统计的子命令的总数量达到组合命令中子命令的总数量时,确定各子命令处理完成。
即,已经处理完成的子命令的总数量达到组合命令中子命令的总数量,说明该组合命令中的各子命令均已处理完成,该组合命令处理完成。
步骤605,当统计的子命令的总数量未达到组合命令中子命令的总数量时,将第一子命令添加到第一命令链表中。
即,已经处理完成的子命令的总数量未达到组合命令中子命令的总数量,说明该组合命令中还存在未处理完成的子命令,则将第一子命令添加到第一命令链表中,结束此次处理。
至此,完成图6所示流程。
通过图6所示流程,第一存储节点可准确判断同一组合命令中的各子命令是否均已处理完成,即组合命令是否处理完成。
作为一个实施例,第一存储节点还可执行图8所示定时处理流程。
如图8所示,该流程可包括以下步骤:
步骤801,在接收到组合命令时,设置并启动该组合命令对应的定时器。
本申请实施例中,属于同一组合命令的各子命令可能由于异常因素导致部分子命令无法正常处理,若一直等待,则会导致发送端(第二存储节点)因接收不到接收端(第一存储节点)的反馈而出现异常。
为此,本申请实施例针对组合命令设置对应的定时器。
步骤802,在定时器超时时,向第二存储节点返回该组合命令的处理结果。
即,在定时器超时时,不再等待未处理的各子命令的处理结果,而将已处理的各子命令的处理结果作为所属组合命令的处理结果,反馈给第二存储节点,以避免第二存储节点因长时间等待而出现异常。
至此,完成图8所示流程。
通过图8所示流程可保证发送端及时接收到反馈,避免出现异常。
此外,第一存储节点还可作为发送端向其它存储节点(第二存储节点)发送组合命令。在发送之前,第一存储节点将待发送的多个子命令的命令信息集成在一个组合命令中,并为该组合命令分配组合标识,添加到组合命令中,将该组合命令发送至第二存储节点。第二存储节点从该组合命令解析出各子命令进行处理,具体参见前述第一存储节点作为接收端的处理过程,在此不再赘述。
现以一具体实施例介绍本申请的命令处理过程。
以存储节点1向存储节点2发送组合命令为例,该组合命令如图9A所示。其中,该组合命令的组合命令字为读命令字与写命令字的组合;LUN1为待操作LUN的标识;C10为存储节点1为该组合命令分配的组合标识;LBA1和数据长度1为读命令的命令信息;LBA2、数据长度2以及数据为写命令的命令信息。即,该组合命令集成有一个读命令的命令信息和一个写命令的命令信息。
存储节点2接收到存储节点1发送的组合命令后,获取该组合命令的组合命令字,根据该组合命令字(读命令字+写命令字),可知该组合命令依次包括读命令的命令信息和写命令的命令信息。
存储节点2根据上述确定的各子命令(读命令和写命令)的顺序以及结构特点(读命令包括LBA和数据长度,写命令包括LBA、数据长度以及数据),从图9A所示组合命令中,拆分出读命令和写命令。
这里,将拆分出的读命令,记为读命令11,如图9B所示;将拆分出的写命令,记为写命令12,如图9C所示。
存储节点2分别处理读命令11和写命令12。
当确定读命令11处理完成时,存储节点2根据读命令11包括的LUN1,从图7所示命令链表中,查找LUN1对应的命令链表,记为链表1。存储节点2根据读命令11包括的组合标识C10,从链表1中查找组合标识为C10的子命令。当前,链表1中不存在组合标识为C10的子命令,也就是说,该读命令11为存储节点2完成的该组合命令中的第1个子命令,当前已完成子命令数量为1,未达到该组合命令中子命令的总数量(2),因此,存储节点2将该读命令11添加到链表1中,如图10所示。
当确定写命令12处理完成时,存储节点2根据写命令12包括的LUN1,从图10所示命令链表中,查找LUN1对应的链表1。存储节点2根据写命令12包括的组合标识C10,从链表1中查找组合标识为C10的子命令(读命令11)。存储节点2统计当前已处理完成的该组合命令中的子命令的数量为2(读命令11加上写命令12的数量),已达到该组合命令中子命令的总数量(2),则存储节点2将读命令11和写命令12的处理结果返回给存储节点1。
至此,完成本具体实施例的描述。
以上对本申请实施例提供的方法进行了描述,下面对本申请实施例提供的装置进行描述:
参见图11,为本申请实施例提供的装置的结构示意图。该装置应用于集群存储中的存储节点,该装置包括:接收单元1101、拆分单元1102、处理单元1103以及返回单元1104,其中:
接收单元1101,用于接收所述第二存储节点发送的组合命令,所述组合命令包括至少两个子命令的命令信息;
拆分单元1102,用于根据预设拆分规则以及所述组合命令包括的至少两个子命令的命令信息,将所述组合命令拆分成所述至少两个子命令;
处理单元1103,用于分别处理各子命令;
返回单元1104,用于在确定所述各子命令处理完成后,向所述第二存储节点返回所述组合命令的处理结果。
作为一个实施例,所述组合命令包括组合命令字,所述拆分单元1102根据预设拆分规则以及所述组合命令包括的至少两个子命令的命令信息,将所述组合命令拆分成所述至少两个子命令,包括:
根据所述组合命令字,确定各子命令的命令类型以及各子命令的命令信息在所述组合命令中的排列顺序;
根据所述各子命令的命令类型以及排列顺序,从所述组合命令中,获取各子命令的命令信息;
根据所述各子命令的命令信息,生成所述各子命令。
作为一个实施例,所述组合命令还包括待处理LUN的LUN标识以及所述组合命令的组合标识,所述子命令包括所属组合命令的LUN标识以及组合标识,所述返回单元1104确定所述各子命令处理完成,包括:
在确定所述至少两个子命令中的第一子命令处理完成后,根据所述第一子命令包括的LUN标识,从本地记录的各LUN的命令链表中,查找与所述第一子命令包括的LUN标识对应的第一命令链表,所述命令链表用于记录已处理完成的子命令;
根据所述第一子命令包括的组合标识,从所述第一命令链表中,查找组合标识与所述第一子命令包括的组合标识相同的第二子命令;
统计所述第一子命令与查找到的第二子命令的总数量;
当统计的子命令的总数量达到所述至少两个子命令的子命令数量时,确定所述各子命令处理完成。
作为一个实施例,所述装置还包括:
添加单元,用于当统计的子命令的总数量未达到所述至少两个子命令的子命令数量时,将所述第一子命令添加到所述第一命令链表中。
作为一个实施例,所述装置还包括:
定时单元,用于在接收到所述组合命令时,设置并启动所述组合命令对应的定时器;
所述返回单元1104,还用于在所述定时器超时时,向所述第二存储节点返回所述组合命令的处理结果。
由以上描述可以看出,本申请中,发送端将原本并发发送的多个命令集成在一个命令中发送给接收端,可降低对网络带宽的消耗,使在有限带宽内可以传输更多的命令;而接收端通过一个命令拆分出多个命令进行处理,可充分发挥存储节点的处理性能。因此,本申请可有效降低网络带宽对存储节点处理性能的影响。
以上所述仅为本申请实施例的较佳实施例而已,并不用以限制本申请,凡在本申请实施例的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。
Claims (8)
1.一种命令处理方法,其特征在于,应用于集群存储包括的第一存储节点,所述集群存储还包括第二存储节点,所述方法包括:
接收所述第二存储节点发送的组合命令,所述组合命令包括至少两个子命令的命令信息,所述组合命令包括组合命令字;
根据所述组合命令字,确定各子命令的命令类型以及各子命令的命令信息在所述组合命令中的排列顺序;
根据所述各子命令的命令类型以及排列顺序,从所述组合命令中,获取各子命令的命令信息;
根据所述各子命令的命令信息,生成所述各子命令;
分别处理各子命令;
在确定所述各子命令处理完成后,向所述第二存储节点返回所述组合命令的处理结果。
2.如权利要求1所述的方法,其特征在于,所述组合命令还包括待处理LUN的LUN标识以及所述组合命令的组合标识,所述子命令包括所属组合命令的LUN标识以及组合标识,所述确定所述各子命令处理完成,包括:
在确定所述至少两个子命令中的第一子命令处理完成后,根据所述第一子命令包括的LUN标识,从本地记录的各LUN的命令链表中,查找与所述第一子命令包括的LUN标识对应的第一命令链表,所述命令链表用于记录已处理完成的子命令;
根据所述第一子命令包括的组合标识,从所述第一命令链表中,查找组合标识与所述第一子命令包括的组合标识相同的第二子命令;
统计所述第一子命令与查找到的第二子命令的总数量;
当统计的子命令的总数量达到所述至少两个子命令的子命令数量时,确定所述各子命令处理完成。
3.如权利要求2所述的方法,其特征在于,所述方法还包括:
当统计的子命令的总数量未达到所述至少两个子命令的子命令数量时,将所述第一子命令添加到所述第一命令链表中。
4.如权利要求1所述的方法,其特征在于,所述方法还包括:
在接收到所述组合命令时,设置并启动所述组合命令对应的定时器;
在所述定时器超时时,向所述第二存储节点返回所述组合命令的处理结果。
5.一种命令处理装置,其特征在于,应用于集群存储包括的第一存储节点,所述集群存储还包括第二存储节点,所述装置包括:
接收单元,用于接收所述第二存储节点发送的组合命令,所述组合命令包括至少两个子命令的命令信息,所述组合命令包括组合命令字;
拆分单元,用于根据所述组合命令字,确定各子命令的命令类型以及各子命令的命令信息在所述组合命令中的排列顺序;
根据所述各子命令的命令类型以及排列顺序,从所述组合命令中,获取各子命令的命令信息;
根据所述各子命令的命令信息,生成所述各子命令;
处理单元,用于分别处理各子命令;
返回单元,用于在确定所述各子命令处理完成后,向所述第二存储节点返回所述组合命令的处理结果。
6.如权利要求5所述的装置,其特征在于,所述组合命令还包括待处理LUN的LUN标识以及所述组合命令的组合标识,所述子命令包括所属组合命令的LUN标识以及组合标识,所述返回单元确定所述各子命令处理完成,包括:
在确定所述至少两个子命令中的第一子命令处理完成后,根据所述第一子命令包括的LUN标识,从本地记录的各LUN的命令链表中,查找与所述第一子命令包括的LUN标识对应的第一命令链表,所述命令链表用于记录已处理完成的子命令;
根据所述第一子命令包括的组合标识,从所述第一命令链表中,查找组合标识与所述第一子命令包括的组合标识相同的第二子命令;
统计所述第一子命令与查找到的第二子命令的总数量;
当统计的子命令的总数量达到所述至少两个子命令的子命令数量时,确定所述各子命令处理完成。
7.如权利要求6所述的装置,其特征在于,所述装置还包括:
添加单元,用于当统计的子命令的总数量未达到所述至少两个子命令的子命令数量时,将所述第一子命令添加到所述第一命令链表中。
8.如权利要求5所述的装置,其特征在于,所述装置还包括:
定时单元,用于在接收到所述组合命令时,设置并启动所述组合命令对应的定时器;
所述返回单元,还用于在所述定时器超时时,向所述第二存储节点返回所述组合命令的处理结果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010321658.8A CN111522510B (zh) | 2020-04-22 | 2020-04-22 | 命令处理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010321658.8A CN111522510B (zh) | 2020-04-22 | 2020-04-22 | 命令处理方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111522510A CN111522510A (zh) | 2020-08-11 |
CN111522510B true CN111522510B (zh) | 2022-08-09 |
Family
ID=71904423
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010321658.8A Active CN111522510B (zh) | 2020-04-22 | 2020-04-22 | 命令处理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111522510B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114020348A (zh) * | 2021-10-11 | 2022-02-08 | 中科创达软件科技(深圳)有限公司 | 一种命令的处理方法和装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5870625A (en) * | 1995-12-11 | 1999-02-09 | Industrial Technology Research Institute | Non-blocking memory write/read mechanism by combining two pending commands write and read in buffer and executing the combined command in advance of other pending command |
CN108628760A (zh) * | 2017-03-16 | 2018-10-09 | 北京忆恒创源科技有限公司 | 原子写命令的方法与装置 |
CN109101185A (zh) * | 2017-06-20 | 2018-12-28 | 北京忆恒创源科技有限公司 | 固态存储设备及其写命令和读命令处理方法 |
CN110554833A (zh) * | 2018-05-31 | 2019-12-10 | 北京忆芯科技有限公司 | 存储设备中并行处理io命令 |
US10592123B1 (en) * | 2017-07-13 | 2020-03-17 | EMC IP Holding Company LLC | Policy driven IO scheduler to improve write IO performance in hybrid storage systems |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8984182B2 (en) * | 2011-10-06 | 2015-03-17 | Marvell International Ltd. | SCSI I/O command aggregation |
-
2020
- 2020-04-22 CN CN202010321658.8A patent/CN111522510B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5870625A (en) * | 1995-12-11 | 1999-02-09 | Industrial Technology Research Institute | Non-blocking memory write/read mechanism by combining two pending commands write and read in buffer and executing the combined command in advance of other pending command |
CN108628760A (zh) * | 2017-03-16 | 2018-10-09 | 北京忆恒创源科技有限公司 | 原子写命令的方法与装置 |
CN109101185A (zh) * | 2017-06-20 | 2018-12-28 | 北京忆恒创源科技有限公司 | 固态存储设备及其写命令和读命令处理方法 |
US10592123B1 (en) * | 2017-07-13 | 2020-03-17 | EMC IP Holding Company LLC | Policy driven IO scheduler to improve write IO performance in hybrid storage systems |
CN110554833A (zh) * | 2018-05-31 | 2019-12-10 | 北京忆芯科技有限公司 | 存储设备中并行处理io命令 |
Also Published As
Publication number | Publication date |
---|---|
CN111522510A (zh) | 2020-08-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11687488B2 (en) | Directory deletion method and apparatus, and storage server | |
US10831612B2 (en) | Primary node-standby node data transmission method, control node, and database system | |
CN110413650B (zh) | 一种业务数据的处理方法、装置、设备和存储介质 | |
EP2921974A1 (en) | Data restoration method and system | |
CN108228322B (zh) | 一种分布式链路跟踪、分析方法及服务器、全局调度器 | |
CN102306115A (zh) | 异步远程复制方法、系统及设备 | |
US20040162810A1 (en) | Database table modeling and event handling method for real time alarm management | |
US20180260463A1 (en) | Computer system and method of assigning processing | |
CN112039970A (zh) | 一种分布式业务锁服务方法、服务端、系统及存储介质 | |
US20060112083A1 (en) | Object relation information management program, method, and apparatus | |
CN111522510B (zh) | 命令处理方法及装置 | |
CN108228432A (zh) | 一种分布式链路跟踪、分析方法及服务器、全局调度器 | |
CN112003915A (zh) | 一种文件的访问方法、装置、设备及可读介质 | |
CN102724301B (zh) | 云数据库系统以及云数据读写处理方法、设备 | |
CN101778131A (zh) | 数据同步系统 | |
CN101789963A (zh) | 数据同步系统 | |
CN111522511B (zh) | 命令处理方法及装置 | |
JP2010152435A (ja) | 情報処理装置及び情報処理方法及びプログラム | |
CN115687519A (zh) | 一种分布式数据库系统及其成员变更的同步方法、装置 | |
CN109992447A (zh) | 数据复制方法、装置及存储介质 | |
CN116132698A (zh) | 内容录制方法、播放方法、cdn系统、存储介质 | |
JP5379800B2 (ja) | インスタントメッセージシステム内においてユーザ情報を管理するための方法およびシステム | |
CN110166542A (zh) | 基于tcp/ip协议的分布式存储系统及数据读写方法 | |
CN118474175A (zh) | 一种在线离线消息推送方法及装置 | |
CN113132233B (zh) | 数据处理方法、软件定义网络控制器和数据处理系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |