一种存储系统中IO处理方法、装置及终端与流程

文档序号:17089198发布日期:2019-03-13 23:14阅读:194来源:国知局
一种存储系统中IO处理方法、装置及终端与流程

本发明涉及服务器技术领域,特别涉及一种存储系统中io处理方法、装置、终端及计算机可读存储介质。



背景技术:

随着大数据时代的到来,对存储设备的高负载、低时延的要求越来越高,这就要求存储设备的具备足够高的iops(input/outputoperationspersecond,每秒进行读写(i/o)操作的次数),从而支撑日益膨胀的海量数据业务。目前,对于某些特定场景(如io重叠场景),对于相同grain内的io,为防止出现读写不一致的问题,一般都是通过排队的方式进行io处理,但是排队的方式严重降低了存储设备的性能,无法发挥并发的优势,导致降低了存储设备整体的iops。



技术实现要素:

本发明的目的是提供一种存储系统中io处理方法、装置、终端及计算机可读存储介质,能够减少对后端盘的读写次数,降低io处理的延时,整体提升存储设备的iops。

为解决上述技术问题,本发明提供一种存储系统中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处理的延时,整体提升存储设备的iops。本发明还提供了一种存储系统中io处理装置、终端及计算机可读存储介质,具有上述有益效果,在此不再赘述。

附图说明

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

图1为本发明实施例所提供的存储系统中io处理方法的流程图;

图2为本发明实施例所提供的存储系统中io处理装置的结构框图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

目前,在io重叠的场景下(例如主机下刷的io为相邻小io时,io重叠就会变的非常频繁),对于相同grain内(可以理解为一个命中的内存块)的io,为防止出现读写不一致的问题,相关技术都是通过排队的方式进行io处理(也就是通过链表排队的方式处理),但是排队的方式严重降低了存储设备的性能(例如需要重复对后端盘进行读写,以及排队造成的时延),无法发挥并发的优势,导致降低了存储设备整体的iops。本实施例通过合并数据的方式克服上述问题。具体请参考图1,图1为本发明实施例所提供的存储系统中io处理方法的流程图;该方法可以包括:

s101:将链表中重叠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可以继续按照本实施例的过程执行,形成新的第二节点后,继续执行后续步骤即可。

s102:对合并数据执行下刷操作。

可以理解的是,在对第二节点执行下刷操作时就完成了对合并数据执行下刷操作。即本实施例中将超过一个的重叠io合并后下刷,减少了相同grain内的io执行下刷操作的次数。也就是通过一次下刷,批量返回,减少了对后端盘的读写次数,降低io时延,提升存储设备整体的iops。本实施例中合并数据的下刷操作的具体过程,可以参考目前相关技术中对一个io数据执行下刷操作的具体过程。

s103:当合并数据下刷完成后,调用对应的响应函数以完成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处理的延时,整体提升存储设备的iops。

下面对本发明实施例提供的存储系统中io处理装置、终端及计算机可读存储介质进行介绍,下文描述的存储系统中io处理装置、终端及计算机可读存储介质与上文描述的存储系统中io处理方法可相互对应参照。

请参考图2,图2为本发明实施例所提供的存储系统中io处理装置的结构框图;该装置可以包括:

合并模块100,用于将链表中重叠io的数据进行合并,形成合并数据;

下刷模块200,用于对合并数据执行下刷操作;

响应模块300,用于当合并数据下刷完成后,调用对应的响应函数以完成io处理。

基于上述实施例,合并模块100可以包括:

获取单元,用于获取链表中第一节点的数据;其中,第一节点为正在下刷数据的节点;

合并单元,用于将链表中重叠io的数据与第一节点的数据进行合并,形成合并数据;

放置单元,用于将合并数据放置在第二节点;其中,第二节点为第一节点的下一个节点。

基于上述实施例,合并单元具体为在预设时间内将链表中重叠io的数据与第一节点的数据进行合并,形成合并数据的单元。

基于上述任意实施例,本实施例还可以包括:

合并状态标识添加模块,用于在合并数据中添加合并状态标识。

需要说明的是,基于上述任意实施例,装置可以是基于可编程逻辑器件实现的,可编程逻辑器件包括fpga,cpld,单片机,处理器等。该可编程逻辑器件可以集成在终端,例如存储设备中。

本发明实施例还提供一种终端,包括:存储器,用于存储计算机程序;处理器,用于执行计算机程序时实现上述任意实施例的存储系统中io处理方法的步骤。如处理器用于执行计算机程序时实现将链表中重叠io的数据进行合并,形成合并数据;对合并数据执行下刷操作;当合并数据下刷完成后,调用对应的响应函数以完成io处理。

具体的,本实施例中并不对终端的具体形式进行限定。例如可以是存储设备。

本发明实施例还提供一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现上述任意实施例的存储系统中io处理方法的步骤。如计算机程序被处理器执行时实现将链表中重叠io的数据进行合并,形成合并数据;对合并数据执行下刷操作;当合并数据下刷完成后,调用对应的响应函数以完成io处理。

该计算机可读存储介质可以包括:u盘、移动硬盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。

说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置、终端及计算机可读存储介质而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。

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

以上对本发明所提供的一种存储系统中io处理方法、装置、终端及计算机可读存储介质进行了详细介绍。本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。

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